46. DV-FSSI

Торговый советник для MetaTrader 5, который торгует с применением кастомных индикаторов от FXSSI

Layout

Что нового?

2.00: [*] Обновление SLC бот выполняет при рождении новой свечи, а проверку пробития SLC на каждом тике.
      [*] При пробитии уровня последним инструментом бот выставляет LIMIT ордера (в 1.00 были STOP) на уровне текущего BID цены с учетом сдвига.
1.02: [*] Исправлен поиск большой свечи после новостей - теперь поиск только в текущем дне
      [+] Вывод в лог всех загруженных фильтров новостей
1.01: [+] Добавлен сетап COMBINED
1.00: First version

Версия 1.01

  1. Для каждого дня недели в параметрах SET_TYP_* можно установить тип сетапа COMBINED.

  2. Этот сетап дожидается снятия в одном направлении уровней индикатора SLC на всех торгуемых в этот день символах (задаются в SET_SYM_*).

    !!! warning Зачем нужен GLB_SLC_DPT? Индикатор SLC при запуске получает данные с серверов FXSSI о размещении кластеров SL и сохраняет их в свои буферы LGRAP и LGRBP. Обновление данных от FXSSI происходит редко, судя по всему, по времени. Поэтому данные в буферах могут сдвигаться глубже в историю, пока индикатор не получит новые данные с сайта FXSSI. Чтобы советник видел актуальные уровни SLC, нужно в GLB_SLC_DPT задать глубину поиска данных по уровням SLC.

  3. После чего советник размещает отложенный STOP ордер в противоположенном направлении:

    • Точка входа (EP) - это снятый уровень SLC с добавлением сдвига ENT_PO_SHT в пунктах.
    • SL зафиксирован в ENT_SL_PNT в пунктах.
    • TP в зависимости от ENT_TP_TYP может быть: фиксированным ENT_TP_PNT, расчетным на основании SL и ENT_TP_RR или размещен на противоположенном SLC.
    • Величина лота зависит от выбранного в ENT_MM_TYP типа расчета.
    • Период экспирации ордера задан ENT_PO_EXP в сек.
  4. В параметре FIL_TP_MIN задается мин допустимый TP в пунктах. Если TP оказывается меньше этого значения, то бот проигнорирует вход в сделку.

  5. Если графика включена в параметре GUI_ENB, то бот откроет окна с графиками всех торгуемых инструментов. На каждом из них бот рисует SLC уровни для каждой свечи. Такие графики удобно использовать для анализа работы бота.

  6. В режиме тестера индикаторы от FXSSI работают некорректно. Об этом заявили разработчики в службе поддержки. FXSSI Support answer about iCustom

  7. Поэтому для тестирования бота добавлен механизм ручной установки значений уровней SLC для двух символов. Для этого нужно установить параметры _MS_MOC_SYM_*, _MS_MOC_LNG_* и _MS_MOC_SHT_*. Бот подменит этими значениями буферы SLC и дальше отработает всю логику как обычно. Таким образом, можно сымитировать разные уровни SLC и проверить работу бота на них в тестере.

  8. Было замечено, что иногда индикатор SLC перестает получать и рисовать уровни для некоторых инструментов, в частности для EURUSD. В этом случае бот будет выводить сообщение об ошибке. Как только индикатор начнет работать, бот продолжит отслеживать сетап. SLC CopyBuffer Error

Требования

Общее положения

  • 1. Советник одновременно торгует все major forex пары (EURUSD,GBPUSD, AUDUSD, NZDUSD, USDCAD, USDJPY, USDCHF) на том временном периоде, на котором установлен на график.

    Торгуемые символы определены на каждый день в семи параметрах SET_SYM_*

  • 2. Советник должен оповещать о входе в сделку и о выходе сигналом в торговый терминал (MT5). В том числе на мобильном устройстве.

    Включить нотификации в параметрах раздела NOT

  • 3. Запрет на торговлю за 1 час до новостей и 2 часа после.

    Интервал вокруг новости задается в параметрах FIL_NWS_BMN и FIL_NWS_BMN.

  • 3.1 При наличии открытых позиций, советник должен их закрыть.
Список новостей из Forexfactory, USD:

