Vladimirjurav
Активный участник
Продолжим. Для начала всё-таки разберем функцию iCustom. На примере строки из нашего тестового советника. Потому что в дальнейшем мы всегда будем пользоваться этой функцией, для подключения к сове внешнего индикатора, и должны четко понимать что в ней есть и что мы пишем.
double iTrend0 = iCustom(NULL, PERIOD_M15, "SuperTrend", 0, 1);
Первое слово в этой строке - это тип данных с которыми мы будем работать, это могут быть целые числа, числа с запятой, текстовые данные, значеная - Да или Нет (true или false).
"double" - означает что числа которые мы получим из индикатора могут быть не целые, т.е. число с запятой. Например 1,5 или 0,002, в общем всякие с запятой.
Еще типы данных с которыми мы встретимся в советнике:
int - только целые числа. Например: int MagicNumber = 33315;
bool - это когда потом пишется true или false (да или нет, разрешить или запретить).
Например: bool LongTrade = TRUE; //--- Выключатель длинных позиций
string - это текстовые данные, например название советника: string Name = " EA Angel";
Да.. с одним словом сколько провозились. Ну дальше проще.
iTrend - Это просто имя или название ними придуманное , того что мы получим.
0 - это номер буфера;
iCustom - функция говорит компьютеру, что мы сейчас будем считывать данные с внешнего индикатора.
NULL - говорит о том что мы будем считывать данные применительно к текущей паре. (на которой мы запускаем советник). Но можем конкретно указать пару, например EURUSD, или GPBUSD).
PERIOD_M15 - это тайм фрейм на котором индикатор будет работать, когда мы будем считывать данные. Т.е. открыв график на М5, данные все равно будут считываться с М15.
"SuperTrend" обязательно в кавычках. Наименование советника, нужно перенести очень точно как в терминале. А то бывает мы видим вроде бы название не латинице. А оказывается, хитрый прогер написал часть букв на кириллице. В результате мы не можем считать данные с индикатора.
0 - это номер буфера.
1 - это бар на котором снимаются данные ( внимание.. 1 означает что данные снимаются не с текущего бара, а с уже закрытого, с предыдущего. Это для того что бы избежать перерисовки. Если будет стоять 0, то будет сниматься с текущего бара, но эти данные постоянно меняются. т.к. бар не закрыт.)
Далее самое веселое здесь.. сейчас между наименованием индикатора и номером буфера ничего нет, не считая разделительной запятой.
Это означает что все настройки индикатора берутся те, что указаны в коде индикатора. Но мы ведь хотим менять настройки индикатора в советнике. Так вот, для этого, в это место надо прописать настройки индикатора, обязательно в том порядке и так как они записаны в индикаторе. Но опять же это можно сделать двумя способами.
1.Просто перенести данные из входных параметров индикатора и наша строка будет выглядеть вот так:
double iTrend0 = iCustom(NULL, PERIOD_M15, "SuperTrend", 10, 3.0, 0, 1
Да, тогда настройки индикатора мы сможем менять в советнике, но только в самом коде.
2.Чтобы мы увидели настройки нашего индикатора в настройках советника, нужно прописать название настроек. Тогда эта строка будет выглядеть вот так:
double iTrend0 = iCustom(NULL, PERIOD_M15, "SuperTrend", Nbr_Periods, Multiplier, 0, 1
А в настройки советника, это в самом верху в коде советника где прописываются его настройки, добавить, просто скопировав из кода индикатора:
extern int Nbr_Periods = 10;
extern double Multiplier = 3.0;
Дальше компилируем и видим в журнале кучу ошибок, если забыли скопировать какую ни будь точку с запятой ( ; ). Если не забыли, то все ОК! Ошибок нет.. Проверяем работу советника в тестере.
Вот так мы и будем прописывать наши Граальные индикаторы в рабочем советнике.
В каком советнике это делать и как прописать что бы советник увидел команды нашего индикатора, об этом будет далее..
double iTrend0 = iCustom(NULL, PERIOD_M15, "SuperTrend", 0, 1);
Первое слово в этой строке - это тип данных с которыми мы будем работать, это могут быть целые числа, числа с запятой, текстовые данные, значеная - Да или Нет (true или false).
"double" - означает что числа которые мы получим из индикатора могут быть не целые, т.е. число с запятой. Например 1,5 или 0,002, в общем всякие с запятой.
Еще типы данных с которыми мы встретимся в советнике:
int - только целые числа. Например: int MagicNumber = 33315;
bool - это когда потом пишется true или false (да или нет, разрешить или запретить).
Например: bool LongTrade = TRUE; //--- Выключатель длинных позиций
string - это текстовые данные, например название советника: string Name = " EA Angel";
Да.. с одним словом сколько провозились. Ну дальше проще.
iTrend - Это просто имя или название ними придуманное , того что мы получим.
0 - это номер буфера;
iCustom - функция говорит компьютеру, что мы сейчас будем считывать данные с внешнего индикатора.
NULL - говорит о том что мы будем считывать данные применительно к текущей паре. (на которой мы запускаем советник). Но можем конкретно указать пару, например EURUSD, или GPBUSD).
PERIOD_M15 - это тайм фрейм на котором индикатор будет работать, когда мы будем считывать данные. Т.е. открыв график на М5, данные все равно будут считываться с М15.
"SuperTrend" обязательно в кавычках. Наименование советника, нужно перенести очень точно как в терминале. А то бывает мы видим вроде бы название не латинице. А оказывается, хитрый прогер написал часть букв на кириллице. В результате мы не можем считать данные с индикатора.
0 - это номер буфера.
1 - это бар на котором снимаются данные ( внимание.. 1 означает что данные снимаются не с текущего бара, а с уже закрытого, с предыдущего. Это для того что бы избежать перерисовки. Если будет стоять 0, то будет сниматься с текущего бара, но эти данные постоянно меняются. т.к. бар не закрыт.)
Далее самое веселое здесь.. сейчас между наименованием индикатора и номером буфера ничего нет, не считая разделительной запятой.
Это означает что все настройки индикатора берутся те, что указаны в коде индикатора. Но мы ведь хотим менять настройки индикатора в советнике. Так вот, для этого, в это место надо прописать настройки индикатора, обязательно в том порядке и так как они записаны в индикаторе. Но опять же это можно сделать двумя способами.
1.Просто перенести данные из входных параметров индикатора и наша строка будет выглядеть вот так:
double iTrend0 = iCustom(NULL, PERIOD_M15, "SuperTrend", 10, 3.0, 0, 1
Да, тогда настройки индикатора мы сможем менять в советнике, но только в самом коде.
2.Чтобы мы увидели настройки нашего индикатора в настройках советника, нужно прописать название настроек. Тогда эта строка будет выглядеть вот так:
double iTrend0 = iCustom(NULL, PERIOD_M15, "SuperTrend", Nbr_Periods, Multiplier, 0, 1
А в настройки советника, это в самом верху в коде советника где прописываются его настройки, добавить, просто скопировав из кода индикатора:
extern int Nbr_Periods = 10;
extern double Multiplier = 3.0;
Дальше компилируем и видим в журнале кучу ошибок, если забыли скопировать какую ни будь точку с запятой ( ; ). Если не забыли, то все ОК! Ошибок нет.. Проверяем работу советника в тестере.
Вот так мы и будем прописывать наши Граальные индикаторы в рабочем советнике.
В каком советнике это делать и как прописать что бы советник увидел команды нашего индикатора, об этом будет далее..