Стратегия AMA Trader
Общее описание
Стратегия AMA Trader воспроизводит логику оригинального советника MetaTrader 5 «AMA Trader». В основе лежит комбинация адаптивной скользящей средней Кауфмана (AMA) и индикатора RSI. Стратегия добавляет позицию против краткосрочных откатов, если цена остаётся по ту сторону AMA. Реализация на StockSharp использует высокоуровневый API, подписку на свечи и привязку индикаторов, поэтому поведение остаётся близким к исходной версии и одновременно полностью совместимым с инфраструктурой StockSharp.
Допущения
- Инструмент: спот‑FX, CFD и другие трендовые рынки, где допустимо усреднение.
- Таймфрейм: по умолчанию минутные свечи, можно изменить через параметр
CandleType. - Сессии: специальных фильтров по времени нет, расчёт выполняется на каждой закрывшейся свече.
Индикаторы
- Kaufman Adaptive Moving Average (AMA)
- Параметры
AmaLength,AmaFastPeriodиAmaSlowPeriodзадают сглаживание. - Определяет основное направление. Покупки рассматриваются только при закрытии выше AMA, продажи — при закрытии ниже AMA.
- Параметры
- Relative Strength Index (RSI)
- Рассчитывается по закрытию свечи с периодом
RsiLength. - Параметр
StepLengthзадаёт, сколько последних значений RSI должны подтверждать сигнал. Значение 0 эквивалентно проверке только последнего значения (как в исходном советнике). - Уровни
RsiLevelDown(30) иRsiLevelUp(70) определяют зоны перепроданности и перекупленности.
- Рассчитывается по закрытию свечи с периодом
Логика торговли
- Валидация бара
- Торговля возможна только на закрытых свечах и при готовности стратегии (онлайн‑режим, разрешение на торги).
- Контроль прибыли до появления нового сигнала
- При превышении плавающей прибыли порога
ProfitTargetстратегия полностью закрывает позицию и ждёт следующего события. - При росте реализованной прибыли с момента последнего сброса больше, чем
WithdrawalAmount, все позиции закрываются, а контрольная точка по прибыли обновляется. Это аналогTesterWithdrawalв MetaTrader, но без фактического вывода средств.
- При превышении плавающей прибыли порога
- Открытие длинной позиции
- Условие: закрытие выше AMA и хотя бы одно значение RSI ниже
RsiLevelDown. - Действие: рыночная покупка. Если текущая длинная позиция убыточна (отрицательная нереализованная PnL), выполняется дополнительная покупка для усреднения.
- Условие: закрытие выше AMA и хотя бы одно значение RSI ниже
- Открытие короткой позиции
- Условие: закрытие ниже AMA и хотя бы одно значение RSI выше
RsiLevelUp. - Действие: рыночная продажа. При убытке по шорт‑позиции добавляется дополнительная продажа.
- Условие: закрытие ниже AMA и хотя бы одно значение RSI выше
- Учёт позиций
- Обработчик
OnOwnTradeReceivedотслеживает фактические сделки, поддерживает средние цены и объёмы для лонгов и шортов. Это позволяет корректно оценивать текущую PnL без запретных агрегирующих методов.
- Обработчик
Управление риском
- Объём усреднения: каждая сделка исполняется фиксированным объёмом
LotSize. При убытке стратегия добавляет ещё один ордер в том же направлении. - Цель по плавающей прибыли:
ProfitTarget(по умолчанию 50 денежных единиц) закрывает все позиции при достижении порога. - Контроль реализованной прибыли:
WithdrawalAmount(по умолчанию 1000) закрывает позиции, когда накопленная реализованная прибыль превышает заданное значение; после закрытия контрольная точка обнуляется. - Защитные ордера: дополнительные стоп‑приказы не используются, при необходимости их следует добавить внешними средствами.
Параметры
| Параметр | Описание |
|---|---|
CandleType |
Тип свечей/таймфрейм для расчёта индикаторов. |
LotSize |
Объём каждой рыночной заявки. |
RsiLength |
Период RSI. |
StepLength |
Количество последних значений RSI для проверки (0 = только текущая свеча). |
RsiLevelUp |
Уровень RSI для сигналов на продажу. |
RsiLevelDown |
Уровень RSI для сигналов на покупку. |
AmaLength |
Период сглаживания AMA. |
AmaFastPeriod |
Быстрый коэффициент сглаживания AMA. |
AmaSlowPeriod |
Медленный коэффициент сглаживания AMA. |
ProfitTarget |
Порог плавающей прибыли для принудительного закрытия (0 отключает правило). |
WithdrawalAmount |
Прирост реализованной прибыли для принудительного закрытия (0 отключает правило). |
Особенности реализации на StockSharp
- Используется высокоуровневый API: подписка через
SubscribeCandles, привязка индикаторов методом.Bind, обработка готовых значений без ручного обращения к буферам. - Для оценки текущей PnL поддерживаются частные накопители объёма и средней цены, обновляемые в
OnOwnTradeReceived. - Заявки отправляются методами
BuyMarketиSellMarket, объём берётся из параметраLotSize. Для закрытия используется явная передача текущего объёма, чтобы ликвидировать как лонг, так и шорт. - Вместо проверки ask/bid, как в MetaTrader, берётся цена закрытия свечи — это максимально близкое приближение в свечной модели StockSharp.
Отличия от версии MetaTrader
WithdrawalAmountне вызываетTesterWithdrawal, а только обновляет внутреннюю точку отсчёта прибыли.- Параметры смещения AMA и выбор цены для расчёта не перенесены, поскольку стандартный индикатор StockSharp работает по цене закрытия.
- Комиссии и свопы не добавляются вручную к расчёту плавающей прибыли — они учитываются торговой инфраструктурой при исполнении сделок.
Рекомендации по использованию
- При агрессивном усреднении целесообразно включить портфельные ограничения или модули защиты позиций.
- Подбирайте параметры AMA и RSI под конкретный инструмент: для быстрых рынков полезно уменьшать период AMA и расширять пороги RSI.
- При значении
StepLength> 1 следите за просадкой — стратегия может добавлять несколько ордеров подряд во время сильного контртренда.