Смотри, как бесплатно скачать роботов
Ищи нас в Facebook!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Библиотеки

News Filter for the Strategy Tester (DST-corrected calendar export) - библиотека для MetaTrader 5

Cristian Ciunae
Cristian Ciunae
Trader for 8 years & MQL5 Developer. Specializing in Prop Firm Risk Management.
My Core Focus: I build MQL5 tools and Expert Advisors designed for the realities of live trading: strict drawdown limits, hidden swap/commission costs, and news slippage.
What I Do:
| Russian English 中文 Español Deutsch 日本語 Português 한국어 Français Italiano Türkçe
Просмотров:
21
Рейтинг:
(3)
Опубликован:
MQL5 Фриланс Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
ПРОБЛЕМА

Большинство новостных фильтров используют экономический календарь MQL5 (CalendarValueHistory). Этот календарь отсутствует в Тестере стратегий, поэтому во время бэктестов эти фильтры незаметно не выполняют никаких действий: советник торгует непосредственно во время публикации данных по NFP, CPI или решений по ставкам, и результаты бэктеста перестают соответствовать поведению в реальном времени. В одном из моих тестов отложенный ордер по XAUUSD был исполнен за 5 минут до публикации данных по CPI в США, а стоп-лосс сработал со слиппеджем в 45 долларов США — в результате одной сделки потери превысили запланированный риск в 6,5 раз.

Вторая, менее известная проблема: терминал преобразует исторические временные отметки календаря с учётом ТЕКУЩЕГО сдвига сервера. При экспорте летом у брокера с часовым поясом GMT+2 / GMT+3 каждое зимнее событие отображается с опозданием на один час (NFP в 16:30 вместо 15:30 по серверному времени). Фильтр, построенный на основе этих временных значений, блокирует неверное время в течение половины года.

РЕШЕНИЕ — ТРИ ФАЙЛА

NewsCalendarExport.mq5 (скрипт) — экспортирует события в папку Terminal\Common\Files\NewsCalendar.csv и пересчитывает каждое событие с учётом серверного смещения для соответствующей даты. В конце скрипт выводит результат самопроверки: наиболее частое время событий, связанных с долларом США, должно совпадать как зимой, так и летом.

NewsFilter.mqh (класс CNewsFilter) — один фильтр как для реальной торговли, так и для бэктестов. В режиме реального времени он считывает экономический календарь (запрос выполняется не чаще одного раза в минуту); в Тестере стратегий — файл CSV. Используются только валюты, входящие в состав символа (EURUSD: EUR + USD, XAUUSD: USD, CFD на индексы, котируемые в USD: USD).

NewsFilter_Example.mq5 — минималистичный советник, который выводит сообщения о начале и окончании новостного окна, а также выделяет заблокированные окна на графике, чтобы вы могли увидеть работу фильтра в визуальном режиме тестера.

КАК ИСПОЛЬЗОВАТЬ

Скопируйте файл NewsFilter.mqh в папку MQL5\Include, файл NewsCalendarExport.mq5 — в папку MQL5\Scripts, а файл NewsFilter_Example.mq5 — в папку MQL5\Experts. Скомпилируйте скрипт и пример (файл .mqh компилируется вместе с ними).

Запустите NewsCalendarExport один раз на любом графике подключенного терминала. На вкладке «Эксперты» должно появиться сообщение: «OK: одинаковое время зимой и летом».

В свой советник добавьте следующий код:

C++
#include <NewsFilter.mqh>
CNewsFilter news;

int OnInit()
{
news.Init(_Symbol, 30, 30); // блокировать 30 минут до и после каждого события
return(INIT_SUCCEEDED);
}

void OnTick()
{
if(news.IsBlocked())
return; // новых записей во время новостей нет
// ... ваша логика ввода данных ...
}
Проведите бэктест, как обычно. В журнале отображается количество событий, загруженных для данного символа.

ПАРАМЕТРЫ СКРИПТА

Экспорт событий с: даты начала экспорта.

Также экспортируются запланированные события на N дней вперёд: включая предстоящие события.

Валюты: список, разделенный запятыми (по умолчанию: USD, EUR, GBP, JPY, CAD, AUD, NZD, CHF).

Важность: только события с высоким влиянием или события со средним и высоким влиянием.

