//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
//--- create handle of the indicator iRSI
handle_iRSI=iRSI(Symbol(),Period(),Inp_RSI_ma_period,Inp_RSI_applied_price);
//--- if the handle is not created if(handle_iRSI==INVALID_HANDLE)
{
//--- tell about the failure and output the error code PrintFormat("Failed to create handle of the iRSI indicator for the symbol %s/%s, error code %d",
Symbol(),
EnumToString(Period()),
GetLastError());
//--- the indicator is stopped early return(INIT_FAILED);
}//---return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Expert deinitialization function |
Шаг четвёртый:
Добавляем функцию, в которой получаем значение индикатора iRSI на нужном баре
}
//+------------------------------------------------------------------+//| Get value of buffers for the iRSI |//+------------------------------------------------------------------+double iRSIGet(constint index)
{
double RSI[1];
//--- reset error code ResetLastError();
//--- fill a part of the iRSI array with values from the indicator buffer that has 0 index if(CopyBuffer(handle_iRSI,0,index,1,RSI)<0)
{
//--- if the copying fails, tell the error code PrintFormat("Failed to copy data from the iRSI indicator, error code %d",GetLastError());
//--- quit with zero result - it means that the indicator is considered as not calculated return(0.0);
}
return(RSI[0]);
}
//+------------------------------------------------------------------+
Шаг пятый:
анализируем значение индикатора и открываем позиции. Для отсылки торговых приказов подключаем торговый класс CTade и объявляем объект m_trade. Работает советник только в момент рождения нового бара. В OnTick() получаем значение индикатора RSI на баре номер 1 и сравниваем его с уровнями "Level UP" и "Level DOWN". При получении сигнала открываем позицию. В данном советнике не реализованы Take Profit, Stop Loss, Trailing и закрытие позиций при противоположном сигнале.
2.3.1 Так всё-таки - индикатор Fractals перерисовывается или нет?
Чтобы ответить точно, сначала следует сказать какие фракталы можно использовать в советнике:
создать хендл индикатора iFractals - замечу, что код этого индикатора закрыт;
создать хендл пользовательского индикатора (iCustom), который находится в папке \MQL5\Indicators\Examples\Fractals.mq5 - код этого индикатора открыт.
Способ #1 сравнения показаний индикаторов
В одном советнике контролировать наличие фракталов в обоих индикаторах (проводить постоянный поиск последнего фрактала). Также можно
Способ #2 сравнения показаний индикаторов
На чистый график (на котором нет ни графических объектов, ни индикаторов, ни советников) добавить два индикатора: один через меню "Вставка" - "Индикаторы" - Билла Вильямса" - "Fractalc":
а второй индикатор сначала нужно чуточку изменить:
в индикатор \MQL5\Indicators\Examples\Fractals.mq5 внести небольшую правку - изменить сдвижку по вертикале:
было "-10", а мы поставим "-20":
//--- 10 pixels upper from high priceint ExtArrowShift=-20;
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+voidOnInit()
Конечно после этого нужно скомпилировать индикатор.
Теперь через окно "Навигатор" - правый клик на индикаторе и "Присоединить к графику":
Одному из индикаторов нужно будет сменить цвет - чтобы видеть различия. В итоге на графике будут находится два индикатора фракталы и эти фракталы различаются по цвету:
- теперь этот график нужно сохранить как шаблон для тестера стратегий: правый клик на графике и "Шаблоны" - "Сохранить шаблоны ..." и указать имя шаблона "tester.tpl".
Остаётся запустить визуальное тестирование ЛЮБОГО ДРУГОГО индикатора и в тестере можно наблюдать совпадения (или расхождения) от двух индикаторов фракталы. Я специально подыскал такое место, где видно, что стандартный индикатор Fractals (у которого код закрыт) перерисовывается: символ GBPUSD,H1, начало тестирования 2018.04.13. Видео снято начиная с 2018.04.13 11:58:
Иногда полезно знать какое значение имеют элементы внутри перечисления. Пример распечатывающий значения элементов перечисления ENUM_ORDER_TYPE. Для небольшой автоматизации применяется параметрическая форма #define
Реальная тема для создания примера - работа во 'Фрилансе':
I am trying to create my own trading robot through the wizard in MT5. However l want my trading robot to only open trades in one direction i.e. either BUY or SELL and not both.
Please advise.
Перевод: робот создан исключительно с использованием 'Мастера', (т.е. 100% стандартной библиотеки) Вопрос: как задавать ограничение в направлении торговли (только покупка, только продажа, без ограничений)?
Остаётся запустить визуальное тестирование ЛЮБОГО ДРУГОГО индикатора и в тестере можно наблюдать совпадения (или расхождения) от двух индикаторов фракталы. Я специально подыскал такое место, где видно, что стандартный индикатор Fractals (у которого код закрыт) перерисовывается: символ GBPUSD,H1, начало тестирования 2018.04.13. Видео снято начиная с 2018.04.13 11:58:
Даже и не знал, что у этих индикаторов разный алгоритм! А остальные проверяли, которые с открытым кодом и встроенные в язык?
Советник торгующий по индикатору RSI, как правило, имеет два параметра - два уровня значений: "Level UP" и "Level DOWN":
Шаг первый:
заносим во входные параметры эксперта, параметры индикатора. А также объявляем переменную, в которой будет храниться хендл индикатора:
Шаг второй:
добавляем два параметра ('Level UP" и "Level DOWN") - значение уровней индикатора RSI для принятия решения о торговле
Шаг третий:
создаём хендл индикатора в OnInit()
Шаг четвёртый:
Добавляем функцию, в которой получаем значение индикатора iRSI на нужном баре
Шаг пятый:
анализируем значение индикатора и открываем позиции. Для отсылки торговых приказов подключаем торговый класс CTade и объявляем объект m_trade. Работает советник только в момент рождения нового бара. В OnTick() получаем значение индикатора RSI на баре номер 1 и сравниваем его с уровнями "Level UP" и "Level DOWN". При получении сигнала открываем позицию. В данном советнике не реализованы Take Profit, Stop Loss, Trailing и закрытие позиций при противоположном сигнале.
Чтобы ответить точно, сначала следует сказать какие фракталы можно использовать в советнике:
Способ #1 сравнения показаний индикаторов
В одном советнике контролировать наличие фракталов в обоих индикаторах (проводить постоянный поиск последнего фрактала). Также можно
Способ #2 сравнения показаний индикаторов
На чистый график (на котором нет ни графических объектов, ни индикаторов, ни советников) добавить два индикатора: один через меню "Вставка" - "Индикаторы" - Билла Вильямса" - "Fractalc":
а второй индикатор сначала нужно чуточку изменить:
в индикатор \MQL5\Indicators\Examples\Fractals.mq5 внести небольшую правку - изменить сдвижку по вертикале:
было "-10", а мы поставим "-20":
Конечно после этого нужно скомпилировать индикатор.
Теперь через окно "Навигатор" - правый клик на индикаторе и "Присоединить к графику":
Одному из индикаторов нужно будет сменить цвет - чтобы видеть различия. В итоге на графике будут находится два индикатора фракталы и эти фракталы различаются по цвету:
- теперь этот график нужно сохранить как шаблон для тестера стратегий: правый клик на графике и "Шаблоны" - "Сохранить шаблоны ..." и указать имя шаблона "tester.tpl".
Остаётся запустить визуальное тестирование ЛЮБОГО ДРУГОГО индикатора и в тестере можно наблюдать совпадения (или расхождения) от двух индикаторов фракталы. Я специально подыскал такое место, где видно, что стандартный индикатор Fractals (у которого код закрыт) перерисовывается: символ GBPUSD,H1, начало тестирования 2018.04.13. Видео снято начиная с 2018.04.13 11:58:
...
Индикаторы могут быть размещены не только в главном окне, но в подокне. Причём подокон может быть несколько:
Для обхода всех индикаторов нужно организовать два цикла:
Итоговый скрипт:
Для рисунка выше скрипт даёт такую информацию:
Иногда полезно знать какое значение имеют элементы внутри перечисления. Пример распечатывающий значения элементов перечисления ENUM_ORDER_TYPE. Для небольшой автоматизации применяется параметрическая форма #define
Результат работы скрипта:
...
Пример распечатывающий значения элементов перечисления ENUM_POSITION_TYPE. Для небольшой автоматизации применяется параметрическая форма #define
Элементы перечисления ENUM_POSITION_TYPE имеют такие значения:
Реальная тема для создания примера - работа во 'Фрилансе':
I am trying to create my own trading robot through the wizard in MT5. However l want my trading robot to only open trades in one direction i.e. either BUY or SELL and not both.
Please advise.
Остаётся запустить визуальное тестирование ЛЮБОГО ДРУГОГО индикатора и в тестере можно наблюдать совпадения (или расхождения) от двух индикаторов фракталы. Я специально подыскал такое место, где видно, что стандартный индикатор Fractals (у которого код закрыт) перерисовывается: символ GBPUSD,H1, начало тестирования 2018.04.13. Видео снято начиная с 2018.04.13 11:58:
Даже и не знал, что у этих индикаторов разный алгоритм! А остальные проверяли, которые с открытым кодом и встроенные в язык?
Даже и не знал, что у этих индикаторов разный алгоритм! А остальные проверяли, которые с открытым кодом и встроенные в язык?
Нет, не проверял. А Fractals попал под подозрение из-за того, что было по нему много вопросов.