Эта стратегия является количественной торговой стратегией, основанной на скользящих средних кроссоверах и динамическом ATR стоп-лосс и прибыли. Стратегия использует две простые скользящие средние (SMA) с разными периодами для генерации торговых сигналов при использовании среднего истинного диапазона (ATR) для динамического установления стоп-лосса и уровня прибыли для лучшего контроля риска. Кроме того, стратегия фильтрует торговые сигналы на основе различных торговых сессий для повышения ее надежности.
Основной принцип этой стратегии заключается в том, чтобы зафиксировать изменения в ценовых тенденциях с использованием перекресток скользящей средней. Когда быстрая скользящая средняя пересекает более медленной скользящей средней, генерируется сигнал покупки; наоборот, когда быстрая скользящая средняя пересекает ниже медленной скользящей средней, генерируется сигнал продажи. Одновременно стратегия использует ATR для динамического установления уровней стоп-лосса и прибыли. Уровень прибыли устанавливается по цене входа плюс 3 раза ATR, в то время как уровень стоп-лосса устанавливается по цене входа минус 1,5 раза ATR. Кроме того, стратегия генерирует торговые сигналы только во время европейской торговой сессии, чтобы избежать торговли в периоды низкой ликвидности.
Эта стратегия представляет собой простую и понятную стратегию, которая отслеживает тенденции цен с использованием скользящих средних перекресток при одновременном контроле риска с помощью ATR. Хотя стратегия имеет определенные риски, ее можно улучшить с помощью оптимизации параметров, фильтрации сигналов и улучшения управления рисками. Для начинающих эта стратегия служит отличным примером обучения и практики.
/*backtest start: 2024-04-01 00:00:00 end: 2024-04-30 23:59:59 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Enhanced Moving Average Crossover Strategy", overlay=true) // Input parameters fastLength = input(10, title="Fast MA Length") slowLength = input(50, title="Slow MA Length") atrLength = input(14, title="ATR Length") riskPerTrade = input(1, title="Risk Per Trade (%)") / 100 // Time-based conditions isLondonSession = hour >= 8 and hour <= 15 isAsianSession = hour >= 0 and hour <= 7 isEuropeanSession = hour >= 7 and hour <= 14 // Moving Averages fastMA = ta.sma(close, fastLength) slowMA = ta.sma(close, slowLength) // Average True Range (ATR) for dynamic stop loss and take profit atr = ta.atr(atrLength) // Buy and Sell Conditions buySignal = ta.crossover(fastMA, slowMA) sellSignal = ta.crossunder(fastMA, slowMA) // Dynamic stop loss and take profit stopLoss = close - atr * 1.5 takeProfit = close + atr * 3 // Strategy Logic if (buySignal and isEuropeanSession) strategy.entry("Buy", strategy.long) strategy.exit("Take Profit/Stop Loss", "Buy", limit=takeProfit, stop=stopLoss) if (sellSignal and isEuropeanSession) strategy.entry("Sell", strategy.short) strategy.exit("Take Profit/Stop Loss", "Sell", limit=takeProfit, stop=stopLoss) // Plotting plot(fastMA, color=color.blue, title="Fast MA") plot(slowMA, color=color.red, title="Slow MA") plotshape(series=buySignal, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY") plotshape(series=sellSignal, location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")