Короткий список новостей можно задать в параметре FIL_NWS_NAM. Длинные списки новостей определяются в файле MQL5\Files\dvfssi_news.txt и включается загрузка их него в FIL_NWS_NIF. Все новости из ТЗ перенес в этот файл с названиями, которые использует календарь MetaQuotes.

  • Fed Chair Powell Speaks = Fed Chair Powell Speech
  • Fed Chair Powell Testifies = Fed Chair Powell Testimony
  • Federal Funds Rate = Fed Interest Rate Decision
  • FOMC Enocomic Projections = FOMC Economic Projections
  • FOMC Meeting Minutes = FOMC Minutes
  • FOMC Statement = FOMC Statement
  • FOMC Press Conference = FOMC Press Conference
  • FOMC Member Waller Speaks = Fed Governor Waller Speech
  • Prelim GDP q/q = GDP q/q
  • Advance GDP q/q = GDP q/q
  • Final GDP q/q = GDP q/q
  • Treasury Currency Report
  • Presidential Election
  • Congressional Elections
  • Jackson Hole Symposium = Jackson Hole Economic Symposium
Список новостей из Forexfactory, EUR:
  • Monetary Policy Statement = ECB Monetary Policy Statement
  • ECB Press Conference = ECB Monetary Policy Press Conference
  • Main Refinancing Rate = ECB Interest Rate Decision
  • Euro Summit = EU Leaders Summit
  • European Parliamentary Elections
  • French Parliamentary Elections
Список новостей из Forexfactory, GBP:
  • Monetary Policy Summary

  • MPC Official Bank Rate Votes = BoE MPC Meeting Minutes

  • Official Bank Rate = BoE Interest Rate Decision GDP m/m

  • BOE Monetary Policy Report = BoE Monetary Policy Report

  • BOE Gov Bailey Speaks = BoE Governor Bailey Speech

  • Parliamentary Elections

  • 4. Если после указанных выше новостей получили 1Ч «свечу» размером 60 пунктов и выше, советник не торгует до следующего открытия Лондона, т.е. следующего дня (8:00 UTC+0 или 9:00 GMT+1)

    Бот отключит торговлю, если увидит в заданный период отслеживания новости большую свечу размером FIL_NWS_SBS на ТФ FIL_NWS_STF. Чтобы отключить этот фильтр установите 0 в размер свечи.

  • 5. 1 стоплосс в день по каждой торгуемой паре. Пример: по паре AUDUSD сделка закрылась по стоплоссу, советник сегодня больше не открывает никаких позиций по данной паре до следующего дня открытия Лондона. По всем остальным парам которые не словили стоплосс, советник продолжает торговать.

    Бот отключит торговлю до следующего дня после первого SL по любой его позиции.

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

    Бот открывает только одну позицию по каждому символу одновременно.

  • 7. Время торгов начинается каждый день с открытия Лондонской сессии (9:00 GMT+1) до 22:00 (GMT+1).

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

  • 7.1 В 22:00 все сделки советник должен закрыть.

  • Исключение составляет пятница, где советник торгует с Лондонской сессии (9:00 GMT+1) до 18:00 GMT+1). При наступлении 18:00 советник должен закрыть все сделки.

    См. FIL_TIM_FRI.

  • 9. Всё техническое задание подвязано к платным индикаторам с сайта fxssi.net, соответственно советник должен без проблем работать с данными индикаторами

  • 10. Все возникшие баги, не точности в работе которые требуют правок, должны быть устранены для того, чтобы ТЗ считалось выполненным

Основная часть технического задания

