この戦略は,移動平均クロスオーバーとダイナミックATRストップ損失と利益を取ることをベースとした定量的な取引戦略である.この戦略は,動的ストップ損失と利益を取ることをベースとした2つの単純な移動平均値 (SMA) を使用し,異なる期間の間で取引信号を生成し,平均真の範囲 (ATR) を採用し,よりよいリスク管理のためにストップ損失と利益レベルを動的に設定する.さらに,戦略は,その強度を改善するために異なる取引セッションに基づいて取引信号をフィルタリングする.
この戦略の基本原理は,移動平均のクロスオーバーを使用して価格動向の変化を把握することです. 急速な移動平均がスロームービング平均を超えると,購入信号が生成されます.逆に,急速な移動平均がスロームービング平均を下回ると,販売信号が生成されます. 同時に,この戦略はATRを使用して,ストップ損失と利益のレベルを動的に設定します. 利益のレベルはエントリー価格プラスATRの3倍に設定され,ストップ損失レベルはエントリー価格マイナスATRの1.5倍に設定されます. さらに,この戦略は低流動性の期間中に取引を避けるために,欧州取引セッション中に取引信号のみ生成します.
この戦略は,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")