Функция ICustom - страница 20

 
Jeeves:
Не могла бы какая-нибудь добрая душа избавить меня от страданий и переделать то, что написано ниже, чтобы разрешить использование индикатора 'Advanced_ADX'. Я знаю, что для этого нужно использовать функцию 'icustom', но я не знаю, как это сделать.

//данные h1

double h1adm = iadm(NULL,PERIOD_H1,2,MODE_CLOSE);

//h4 данные

double h4adx = iadx(NULL,PERIOD_H4,2,MODE_CLOSE);

//d1 данные

double d1adx = iadx(NULL,PERIOD_D1,2,MODE_CLOSE);

//определить цвет

color color_h1, color_h4, color_d1;

//определить строку

string arrow_h1, arrow_h4, arrow_d1;

//h1 восходящий тренд

if (h1adx < Bid ) { color_h1 = ColorUpGood; }

//h1 нисходящий тренд

if (h1adx > Bid ) { color_h1 = ColorDownGood; }

//h4 восходящий тренд

if (h4adx < Bid ) { color_h4 = ColorUpGood; }

//h4 нисходящий тренд

if (h4adx > Bid ) { color_h4 = ColorDownGood; }

//d1 восходящий тренд

если (d1adx < Bid ) { color_d1 = ColorUpGood; }

//d1 нисходящий тренд

if (d1adx > Bid ) { color_d1 = ColorDownGood; }

используйте что-то вроде этого :

double h1adp=iADX(NULL,PERIOD_H1,ADXPeriod,PRICE_CLOSE,MODE_PLUSDI, 0);

double h1adm=iADX(NULL,PERIOD_H1,ADXPeriod,PRICE_CLOSE,MODE_MINUSDI,0);

if (h1adp > h1adm ) { color_h1 = ColorUpGood; }

if (h1adp < h1adm ) { color_h1 = ColorDownGood; }

и проделайте это для всех таймфреймов, которые вы хотите протестировать (возможно, вы захотите заменить 0 в конце на какое-то другое число - 0 => текущий бар, 1 => первый закрытый бар и так далее).

 