Понедельник, Вторник

  • 1. Торгуются только 2 пары: GBPUSD и EURUSD
  • ==2. Сигнал на открытие сделки: Снятие уровней SLC по евро и фунту, затем вход в сделку в противоположную сторону. Если по евро сняли уровень, а по фунту нет - советник не входит в сделку==
  • 3. Стоплосс - 15 пунктов, Тейкпрофит 30 (RR 2:1), размер лота - 0.5% от баланса (например если баланс 1000, размер лота будет составлять 0.03

Среда

  • 1. Торгуется только GBPUSD и EURUSD
  • 2. Сделка открывается только в том случае, если RR составляет не меньше 3:1 (15 пунктов стоплосс, 45 пунктов тейкпрофит)
  • 3. Перед входом в сделку, уровни индикатора SLC которые сформировались на этом дне должны быть сняты по двум парам (евродоллар и фунтдоллар). Только после снятие разрешен вход в сделку
  • 4.1 Сигнал на покупку осуществляется только при синхронизации данных индикаторов: индикатор Derivatives (MVP) находится под ценой. Индикатор Current Ratio - 60% или больше в продажах (в поле AVG - красный кружок) +10 пунктов.
  • 4.2 Сигнал на продажу осуществляется только при синхронизации данных индикаторов: индикатор Derivatives (MVP) находится над ценой. Индикатор Current Ratio - 60% или больше в покупках (в поле AVG - зелёный кружок) +10 пунктов
  • 5. Stoploss - 15 пунктов

    См. ENT_SL_PNT

  • 6. Takeprofit - Противоположный ближайший уровень по индикатору SLC, или достижение линии MVP индикатора Derivatives. Но не меньше чем 45 пунктов.

    См. ENT_TP_TYP и ENT_TP_RR.

  • 7. Сумма лота - 1% от баланса. Например при балансе в 1000USD + 1% риска, Стоплосс 15 пунктов, размер лота будет составлять 0

    Тип расчета лота позиции определяется параметрами ENT_MM_TYP и ENT_MM_VAL.

Четверг
  • 1. Торгуются все major forex пары (EURUSD,GBPUSD, AUDUSD, NZDUSD, USDCAD, USDJPY, USDCHF)
  • 2. Те же самые критерии и условия что и в среду
Пятница
  • 1. Торгуется только GBPUSD и EURUSD
  • 2. Те же самые критерии и условия что и в среду

Установка

  1. Обновите терминал MetaTrader 5 до последней версии: Help->Check For Updates->Latest Release Version.
    • Если советник или индикатор не запускается, то проверьте сообщения на вкладке Journal. Возможно вы не обновили терминал до нужной версии.
    • Иногда для тестирования советников рекомендуется обновить терминал до самой последней бета-версии: Help->Check For Updates->Latest Beta Version. На прошлых версиях советник может не запускаться, потому что скомпилирован на последней версии терминала. В этом случае вы увидите сообщения на вкладке Journal об этом.
  2. Скопируйте файл бота *.ex5 в каталог данных терминала MQL5\Experts\. Открыть каталог данных терминала File->Open Data Folder.
  3. Скопируйте файлы индикаторов *.ex5 в каталог данных терминала MQL5\Indicators\. Открыть каталог данных терминала File->Open Data Folder.
  4. Разместить файл DVSTSSI_news.txt с названиями отслеживаемых новостей в каталоге MQL\Files.
  5. Откройте график нужной пары на нужном ТФ.
  6. Переместите советника из окна Навигатор на график.
  7. Установите в настройках бота галочку Allow Auto Trading.
  8. Включите режим автоторговли в терминале, нажав кнопку Algo Trading на главной панели инструментов.

Запуск в тестере

  1. Версию 1.00 можно запустить в тестере, чтобы проверить работу каждой функции требования.
  2. Доступ к экономическому календарю в режиме тестере MT5 невозможен, поэтому сначала нужно запустить бота в терминале в режиме GLB_BOT_MODE Экспорт новостей в файл. Бот загрузит из календаря все доступны новости в файл, чтобы можно было их прочитать из него в режиме тестера.

Компиляция бота из исходных текстов

  1. Запустите IDE в MetaTrader 5. Выберите в меню пункт Tools\Meta Quotes Language Editor.
  2. Перейдите в папку Experts\<Expert's Catalog>.
  3. Откройте файл *.mqproj.
  4. Выберите пункт меню Build\Compile.
  5. Терминал скомпилирует новый файл *.ex5 в том же каталоге.

Параметры

1. GLOBAL (GLB)
  • GLB_BOT_MODE: Режим работы:
    • Экспорт новостей в файл: Режим для выгрузки новостей календаря в файл для работы с ними в тестере
    • Комбинированный: Режим торговли по выбранным сетапам
  • GLB_SLC_DPT: ==Глубина поиска уровней SLC, баров - на какую глубину баров в историю искать значения уровней в буферах LGRAP и LGRBP индикатора SLC==
2. СЕТАПЫ (SET)
  • SET_TYP_MON: Тип сетапа ПН:
    • Нет торговли: Бот не будет торговать в день с таким типом сетапа
    • Индивидуальный: Это сетап из ТЗ для СР-ПТ, когда каждый символ торгуется индивидуально
    • Комбинированный: Это сетап из ТЗ для ПН-ВТ, когда каждый символы торгуются по только сигналу на обоих одновременно
  • SET_TYP_TUE: Тип сетапа ВТ
  • SET_TYP_WED: Тип сетапа СР
  • SET_TYP_THU: Тип сетапа ЧТ
  • SET_TYP_FRI: Тип сетапа ПТ
  • SET_TYP_SAT: Тип сетапа СБ
  • SET_TYP_SUN: Тип сетапа ВС
  • SET_SYM_MON: Список символов для ПН (’;’-разд.)
  • SET_SYM_TUE: Список символов для ВТ (’;’-разд.)
  • SET_SYM_WED: Список символов для СР (’;’-разд.)
  • SET_SYM_THU: Список символов для ЧТ (’;’-разд.)
  • SET_SYM_FRI: Список символов для ПТ (’;’-разд.)
  • SET_SYM_SAT: Список символов для СБ (’;’-разд.)
  • SET_SYM_SUN: Список символов для ВС (’;’-разд.)
3. ФИЛЬТРЫ (FIL)
  • FIL_TIM_MON: Разрешенный период торговли в ПН (HH:MM-HH:MM), например, “09:00-22:00”
  • FIL_TIM_MON: Разрешенный период торговли в ВТ (HH:MM-HH:MM)
  • FIL_TIM_MON: Разрешенный период торговли в СР (HH:MM-HH:MM)
  • FIL_TIM_MON: Разрешенный период торговли в ЧТ (HH:MM-HH:MM)
  • FIL_TIM_MON: Разрешенный период торговли в ПТ (HH:MM-HH:MM), например, “09:00-18:00”
  • FIL_TIM_MON: Разрешенный период торговли в СБ (HH:MM-HH:MM)
  • FIL_TIM_MON: Разрешенный период торговли в ВС (HH:MM-HH:MM)
  • FIL_NWS_ENB: Включить фильтрацию вокруг новостей
  • FIL_NWS_NAM: Список имен новостей (’;’-разд.), где можно задать имена новостей, которые бот должен отслеживать
  • FIL_NWS_NIF: Загрузить имена новостей из файла ‘dvfssi_news.txt’, где можно задать имена новостей, которые бот должен отслеживать
  • FIL_NWS_BMN: Время до новостей, мин, задается с минусом
  • FIL_NWS_AMN: Время после новостей, мин
  • FIL_NWS_STF: TF свечи после новости для откл. торговли, по умолчанию D1
  • FIL_NWS_SBS: Max свеча после новости для откл. торговли, пункт
  • FIL_TP_MIN: ==Мин допустимый TP, пункт - если TP меньше этого значения бот проигнорирует вход в сделку==
4. ВХОДЫ (ENT)
  • ENT_MM_TYP: Тип лота:
    • Fixed lot: Фиксированный лот
    • Fixed max loss: Фиксированное значение максимальных потерь в валюте депозита
    • % of Balance: Позиция лотом не более % суммы от баланса в валюте депозита
    • % of Equity: Позиция лотом не более % суммы от средств/эквити в валюте депозита
    • % of Free Margin: Позиция лотом не более % суммы от маржи в валюте депозита
    • Auto (limit % of risk): Автоматически расчет % риска
  • ENT_MM_VAL: Значение для расчета лота, которое зависит от выбранного в ENT_MM_TYP
  • ENT_PO_SHT: ==Сдвиг EP отложенного ордера от SLC, пункт (0-откл)==
  • ENT_PO_EXP: ==Срок истечения отложенного ордера, сек (0-откл)==
  • ENT_SL_PNT: Фиксированный SL, пункт
  • ENT_TP_TYP: Тип TP:
    • Фиксированное расстояние в пунктах
    • Фиксированный Risk Reward
    • Противоположенный SLC: ==Размещает TP на противоположенном уровне SLC==
  • ENT_TP_PNT: Фиксированный TP, пункт
  • ENT_TP_RR: TP RR
5. ОПОВЕЩЕНИЯ (NOT)
  • NOT_ALR_ENB: Включить оповещения в терминале
  • NOT_PUS_ENB: Включить мобильные push уведомления
6. ГРАФИКА (GUI)
  • GUI_ENB: ==Графика включена==
6. РАЗНОЕ (MS)
  • MS_MGC: Expert Adviser ID - Magic
  • MS_EGP: Expert Adviser Global Prefix
  • MS_LOG_LL: Log Level
  • MS_LOG_FI: Log Filter IN String (use ; as sep)
  • MS_LOG_FO: Log Filter OUT String (use ; as sep)
  • MS_COM_EN: Comment Enable (turn off for fast testing)
  • MS_COM_IS: Comment Interval, Sec
  • MS_COM_EW: Comment Custom Window
  • MS_TIM_MS: Timer Interval, ms
  • _MS_MOC_SYM_1: ==Mock Levels for Symbol #1 (’’-off)==
  • _MS_MOC_LNG_1: ==Mock Long Level for Symbol #1==
  • _MS_MOC_SHT_1: ==Mock Short Level for Symbol #1==
  • _MS_MOC_SYM_2: ==Mock Levels for Symbol #2 (’’-off)==
  • _MS_MOC_LNG_2: ==Mock Long Level for Symbol #2==
  • _MS_MOC_SHT_2: ==Mock Short Level for Symbol #2==