Extreme EA (версия для StockSharp)
Extreme EA — это трендовый советник из экосистемы MetaTrader. Он совмещает две скользящие средние с фильтром Commodity Channel Index и динамическим управлением капиталом. Перенос на StockSharp использует высокоуровневый API, сохраняет торговую логику и делает все ключевые параметры доступными из интерфейса. Алгоритм работает только с закрытыми свечами и поддерживает многотаймфреймовый анализ благодаря отдельным подпискам на данные.
Описание алгоритма
- Трендовый фильтр. На таймфрейме
MaCandleTypeвычисляются быстрая и медленная скользящие. Быстрая линия отслеживает локальный импульс, медленная оценивает направление тренда. Для точного повторенияCopyBufferиз MQL стратегия хранит две последние точки медленной средней и одну актуальную точку быстрой. - Фильтр импульса. Индикатор CCI рассчитывается на собственном таймфрейме
CciCandleTypeи с выбранным типом цены. Последнее завершённое значение кэшируется и используется до появления новой свечи CCI, что соответствует механике буферов MetaTrader. - Условия входа.
- Длинная позиция открывается, когда медленная средняя растёт, быстрая растёт, а CCI опускается ниже нижнего уровня.
- Короткая позиция открывается, когда медленная средняя снижается, быстрая снижается, а CCI превышает верхний уровень.
- Условия выхода.
- Все покупки закрываются, если медленная средняя перестаёт расти.
- Все продажи закрываются, если медленная средняя перестаёт падать.
Управление риском
- MaximumRisk определяет расчётный объём сделки как долю от текущей стоимости портфеля. Если данные портфеля недоступны, используется значение
Volumeили минимально допустимый объём инструмента. - DecreaseFactor уменьшает объём после двух и более подряд убыточных сделок по формуле оригинального советника
volume - volume * losses / DecreaseFactor. - HistoryDays ограничивает длительность учёта серии убытков. Если новая закрывающая сделка произошла позже указанного срока, счётчик сбрасывается перед пересчётом объёма.
- MaxPositions задаёт максимум усреднений в одном направлении и блокирует новые входы, когда лимит достигнут.
Параметры
| Имя | Тип | Значение по умолчанию | Описание |
|---|---|---|---|
MaximumRisk |
decimal |
0.05 |
Доля капитала, используемая для расчёта объёма позиции. |
DecreaseFactor |
decimal |
6 |
Коэффициент уменьшения объёма после серии убытков (0 отключает механизм). |
HistoryDays |
int |
60 |
Максимальный возраст сделок, участвующих в подсчёте серии убытков. |
MaxPositions |
int |
3 |
Максимальное число одновременно открытых позиций в одном направлении. |
FastMaPeriod |
int |
15 |
Период быстрой скользящей средней. |
SlowMaPeriod |
int |
75 |
Период медленной скользящей средней. |
CciPeriod |
int |
12 |
Количество баров для расчёта CCI. |
CciUpperLevel |
decimal |
50 |
Верхний порог CCI для сигналов на продажу. |
CciLowerLevel |
decimal |
-50 |
Нижний порог CCI для сигналов на покупку. |
MaCandleType |
DataType |
15m |
Таймфрейм скользящих средних и торговли. |
CciCandleType |
DataType |
30m |
Таймфрейм, на котором вычисляется CCI. |
MaMethod |
MaMethod |
Exponential |
Метод сглаживания (Simple, Exponential, Smoothed, LinearWeighted). |
MaPriceMode |
AppliedPriceMode |
Median |
Тип цены для скользящих средних. |
CciPriceMode |
AppliedPriceMode |
Typical |
Тип цены для индикатора CCI. |
Особенности реализации
- Если таймфреймы совпадают, одна подписка на свечи одновременно обновляет и скользящие средние, и CCI. При различающихся таймфреймах создаётся вторая подписка только для CCI.
- Внутренние поля хранят последние значения индикаторов, что позволяет проверять условия
ma_slow_array[1],ma_slow_array[2]иma_fast_array[0]без ручного доступа к буферам. - Объём заявок нормализуется по минимальному шагу, минимальному и максимальному объёму инструмента, чтобы снизить риск отклонённых сделок.
- Блок управления риском фиксирует цену входа и выхода последней сделки и на этой основе пересчитывает серию убытков, заменяя вызовы
HistoryDealGetиз MQL.
Отличия от версии MetaTrader
- Функции
FreeMarginCheck,MarginCheckиHistorySelectзаменены доступными показателями портфеля StockSharp и внутренним счётчиком убытков. - StockSharp использует модель чистой позиции, поэтому закрытие приводит к обнулению совокупного объёма в соответствующем направлении.
- Журналирование оригинала удалено — используйте стандартные средства логирования StockSharp.