Проблемы программирования 2 вопроса pls Помогите (лог файлы)(Пользовательский индикатор/стандартный инд

Привет, я надеюсь, что я могу найти кого-то, кто может помочь мне решить эту проблему, я буду очень благодарен.

  • Исходная ситуация:
  • Мы разработали многоканальный фильтр-индикатор на основе расчетов различных стандартных индикаторов из Metatrader.

    Этот индикатор был задуман для использования в нашем советнике. Задача состоит в том,

    что на каждом тике все расчеты, основанные на этих стандартных индикаторах, вызывают бесчисленное количество записей в журнале.

    Из-за этого наши сделки задерживаются.

    Можно ли избежать этих записей в журнал?

  • Наша попытка решить проблему:

Мы запрограммировали пользовательские индикаторы так же, как и стандартные. Мы попытались изменить стандартный расчет курса, используемый различными индикаторами. Но это не привело к желаемому результату.

При использовании стандартного расчета курса стандартный индикатор дает тот же результат, что и пользовательский. Но изменение расчета курса

приводит к различиям в отношении пользовательского индикатора и соответствующего стандартного индикатора?

Можно ли получить пользовательские индикаторы, которые ведут себя точно так же, как стандартные индикаторы (независимо от того, какой расчет курса выбран)?

 
spongebozz:
Привет, я надеюсь, что смогу найти кого-нибудь, кто поможет мне решить эту проблему, я буду очень благодарен.
  • Исходная ситуация:
  • Мы разработали многоканальный фильтр-индикатор, основанный на различных стандартных расчетах индикаторов из Metatrader.

    Этот индикатор был задуман для использования в нашем советнике. Проблема заключается в том,

    что на каждом тике все расчеты, основанные на этих стандартных индикаторах, вызывают бесчисленное количество записей в журнале.

    Из-за этого наши сделки задерживаются.

    Можно ли избежать этих записей в журнал?

  • Наша попытка решить проблему:

Мы запрограммировали пользовательские индикаторы так же, как и стандартные. Мы попытались изменить стандартный расчет курса, используемый различными индикаторами. Но это не привело к желаемому результату.

При использовании стандартного расчета курса стандартный индикатор дает тот же результат, что и пользовательский. Но изменение расчета курса

приводит к различиям в отношении пользовательского индикатора и соответствующего стандартного индикатора?

Можно ли получить пользовательские индикаторы, которые ведут себя точно так же, как стандартные индикаторы (независимо от того, какой расчет курса выбран)?

Здравствуйте, Spongebozz,

Это относится к первой части вашего вопроса... относительно слишком больших логов и замедления работы системы...

Журналы, скорее всего, создаются из-за операторов PRINT... их слишком много... либо в вашем советнике, либо в ваших индикаторах...

Вы можете удалить или убрать операторы PRINT, поставив 2 правые (//) косые черты перед каждым оператором PRINT, который вы хотите остановить печать в журнал.

Пример:

// Print("This is an example"); Косая черта // удалит строку кода и не будет печатать в журнал...

Если вы хотите, чтобы... ВСЕ... утверждения PRINT были удалены... вы можете выполнить поиск/замену...

Найти: Print

Заменить: // Печать

Тип индикатора стандартный или пользовательский... не должен иметь значения...

Он имеет значение только в том случае, если в нем есть много утверждений PRINT, которые нужно удалить или заглушить...

Позже вы всегда сможете вернуться и удалить нужные вам утверждения PRINT... а остальные оставить пустыми или полностью удалить.

Надеюсь, это вам поможет,

Роберт

 

Привет, ребята!

Я делаю советник для бинарных опционов и хочу получать "сигналы" от индикатора, которые будут поступать в мой советник. Как вы, вероятно, знаете, бинарные опционы делают только PUT или CALL, поэтому я хочу, чтобы iCustom просто слушал мой индикатор и делал путы и коллы в моем советнике. Логично?

Итак, что мне нужно сделать?

В инди мне просто нужно написать что-то вроде этого:

// PUT

if (AlignsForAput == true){

PutBuffer[] = 1;

}

// CALL

if (AlignsForAcall == true){

CallBuffer[] = 1;

}

PutBuffer[] = 0;

CallBuffer[] = 0;

Пожалуйста, помогите мне написать хороший пример, как заставить это работать. Что мне нужно написать и ГДЕ мне это написать?

Спасибо!

 

Буду очень признателен, если кто-нибудь напишет простой пример того, как должен выглядеть код инди и код советника! Пожалуйста, смотрите выше мой вопрос.

 
SantaClaus:
Я буду очень признателен, если кто-нибудь напишет простой пример того, как должен выглядеть код инди и код советника! Пожалуйста, смотрите выше мой вопрос.

Для индикаторов смотрите здесь: https: //www.mql5.com/en/forum/173032 и здесь: https: //www.mql5.com/en/forum/173054

Для советников проверьте это: https: //www.mql5.com/en/forum/173136 и это: https: //www.mql5.com/en/forum/173171

 

То есть вы хотите сказать, что есть хорошие примеры, как использовать iCustom для вышеуказанной цели?

 
SantaClaus:
То есть вы хотите сказать, что там есть хорошие примеры, как использовать iCustom для вышеуказанной цели?

Да, именно об этом я и говорю (вы просили "простой пример того, как должен выглядеть код инди и код советника" - эти темы могут вам помочь).

 
mladen:
Да, именно это я и говорю (вы просили "простой пример того, как должен выглядеть код инди и код советника" - эти темы могут вам помочь).

Нет, ни одна из ссылок не объясняет, как я использую iCustom, как я хотел бы в своем первом вопросе.

 
SantaClaus:
Нет, ни одна из ссылок не объяснила, как мне использовать iCustom, как я хотел бы в своем первом вопросе.

Вы пишете в теме, которая подробно объясняет, как использовать iCostom() (все, что вам нужно сделать, это перейти на первую страницу этой темы), и не можете найти, как это сделать?

Вот краткая версия :

_________________________

iCustom

Вычисляет указанный пользовательский индикатор и возвращает его значение.

[TABLE] double iCustom(

string symbol, // символ

int timeframe, // таймфрейм

string name, // путь/имя скомпилированной программы пользовательского индикатора

... // входные параметры пользовательского индикатора (если необходимо)

int mode, // индекс строки

int shift// сдвиг

);[/TD]

[/TR]

[/TABLE]

Параметры

символ

Имя символа, по данным которого будет рассчитываться индикатор. NULL означает текущий символ.

таймфрейм

Таймфрейм. Это может быть любое из значений перечисления ENUM_TIMEFRAMES. 0 означает текущий таймфрейм графика.

name

Имя скомпилированной программы пользовательского индикатора, относительно корневого каталога индикаторов (MQL4/Indicators/). Если индикатор находится в подкаталоге, например, в MQL4/Indicators/Examples, то его имя должно быть указано как"Examples\\\indicator_name" (в качестве разделителя вместо одинарной обратной косой черты "\\\"должна быть указана двойная обратная косая черта).

...

Входные параметры пользовательского индикатора, разделенные запятыми.

Передаваемые параметры и их порядок должны соответствовать порядку объявления и типу внешних переменных пользовательского индикатора. Если значения входных параметров не указаны, будут использованы значения по умолчанию.

режим

Индекс строки. Может быть от 0 до 7 и должен соответствовать индексу, указанному в вызове функции SetIndexBuffer().

shift

Индекс значения, взятого из буфера индикатора (сдвиг относительно текущего бара на заданное количество периодов назад).

Возвращаемое значение

Числовое значение указанного пользовательского индикатора. Пользовательский индикатор должен быть скомпилирован (файл *.EX4) и находиться в каталоге terminal_directory\MQL4\Indicators\.

Пример:

[TABLE]

[TR]

[TD] double val=iCustom(NULL,0,"SampleInd",13,1,0); [/TABLE]

_________________________

PS: параметр "Индекс линии. Может быть от 0 до 7" - это ошибка, которую metatrader все еще имеет в своей документации (должно быть "Line index. Может быть от 0 до 511"), но пока они официально не меняют свою документацию, я буду придерживаться их определения функции iCustom().

Удачного кодирования

Причина обращения: