Эта стратегия представляет собой динамическую систему, основанную на двойных движущихся средних каналах, в сочетании с механизмами управления рисками. Она использует два простых движущихся средних (SMA) для построения торгового канала, с верхней полосой, рассчитанной с использованием высокой цены, и нижней полосой с использованием низкой цены. Система генерирует сигналы входа, когда цена закрытия остается выше верхней полосы в течение пяти последовательных баров, и сигналы выхода, когда цена падает ниже нижней полосы в течение пяти последовательных баров или возвращается на 25% от самой высокой точки, достигая динамического отслеживания тренда и контроля риска.
Основные принципы включают определение ценовых тенденций через двойные каналы скользящих средних и установление строгих механизмов входа и выхода: Механизм входа: требует, чтобы цена поддерживалась выше верхней полосы в течение пяти дней подряд, обеспечивая непрерывность и валидность тренда. 2. Механизм выхода: работает на двух уровнях - Выход отклонения от тренда: запускается, когда цена падает ниже нижней полосы в течение пяти дней подряд, что указывает на потенциальное изменение тренда. - Stop-Loss Exit: активируется, когда цена восстанавливается на 25% от самой высокой точки, предотвращая чрезмерные потери Управление позицией: использует фиксированный процент собственного капитала для размещения позиций, обеспечивая эффективное распределение капитала
Эта стратегия строит полную систему торговли с помощью двойных каналов скользящих средних, сочетая строгое подтверждение входа и двойные механизмы выхода для достижения эффективного отслеживания тренда и контроля рисков. Сила стратегии заключается в ее четкой логике исполнения и всеобъемлющем контроле рисков, хотя она требует оптимизации параметров для разных рыночных условий и может быть еще лучше с помощью фильтрации рыночной среды и подтверждения нескольких временных рамок. В целом, она представляет собой структурно полную и логически строгую количественную торговую стратегию, подходящую для применения на рынках с четкими тенденциями.
/*backtest start: 2025-01-02 00:00:00 end: 2025-01-09 00:00:00 period: 10m basePeriod: 10m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}] */ //@version=5 strategy("Moving Average Channel (MAC)", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100) // Parameters for Moving Averages upperMALength = input.int(10, title="Upper MA Length") lowerMALength = input.int(8, title="Lower MA Length") stopLossPercent = input.float(25.0, title="Stop Loss (%)", minval=0.1) / 100 // Calculate Moving Averages upperMA = ta.sma(high, upperMALength) lowerMA = ta.sma(low, lowerMALength) // Plot Moving Averages plot(upperMA, color=color.red, title="Upper Moving Average") plot(lowerMA, color=color.green, title="Lower Moving Average") // Initialize variables var int upperCounter = 0 var int lowerCounter = 0 var float entryPrice = na var float highestPrice = na // Update counters based on conditions if (low <= upperMA) upperCounter := 0 else upperCounter += 1 if (high >= lowerMA) lowerCounter := 0 else lowerCounter += 1 // Entry condition: 5 consecutive bars above the Upper MA if (upperCounter == 5 and strategy.position_size == 0) strategy.entry("Long", strategy.long) highestPrice := high // Initialize highest price // Update the highest price after entry if (strategy.position_size > 0) highestPrice := na(highestPrice) ? high : math.max(highestPrice, high) // Exit condition: 5 consecutive bars below the Lower MA if (lowerCounter == 5 and strategy.position_size > 0) strategy.close("Long", comment="Exit: 5 bars below Lower MA") // Stop-loss condition: Exit if market closes below 25% of the highest price since entry stopLossCondition = low < highestPrice * (1 - stopLossPercent) if (stopLossCondition and strategy.position_size > 0) strategy.close("Long", comment="Exit: Stop Loss")