Правило перехода на летнее время на сервере брокера: правило США (по умолчанию, сервер = Нью-Йорк + 7 ч, большинство брокеров в часовых поясах GMT+2/+3), правило ЕС или отсутствие перехода на летнее время.

Имя файла: сохраняется в папке Terminal\Common\Files.

CNewsFilter::Init(symbol, minutesBefore, minutesAfter, mediumToo = false, csvFile = "NewsCalendar.csv")

ПРИМЕЧАНИЯ И ОГРАНИЧЕНИЯ

Протестировано на FTMO (GMT+2 / GMT+3, правило перехода на летнее время США) и на IC Markets EU. Пример вывода: экспортировано 5645 событий, 1897 из них сдвинуты на один час; до коррекции наиболее частое время для USD было 16:30 зимой и 15:30 летом, после коррекции — 15:30 в оба сезона.

Если при самопроверке по-прежнему отображаются разные зимнее и летнее время, попробуйте другое «Правило перехода на летнее время сервера брокера».

История календаря MQL5 ограничена и зависит от терминала; на моём терминале она начинается с 2020 года, поэтому более ранние бэктесты не будут содержать событий.

Используются только валюты символа, поэтому для индексов и сырьевых товаров применимость событий определяется валютой котировки.

Удаленные и облачные агенты не могут читать папку Common\Files — оптимизируйте работу с помощью локальных агентов.

Для некоторых валют в календаре MQL5 очень мало событий с высоким уровнем влияния (например, AUD). Для них используйте «Среднее + высокое влияние».

Фильтр лишь сообщает вашему советнику, когда НЕ следует открывать новые сделки. Управление уже открытыми позициями остается на усмотрение вашего советника.

Время от времени запускайте скрипт заново, чтобы включить новые события.

НУЖНА ПОМОЩЬ В ИНТЕГРАЦИИ?

Если вы не программист и хотите интегрировать этот новостной фильтр в свой существующий советник, или если вам нужны индивидуальные правила управления рисками, адаптированные к требованиям вашей проп-компании, свяжитесь со мной напрямую через мой профиль на MQL5 Freelance. Я с удовольствием напишу код для вас!

Версия 1.00 — первый выпуск (пример советника 1.01: рисует на графике окна заблокированных новостей). окна, заблокированные фильтром, отображаемые в графическом режиме тестера стратегий Автоматическая проверка скрипта: одинаковое время события в долларах США зимой и летом после корректировки с учётом перехода на летнее время Журнал Strategy Tester: открытие и закрытие окон новостей

Перевод с английского произведен MetaQuotes Ltd.
Оригинальная публикация: https://www.mql5.com/en/code/77617

CSetupLedger: a per-setup win rate ledger for Expert Advisors CSetupLedger: a per-setup win rate ledger for Expert Advisors

Оценивает каждый тип настроек вашего советника отдельно, а не объединяет их в одну кривую капитала. При инициализации восстанавливается на основе истории сделок счета, поэтому перезапуск не может стереть эти данные. Отображает нижнюю границу показателя Уилсона рядом с исходным показателем выигрышности, чтобы серия из трёх успешных сделок перестала выглядеть как преимущество.

Session Candle Counter: candles numbered from the cash open, DST aware Session Candle Counter: candles numbered from the cash open, DST aware

Номера присваиваются каждому свечному бару текущего торгового дня, начиная с момента открытия торгов на биржах во Франкфурте, Лондоне, Нью-Йорке или Токио. Время открытия конвертируется из местного времени биржи в время сервера брокера с автоматической корректировкой на переход на летнее время, поэтому первый свечной бар после открытия всегда имеет номер один — как летом, так и зимой.

Safe Risk Manager EA - Daily Loss, Break-Even and Trailing Stop Safe Risk Manager EA - Daily Loss, Break-Even and Trailing Stop

Обучающая торговая панель для хеджирующего счета MT5 с функциями определения размера риска, защиты от спреда, постоянной блокировки дневных убытков, стоп-ордеров на уровне безубыточности и скользящих стоп-ордеров.

YURAZ_MCCH YURAZ_MCCH

Индикатор рассчитывает % роста или падения относительно CLOSE, написан с применением ООП, и легко интегрируется в любой советник или иной индикатор.