Эксперт-советник mql4, позволяющий построить торговую систему на базе произвольного «стрелочного» индикатора.
«Стрелочным» считается индикатор, размещающий в своем буфере значения, отличные от нуля и EMPTY_VALUE, отображающиеся в основном или дополнительном окне методом DRAW_ARROW. Советник опрашивает значения заданных индикаторных буферов, открывает и сопровождает сделки согласно заданным параметрам.
В советнике реализованы следующие функции сопровождения сделок:
- установка для сделки значений стоп-лосс и тэйк-профит;
- перевод в безубыток (перенос значения стоп-лосс на уровень, обеспечивающий сделке минимальное прибыльное значение при прохождении цены более заданного значения);
- частичное закрытие позиции (закрытие заданной части объема при прохождении ценой заданного значения);
- мартингейл (увеличение объема сделки после получения убытка);
Советник проверяет достаточность свободных средств перед открытием новой сделки, контролирует допустимые уровни размещения TP и SL, проверяет режим исполнения ордеров и изменяет с соответствии с этим алгоритм выставления SL и TP. В настройках советника использованы данные для работе на счете с 4-значными котировками. При использовании советника на счете с 5-значными котировками, настройки будут пересчитаны автоматически.
Для подключения к советнику собственного индикатора, необходимо ввести его название (имя файла без расширения и пути) и ввести значения используемых фуферов. Индикатор должен быть скомпилирован и находиться в стандартной папке приложения.
В ресурсы советника добавлен тестовый индикатор, позволяющий проверить работоспособность в тестере стратегии. Для использование тестового индикатора, в параметре IndicatorName должно быть введено значение ::Indicators\\TestIndicator.ex4 (настройка по умолчанию).
Пример подключения собственного индикатора приведен на рисунке ниже
Описание параметров советника:
- startLot — начальный объем при задании фиксированного значения;
- maxLot — максимальный объем сделок при вычислении по риску или умножению;
- MaxRisk — максимальный риск на сделку (определяет объем ордера по максимальному убытку в процентах от депозита), не работает при нулевом stopLoss, отменяет использование startLot, 0 — не используется;
- Martin_factor — коэффициент умножения объема нового ордера после получения убытка (0 — не используется);
- stepProfit — шаг прибыли в пунктах для частичного закрытия сделок (0 — не используется);
- stepProfit_factor — объем при частичном закрытии ордеров (0 — не используется);
- stopLoss — стоп-лосс в пунктах (0 — не используется);
- takeProfit — тейк-профит в пунктах (0 — не используется);
- noLoss — уровень перевода в безубыток в пунктах (0 — не используется);
- noLoss_factor — уровень перевода в безубыток в долях от SL (0 — не используется);
- trailStop — значение тейлинга в пунктах (0 — не используется);
- trailStep — шаг тейлинга в пунктах (0 — не используется);
- DualOrders — разрешение открытия sell-ордеров при наличии активных buy и наоборот;
- UseAllSignals — разрешение ордеров по всем сигналам;
- ProfitNum — минимальное количество ордеров для закрытия по суммарной прибыли;
- ProfitSumm — сумма прибыли для закрытия ордеров;
- minProfit_factor — размер частичного закрытия ордеров;
- minProfit_noLoss — перевести в безубыток при частичном закрытии;
- IndicatorName — название индикатора (без расширения и путей);
- openBuyBufferIndex — буфер для открытия ордеров на покупку (-1 — не используется);
- takeProfitBuyBufferIndex — буфер значения тейк-профит ордеров на покупку (-1 — не используется);
- stopLossBuyBufferIndex — буфер значения стоп-лосс ордеров на покупку (-1 — не используется);
- closeBuyBufferIndex — буфер для закрытия ордеров на покупку (-1 — не используется);
- minProfetBuyBufferIndex — буфер для частичного закрытия ордеров на покупку (-1 — не используется);
- openSellBufferIndex — буфер для открытия ордеров на продажу (-1 — не используется);
- takeProfitSellBufferIndex — буфер значения тейк-профит ордеров на продажу (-1 — не используется);
- stopLossSellBufferIndex — буфер значения стоп-лосс ордеров на продажу (-1 — не используется);
- closeSellBufferIndex — буфер для закрытия ордеров на продажу (-1 — не используется);
- minProfetSellBufferIndex — буфер для частичного закрытия ордеров на продажу (-1 — не используется);
- BarIndex — индекс бара в буфере;
- useMaFilter — разрешение фильтрации сигналов скользящей средней;
- MaFilterTimeFreme — временной интервал скользящей средней;
- MaFilterPeriod — период скользящей средней;
- MaFilterMethot — метод скользящей средней;
- MaFilterPrice — цены скользящей средней;
- useRsiFilter — разрешение фильтра по индикатору RSI (продажа когда значение выше верхнего уровня, покупка когда ниже нижнего);
- rsiFilterTimeFrafe, rsiFilterPeriod, rsiFilterPrice, rsiFilterLevel_UP, rsiFilterLevel_DOWN — параметры RSI;
- useStochFilter — разрешение фильтра по индикатору Stohastic (продажа когда значение выше верхнего уровня, покупка когда ниже нижнего);
- stochFilterTimeFrafe, stochFilterK, stochFilterD, stochFilterSlow, stochFilterMethod, stochFilterPrice, stochFilterLevel_UP, stochFilterLevel_DOWN — параметры стохастика;
- useParabolicFilter — разрешение фильтра по индикатору Parabolic SAR (продажа когда значение выше свечи, покупка когда ниже свечи);
- parabolicFilterTimeFrafe, parabolicFilterStep, parabolicFilterMax — параметры SAR
- useStdFilter — разрешение фильтра по индикатору StdDev (торговля когда значение выше заданного и движется вверх);
- stdFilterTimeFrafe, stdFilterPeriod, stdFilterLevel, stdFilterMethod, stdFilterPrice — параметры StdDev
- useMacdFilter — разрешение фильтра по индикатору MACD (покупка — когда сигнальная линия ниже основной, продажа — выше);
- macdFilterTimeFrafe, macdFilterFast, macdFilterSlow, macdFilterSignal, macdFilterPrice
- CustomEventBuy — пользовательское событие на покупку (0 — не используется)
- CustomEventSell — пользовательское событие на продажу (0 — не используется)
- timeStart — час начала торговли (0 .. 23);
- timeEnd — час завершения торговли (0 .. 23);
- slippage — проскальзывание в пунктах;
- MAGIC — идентификатор;
- useMail — разрешение сообщений на электронную почту;
- useNotification — разрешение сообщений на мобильное устройство;
- messageText — текст сообщений;
- TesterAutoTradeWeek — разрешение автоматического сигнала на покупку еженедельно в тестере стратегий.
- useButton — разрешение вывода на график кнопок Buy/Sell
Видео с демонстрацией работы советника на встроенном индикаторе ниже. Смотрите пример построения торговой системы на базе Universal EA.
Версия 1.8 универсального советника может работать с индикаторами, формирующими пользовательские события (CustomEvent), например https://www.mql5.com/ru/market/product/18709