Стратегия Market Master
Общее описание
MarketMasterStrategy — высокоуровневая реализация советника MetaTrader 4 "Market Master" (MQL/31326/MarketMaster EN.mq4) на платформе StockSharp. Исходный робот сочетал большую связку индикаторов, гибкое управление капиталом, фильтр по новостям и сложную систему дозагрузок. При портировании сохранена детерминированная техническая часть, чтобы стратегия работала в событийной модели StockSharp без внешних HTTP-запросов. Все расчёты выполняются на одном таймфрейме свечей, а индикаторы подключаются через Bind согласно требованиям репозитория.
Набор индикаторов
- AverageTrueRange (ATR) — две копии: основная для первого входа и "hedge"-ATR, который использовался в МТ4 при восстановительных ордерах.
- MoneyFlowIndex (MFI) — объёмно-ценовой индикатор для оценки притока/оттока капитала.
- BullsPower / BearsPower — аналоги функций
iBullsPower/iBearsPower, подтверждающие доминирование покупателей или продавцов. - StochasticOscillator — выдаёт линии
%Kи%D; параметры периода и замедления совпадают с оригиналом и могут отключаться пользователем. - ParabolicSar — две независимые SAR-кривые (основная и подтверждающая), повторяющие настройки MT4.
StockSharp автоматически прогревает индикаторы. История значений не запрашивается через GetValue(), вместо этого прошлые значения сохраняются в полях _prevAtr, _prevMfi, _prevStochasticMain и т.д., как предписано правилами портирования.
Логика сигналов
В советнике присутствовали две ветви условий — «ZERO» и «MA». Обе используют одинаковые фильтры ATR/MFI/Bulls/Bears, а различаются только работой осцилляторов. В StockSharp реализована более строгая ветка «MA», поскольку она ближе к реальным условиям торговли. Лонг подтверждается, если на закрытой свече выполняется набор условий:
- ATR растёт относительно предыдущей свечи (используется основной или hedge-ATR в зависимости от наличия позиции).
- MFI растёт, а Bears Power положителен — есть бычье давление.
- Включён стохастический фильтр:
%Kвыше%D, движется вверх и остаётся ниже порогаStochasticBuyLevel. - Включены фильтры Parabolic SAR, и цена закрытия выше обоих SAR-значений.
- Объём свечи превышает порог
MinVolume(для первого входа) илиMinHedgeVolume(для дозагрузки).
Шорт-сигнал зеркален: ATR растёт, MFI падает, Bulls Power отрицателен, %K ниже %D, цена закрытия ниже SAR, а объём соответствует требованиям.
Управление позицией
- Автообъём. Метод
CalculateBaseVolumeповторяет подход MT4: умножает баланс портфеля наRiskMultiplier, затем нормализует объём с учётомVolumeStep,MinVolumeиMaxVolumeинструмента. - Пирамидинг. При
AllowSameSignalEntries = trueдобавочные сделки используют базовый объём, умноженный наVolumeMultiplier. В StockSharp работает неттинговая модель, поэтому итоговое значениеPositionпросто увеличивается по модулю. - Обратные сигналы. Флаг
AllowOppositeEntriesопределяет, разрешено ли немедленно закрывать позицию и открываться в противоположную сторону. Если флаг выключен, стратегия только выходит из сделки и ждёт нового сигнала, полностью повторяя поведение опции "Open_opposite_signal" в MT4. - Стоп-лосс. Параметр
StopLossPoints— аналог входногоStopLossв MT4. При наличииPriceStepвызываетсяStartProtection, который выставляет защитный ордер в нужном отступе. - Торговые часы. Параметры
UseTradingWindow,TradingStart,TradingEnd,UseTradingBreak,BreakStart,BreakEndреализуют временные фильтры советника: основное окно и короткий перерыв. Сравнение времени ведётся в часовом поясе, приходящем со свечами.
Отличия от MetaTrader-версии
- Новостной фильтр. Оригинал обращался к Investing.com и DailyFX. В порте сетевые вызовы отсутствуют, поэтому новостные паузы задаются вручную через временные параметры либо внешними управляющими модулями.
- История ордеров. Функции
OrdersHistoryTotal()и вспомогательные процедуры открытия новых сделок привязывались к модели тикетов MT4. В StockSharp реализован чистый неттинг, и повторный вход разрешается, как только индикаторы снова согласованы. - Восстановительные ступени. MT4 использовал Magic Number и комментарии для различения ступеней. В C# сохранён множитель объёма (
VolumeMultiplier), но все сделки отражаются одной совокупной позицией. - Трейлинг. Блок
TrailingStop/TrailingStepработал через модификацию заявок. Базовая реализация не включает трейлинг; при необходимости его можно добавить через параметрыStartProtectionили подписку наPositionChanged.
Параметры
| Параметр | Значение по умолчанию | Описание |
|---|---|---|
OrderVolume |
1 |
Базовый объём при отключённом авторасчёте. |
UseAutoVolume |
true |
Включить расчёт объёма от капитала. |
RiskMultiplier |
10 |
Аналог Risk_Multiplier из MT4. |
VolumeMultiplier |
2 |
Множитель для повторных входов (KLot). |
MinVolume |
3000 |
Минимальный объём для первой сделки (MinVol). |
MinHedgeVolume |
3000 |
Объём для дозагрузок (MinVolH). |
AtrPeriod / AtrHedgePeriod |
14 |
Периоды основного и hedge-ATR. |
MfiPeriod |
14 |
Период Money Flow Index. |
BullBearPeriod |
14 |
Период Bulls/Bears Power. |
StochasticKPeriod / StochasticDPeriod / StochasticSlowing |
5 / 3 / 3 |
Настройки стохастика. |
StochasticBuyLevel / StochasticSellLevel |
60 / 40 |
Пороговые значения StoBuy и StoSell. |
UseStochasticFilter / UsePsarFilter / UsePsarConfirmation |
true |
Переключатели фильтров. |
PsarStep / PsarMaxStep / PsarConfirmStep / PsarConfirmMaxStep |
0.02 / 0.2 / 0.02 / 0.2 |
Параметры двух SAR. |
AllowSameSignalEntries |
false |
Разрешить пирамидинг. |
AllowOppositeEntries |
true |
Разрешить мгновенный реверс. |
UseTradingWindow |
false |
Ограничение по времени. |
TradingStart / TradingEnd |
06:00 / 18:00 |
Рабочее окно. |
UseTradingBreak |
false |
Включить паузу. |
BreakStart / BreakEnd |
06:00:01 / 06:00:02 |
Параметры перерыва. |
StopLossPoints |
0 |
Стоп-лосс в пунктах инструмента. |
CandleType |
15m TimeFrame |
Таймфрейм свечей. |
Рекомендации по использованию
- Назначьте стратегии инструмент и портфель в Designer или коде и дайте ей время на прогрев индикаторов до наступления основного окна торговли.
- Для многофреймового анализа измените
CandleTypeи параметры SAR. Все индикаторы уже подключены черезBind, поэтому дополнительная регистрация не требуется. - При расширении логики используйте
LogInfo/LogWarningдля диагностики. Код специально оставлен компактным, чтобы легко добавлять модули (например, трейлинг или дополнительные фильтры). - Помните, что стратегия оперирует чистой позицией. Если нужна тикетная схема как в MT4, оберните её в пользовательский менеджер ордеров.
Возможные расширения
- Переопределить
OnNewMyTradeили подписаться наPositionChanged, чтобы реализовать выходы по собственной логике. - Добавить внешний сервис новостей, который будет менять параметры окна торговли или останавливать стратегию перед важными событиями.
- При необходимости визуализации вызвать
CreateChartArea()иDrawIndicator()вOnStarted— в портированной версии эти вызовы опущены для ясности.
Код соблюдает правила репозитория: отступы табуляцией, использование высокоуровневого Bind, отсутствие прямых обращений к истории индикаторов и публикация всех настроек через StrategyParam.