Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
Two iMA Crossing Arrow EA - эксперт для MetaTrader 5
- Просмотров:
- 1880
- Рейтинг:
- Опубликован:
- 2020.01.15 10:37
- Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
Принцип работы
Пример создания советника по пользовательскому индикатору Two iMA Crossing Arrow EA. На баре может быть только одна сделка 'вход в рынок' (это внутренний параметр, он не вынесен во входные параметры и это не имеет отношения к параметру ' Only one positions')
Сигналы индикатора
Индикатор на базе стиля рисования DRAW_COLOR_ARROW. Содержит два индикаторных буфера:
- '0' - буфер значков (если в этом буфере значение отличное от '0.0' - значит это сигнал
- '1' - буфер цвета значков (может принимать значение '0.0' или '1.0', имеет смысл проверять только если в буфере '0' есть сигнал)
Индикатор ищет пересечение двух iMA (Moving Average, MA) на баре 'Bar Crossing'. Когда пересечение обнаружено - на баре рисуется значок, код которого задан в 'Arrow code for style DRAW_COLOR_ARROW' (коды значков можно посмотреть в шрифте Wingdings).
Рис. 1. Пример торговых сигналов
Главная функция - получение сигналов: проверка, чтобы в буфере значков было число больше нуля ив зависимости от значения в буфере цвета - генерируем BUY или SELL сигнал:
//+------------------------------------------------------------------+ //| Search trading signals | //+------------------------------------------------------------------+ bool SearchTradingSignals(void) { double crossing_buffer[],crossing_colors[]; ArraySetAsSeries(crossing_buffer,true); ArraySetAsSeries(crossing_colors,true); int start_pos=0,count=InpBar+1; if(!iGetArray(handle_iCustom,0,start_pos,count,crossing_buffer) || !iGetArray(handle_iCustom,1,start_pos,count,crossing_colors)) { return(false); } int size_need_position=ArraySize(SPosition); if(crossing_buffer[InpBar]>0.0) { if(crossing_colors[InpBar]==0.0) { if(!InpReverse) { if(m_prev_bars==m_last_deal_in) // on one bar - only one deal return(true); ArrayResize(SPosition,size_need_position+1); SPosition[size_need_position].pos_type=POSITION_TYPE_BUY; if(InpPrintLog) Print(__FILE__," ",__FUNCTION__,", OK: ","Signal BUY"); return(true); } else if(m_prev_bars==m_last_deal_in) // on one bar - only one deal return(true); ArrayResize(SPosition,size_need_position+1); SPosition[size_need_position].pos_type=POSITION_TYPE_SELL; if(InpPrintLog) Print(__FILE__," ",__FUNCTION__,", OK: ","Signal SELL"); return(true); } if(crossing_colors[InpBar]==1.0) { if(!InpReverse) { if(m_prev_bars==m_last_deal_in) // on one bar - only one deal return(true); ArrayResize(SPosition,size_need_position+1); SPosition[size_need_position].pos_type=POSITION_TYPE_SELL; if(InpPrintLog) Print(__FILE__," ",__FUNCTION__,", OK: ","Signal SELL"); return(true); } else if(m_prev_bars==m_last_deal_in) // on one bar - only one deal return(true); ArrayResize(SPosition,size_need_position+1); SPosition[size_need_position].pos_type=POSITION_TYPE_BUY; if(InpPrintLog) Print(__FILE__," ",__FUNCTION__,", OK: ","Signal BUY"); return(true); } } //--- return(true); }
Подробнее о настройках советника:
Торговые настройки
В советнике можно как включать, так и выключать Stop Loss, Take Profit и Trailing Stop. Для отключения выбранный параметр установить в "0.0".
Трейлинг и поиск торгового сигнала может срабатывать или через N- секунд или только в момент рождения нового бара. Интервал Трейлинга в секундах задаётся в Trailing, in seconds, а интервал поиска торговых сигналов в Search signals, in seconds. Для этих двух параметров общее правило: если интервал задать меньше, чем "10" - это означает работу ТОЛЬКО в момент рождения нового бара, если же интервал задать ровно или более "10" - это означает работу каждые "N" секунд.
Дополнительные возможности
- Only one positions - в рынке всегда только одна позиция
- Reverse - переворот торгового сигнала
- Close opposite - закрытие позиций противоположных торговому сигналу, причём сначала идёт гарантированное закрытие противоположной позиции и только потом открытие новой позиции в направлении сигнала
Обратите внимание: торговый сигнал имеет наивысший приоритет! Ограничить его исполнение можно только при помощи параметра Only one positions. Если Only one positions равен "true" и количество позиций открытых этим советником на данном символе больше "1" - тогда торговый сигнал игнорируется.
Параметр Close opposite равен "true": сначала ЗАКРЫВАЕМ противоположную позицию, потом отрабатываем торговый сигнал.
Управление размером позиции (расчёт лота)
Лот может быть как постоянный (Money management установить в Constant lot и задать размер лота в The value for "Money management") так и динамический - в процентах риска на сделку ( Money management установить в Risk in percent for a deal и задать процент риска в The value for "Money management"). Также можно задать постоянный лот равный минимальному лоту - Money management установить в Lots Min.
Торговая стратеги по осциллятору iDeMarker (DeMarker, DeM)
Custom Moving Average Levels EA 2Торговая стратегия на основе пользовательского индикатора Custom Moving Average Levels (вторая версия стратегии)
Трейлинг отложенных ордеров. Отложенный ордер идёт вслед за ценой.
Breakdown OHLCИндикатор отображает момент пересечения предыдущего бара. Использует стиль рисования DRAW_COLOR_ARROW