MA Head and Grid R5 Sonet
- Эксперты
- Версия: 5.0
- Активации: 5
При достижении TargetProfit, эксперта нужно перезапускать - так как он делает реальный-стоп
1.) News_Filter для FXDreema содержит алгоритм работы с встроенным экономическим календарем MQL5 (CalendarValueHistory, CalendarEventById)
Механизм новостного фильтра: Фильтр загружает события из календаря MetaTrader 5 по заданным валютам (News_Currencies) и уровням важности (High / Medium). Функция NewsFilterActive() проверяет,
находится ли текущее время сервера в окне до или после публикации новости.
Правило: Фильтр новостей должен блокировать открытие только первой сделки новой сетки.
Уже открытые сетки должны продолжать усредняться и закрываться без вмешательства фильтра.
Ограничение тестера стратегий MT5
Функции MQL5 Economic Calendar (CalendarValueHistory) работают только на реальных или демо-счетах в режиме онлайн и не отдают исторические данные в стандартном тестере стратегий (!MQLInfoInteger(MQL_TESTER)).
2.) Ниже представлен разбор функций, математических формул и точности
Функция g(x): — Расчет лотности (Изначально метод был популяризирован французским математиком Полем Пьером Леви для азартных игр (рулетки).
В трейдинге суть метода заключается в том, что после каждой проигрышной сделки объем следующей позиции увеличивается
(чаще всего удваивается) так, чтобы первый же разворот цены в нужную сторону покрыл все предыдущие убытки.
Точность и погрешность:В коде используется функция NormalizeDouble(..., 2).
Это критически важное округление до 2 знаков после запятой.
Шаг изменения лота у большинства брокеров равен 0.01.
Если математическая функция выдаст объем 0.015, брокер отклонит ордер (ошибка Invalid Volume).
Точность здесь ограничена спецификацией торгового сервера.)
Функция s(x): — Затраты на спред
Назначение: Рассчитывает суммарные потери на спред (комиссию брокера, заложенную в разницу между ценой Bid и Ask)
для всей серии открытых ордеров. (Происхождение и теория: Это стандартная бухгалтерская формула учета транзакционных издержек.
При каждом открытии ордера вы начинаете с минуса (спреда). Чтобы сетка закрылась в реальный плюс,
этот совокупный минус должен быть компенсирован движением цены.)
Функция t(x): — Расчет целевого уровня (Take Profit) -
Назначение: Определяет, на каком расстоянии (в пунктах) от цены открытия самого первого (нулевого) ордера должен находиться уровень
Take Profit всей сетки, чтобы закрыть её с заданным профитом.) (Первая часть уравнения (дробь) — это формула средневзвешенной цены (Weighted Average Price).
В физике это называется поиском «центра масс».
Она вычисляет точку абсолютного безубытка (Breakeven Point) сетки.
Поскольку цена ушла против первого ордера, точка безубытка находится где-то между первым и последним ордером,
смещенная в сторону самых крупных (последних) лотов.
Вычитание TP из этой дроби смещает итоговый уровень ближе к текущей рыночной цене (сокращает дистанцию от первого ордера),
чтобы при достижении этой точки сетка не просто вышла в ноль, но и заработала TP пунктов прибыли.
Данная математика лежит в основе стратегии усреднения долларовой стоимости (Dollar Cost Averaging, DCA).
Точность и погрешность:Расчет абсолютно математически точен, но на реальном рынке он имеет допустимую погрешность из-за:Плавающего спреда
(в формуле шаг сетки идеален, а в реальности ордера открываются с небольшим смещением).)
Функция c(x) — Расчет текущей просадки
Назначение: Оценивает максимальную теоретическую просадку (плавающий убыток, Drawdown)
в валюте депозита / пунктах на момент открытия x-го колена.
Происхождение и теория:Эта формула относится к теории управления рисками (Risk Management).
Понятие «Drawdown» (Просадка) отражает снижение баланса от пика до минимума в процессе торговли.
В алгоритмическом трейдинге эта формула используется для стресс-тестирования: она позволяет советнику заранее рассчитать,
хватит ли маржи и депозита на открытие следующего ордера сетки.
Если totalTheoreticalRisk > c::Max_Theoretical_Risk (Блок безопасности в коде),
советник понимает, что математическое ожидание убытка превысило лимит, и принудительно рубит сетку (Close On Risk Limit) для спасения остатков депозита.
Итоги по источникам и теории
Эти формулы не являются секретной авторской разработкой.
Они представляют собой консолидированную математическую базу,
которую можно найти:В учебниках по теории вероятностей (раздел мартингалов и теории игр).На форумах алготрейдеров (MQL5.com, ForexFactory), где обсуждаются механики «усреднителей» (Ilan, Setka, Smart Recovery).В базовой экономике (формула средневзвешенного значения для расчета точки безубыточности).Резюме точности ядра: Математическое ядро из вашего кода строит идеальную теоретическую модель сетки в вакууме (пунктах). Однако, поскольку реальный рынок имеет плавающий спред и проскальзывания, автор кода очень грамотно добавил функцию CheckSafeCloseByProfit(). Она компенсирует все погрешности (свопы, комиссии брокера) путем независимого подсчета живых денег на эквити: totalEquityProfit += (profit + swap + commission);. Это делает систему отказоустойчивой.)
