この戦略は,リスク管理メカニズムと組み合わせた2つの移動平均チャネルに基づく動的トレンドフォローシステムである. 2つのシンプル・ムービング・平均値 (SMA) を活用して取引チャネルを構築し,上帯は高価格,下帯は低価格を使用して計算する. 閉盤価格が5連鎖バーで上帯以上にとどまるときにエントリー信号,価格が5連鎖バーで下帯を下回るか最高点から25%をリセットするときにアウトシグナルを生成し,動的なトレンド追跡とリスク制御を達成する.
基本原則は,二重移動平均のチャネルを通じて価格動向を把握し,厳格なエントリー・アウトリースメカニズムを確立することです. 1. 入力メカニズム: 5 日連続で上位帯を上位に維持し,トレンドの継続性と有効性を確保する 2. 脱出メカニズム: 2 つのレベルで動作する - トレンドデバイエーション エクジット: 5 日連続で価格が下帯を下回るときに発生し,潜在的なトレンド逆転を示します. - ストップ・ロスの出口:価格が最高点から25%引き下げられ,過剰な損失を防ぐとき,アクティベーション 3. ポジション管理: ポジションのサイズの決定のために,口座資本の固定パーセントを使用し,効果的な資本配分を保証する.
この戦略は,効果的なトレンド追跡とリスク管理を達成するために,厳格なエントリー確認とダブルエグジットメカニズムを組み合わせ,ダブル移動平均チャネルを通じて完全なトレンドフォロー取引システムを構築する.この戦略の強みは,明確な実行論理と包括的なリスク管理にあります.しかし,異なる市場環境のためにパラメータ最適化が必要であり,市場環境フィルタリングと複数のタイムフレームの確認によってさらに改善することができます.全体として,それは明確なトレンドのある市場で適用するのに適した構造的に完全で論理的に厳格な定量取引戦略を表します.
/*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")