この戦略は,Coral Trend インジケーターとドンチアンチャネルを組み合わせたトレンドフォローシステムである.市場の勢いを正確に把握し,トレンドブレイクの複数の確認を提供することで,振動する市場の偽信号を効果的にフィルタリングし,取引の精度を向上させる.この戦略は,異なる市場条件で安定したパフォーマンスを維持するためにパラメータを動的に調整できる適応型移動平均技術を使用する.
基本論理は2つの主要指標のシネージ効果に基づいています 1. コラルトレンドインジケーター: (高 + 低 + 閉じる) /3の平滑値を計算し,現在の閉値と比較してトレンド方向を決定します. 2. ドンチアンチャネル:利用者が定義した期間中の最高値と最低値を計算することによって,価格がキーレベルを突破するかどうかを決定する.
このシステムは,両方の指標が上昇傾向を確認するときに長信号 (coralTrendVal == 1 と donchianTrendVal == 1) を生成し,両方の指標が下落傾向を確認するときに短信号 (coralTrendVal == -1 と donchianTrendVal == -1) を生成する.この戦略は,現在のトレンド状態を追跡し,重複信号を避けるためにステートマシン (trendState) を使用する.
この戦略は,複数のトレンド確認メカニズムと柔軟なパラメータ設定を通じて,強力なトレンドフォローシステムを達成する.適応性の高い機能と明確なシグナルロジックは,さまざまな取引タイムフレームと市場環境に適している.提案された最適化方向性を通じて,戦略パフォーマンスをさらに改善する余地がある.ライブ取引に適用する際には,特定の取引ツールの特徴に応じてリスク管理措置を組み込み,パラメータを最適化することを推奨する.
/*backtest start: 2019-12-23 08:00:00 end: 2025-01-16 00:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}] */ //@version=5 strategy("Coral Tides Strategy", shorttitle="CoralTidesStrat", overlay=true) // === Inputs === dlen = input.int(defval=20, title="Donchian Channel Period", minval=10) coralPeriod = input.int(defval=14, title="Coral Trend Period") // === Functions === // Coral Trend Calculation coralTrend(period) => smooth = (high + low + close) / 3 coral = ta.ema(smooth, period) trend = 0 trend := close > coral ? 1 : close < coral ? -1 : trend[1] [trend, coral] // Donchian Trend Calculation donchianTrend(len) => hh = ta.highest(high, len) ll = ta.lowest(low, len) trend = 0 trend := close > hh[1] ? 1 : close < ll[1] ? -1 : trend[1] trend // === Trend Calculation === [coralTrendVal, coralLine] = coralTrend(coralPeriod) donchianTrendVal = donchianTrend(dlen) // === Signal Logic === var int trendState = 0 buySignal = false sellSignal = false if (coralTrendVal == 1 and donchianTrendVal == 1 and trendState != 1) buySignal := true sellSignal := false trendState := 1 else if (coralTrendVal == -1 and donchianTrendVal == -1 and trendState != -1) sellSignal := true buySignal := false trendState := -1 else buySignal := false sellSignal := false // === Strategy Execution === // Entry Signals if (buySignal) strategy.entry("Long", strategy.long) if (sellSignal) strategy.entry("Short", strategy.short) // === Plots === // Coral Trend Line plot(coralLine, color=color.green, linewidth=2, title="Coral Trend Line") // Buy/Sell Signal Labels if buySignal label.new(bar_index, low, "BUY", color=color.green, textcolor=color.white, style=label.style_label_down, size=size.normal) if sellSignal label.new(bar_index, high, "SELL", color=color.red, textcolor=color.white, style=label.style_label_up, size=size.normal)