Стратегия Averaging By Signal
Обзор
Averaging By Signal Strategy — это порт советника MetaTrader AveragingBySignal.mq4 на высокоуровневый API StockSharp. Оригинальный эксперт объединял вход по пересечению скользящих средних, мартингейл-усреднение, общее тейк-профит-сопровождение и опциональный трейлинг, активный только для первой сделки. Версия на C# воспроизводит те же элементы и адаптирует их под неттинговую модель исполнения StockSharp и систему индикаторов библиотеки.
Логика торговли
- Подписка на выбранный таймфрейм (
CandleType) и расчёт двух скользящих средних с заданными периодами и методами (FastPeriod/FastMethod,SlowPeriod/SlowMethod). - Анализ только закрытых свечей: после формирования бара сравниваются предыдущие и текущие значения обеих средних, чтобы выявить пересечение.
- Сигналы:
- быстрое пересечение вверх → длинный сигнал;
- быстрое пересечение вниз → короткий сигнал;
- отсутствие пересечения → никаких действий.
- При новом длинном сигнале и отсутствии открытой длинной корзины отправляется рыночная заявка на покупку с базовым объёмом.
- При новом коротком сигнале аналогично открывается первая короткая позиция.
- Правила усреднения:
- расстояние до следующего слоя задаётся параметром
LayerDistancePipsв пипсах MetaTrader; - если
AveragingBySignal = true, дополнительные сделки разрешены только после подтверждающего сигнала; приfalseдостаточно достижения ценового уровня; - логика для коротких позиций зеркальная;
- объём каждой новой сделки рассчитывается по выбранному режиму
LotSizing, количество сделок ограниченоMaxLayers.
- расстояние до следующего слоя задаётся параметром
- Управление корзиной:
- все исполненные ордера сохраняются по принципу FIFO, чтобы восстановить среднюю цену длинной и короткой корзины;
- общий тейк-профит рассчитывается как средняя цена ±
TakeProfitPips. Достижение уровня закрывает всю корзину одной операцией; - если
EnableTrailingвключён и в корзине только один ордер, послеTrailingStartPipsприбыли активируется трейлинг. Стоп подтягивается при улучшении цены минимум наTrailingStepPips.
- Стратегия работает в неттинговой схеме: противоположные сигналы сначала гасят текущую позицию, затем формируют новую корзину.
Управление объёмом и расчёт пипсов
InitialVolumeзадаёт базовый лот. При режимеLotSizing = Multiplierкаждый следующий слой умножает базу наMultiplier^номер слоя, как в MQL.- Запрашиваемый объём приводится к
VolumeStep,MinVolumeиMaxVolumeинструмента, чтобы заявки соответствовали биржевым ограничениям. - Размер пипса вычисляется из
Security.PriceStepс учётом «двойных» котировок: пятизначные пары используют шаг 0.0001, четырёхзначные — исходный шаг.
Параметры
| Имя | Тип | Значение по умолчанию | Описание |
|---|---|---|---|
CandleType |
DataType |
таймфрейм 1 час | Таймфрейм для индикаторов. |
InitialVolume |
decimal |
0.1 |
Объём первой сделки в корзине. |
LotSizing |
LotSizingMode |
Multiplier |
Фиксированные лоты или геометрическое наращивание. |
Multiplier |
decimal |
2 |
Множитель объёма при усреднении (для режима Multiplier). |
FastPeriod |
int |
28 |
Период быстрой скользящей средней. |
FastMethod |
MovingAverageMethod |
LinearWeighted |
Метод расчёта быстрой средней. |
SlowPeriod |
int |
50 |
Период медленной скользящей средней. |
SlowMethod |
MovingAverageMethod |
Smoothed |
Метод расчёта медленной средней. |
TakeProfitPips |
int |
15 |
Расстояние общего тейк-профита (0 отключает уровень). |
AveragingBySignal |
bool |
true |
Требовать новый сигнал для открытия следующего слоя. |
LayerDistancePips |
decimal |
10 |
Минимальное неблагоприятное движение (в пипсах) до усреднения. |
MaxLayers |
int |
10 |
Максимум сделок в одну сторону вместе с первой. |
EnableTrailing |
bool |
false |
Включение трейлинг-стопа для одиночных позиций. |
TrailingStartPips |
decimal |
10 |
Прибыль, после которой активируется трейлинг. |
TrailingStepPips |
decimal |
1 |
Минимальное улучшение цены для подтягивания стопа. |
Отличия от оригинального советника
- В MetaTrader 4 допускалось хеджирование. StockSharp использует неттинг, поэтому при смене сигнала новый ордер сначала закрывает противоположный объём, затем формирует новую корзину.
- Общий тейк-профит реализован через рыночное закрытие, а не через
OrderModifyдля каждого тикета. - Трейлинг выполняется по ценам закрытия свечей. В MQL стоп обновлялся на тиковом уровне, поэтому реакция может быть немного позже, но пороговые значения совпадают.
- Проверки свободной маржи и ручное управление проскальзыванием убраны: контроль выполняется брокером StockSharp.
Рекомендации по использованию
- Убедитесь, что у инструмента корректно заполнены
PriceStep,VolumeStep,MinVolumeиMaxVolume, иначе пересчёт пипсов и объёмов будет некорректным. - Всегда держите
FastPeriodстрого меньшеSlowPeriod— стратегия автоматически остановится, если пересечение станет невозможным. - Отключайте
AveragingBySignal, если нужно классическое ценовое усреднение без подтверждающего сигнала. - На более низких таймфреймах выходы отрабатывают быстрее, но возрастает шум и число усреднений.