この戦略は,Gチャネル,指数移動平均 (EMA),平均真差 (ATR) を組み合わせた多指標取引システムである.動的サポート/レジスタンスレベルとトレンド確認を通じて取引信号を識別し,ATRベースのストップ・ロストとテイク・プロフィートレベルを使用してリスクを管理する.システムは信頼性とリスク管理を強調し,堅牢な取引アプローチを求めるトレーダーに適している.
戦略の基本論理は次の主要な要素に基づいています 1. Gチャネルは,上下帯を継続的に調整し,動的サポートと抵抗レベルを計算します 2. EMA は,EMA に関する価格位置によって決まる取引の方向性による,全体的な傾向の方向性を確認する. 3. エントリー信号は,GチャンネルブレイクアウトとEMA位置確認に基づいています. 4. ストップ・ロストとテイク・プロフィートのレベルは,ATRの倍数を使用して設定され,ストップ・ロストの2倍ATRとテイク・プロフィートの4倍ATR 5. 状態追跡は,連続した重複信号を防ぐ
この戦略は,複数の成熟した技術指標を組み合わせて完全な取引システムを構築する.その強みは,多レベルの信号確認メカニズムと変動性ベースのリスク管理にあります.しかし,実際的なアプリケーションでは,特定の市場の特徴に基づいて最適化が必要です.提案された最適化方向性によって,戦略の安定性と適応性がさらに向上することができます.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-10 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("G-Channel with EMA Strategy and ATR SL/TP", shorttitle="G-EMA-ATR", overlay=true) // Input parameters length = input.int(100, title="G-Channel Length") src = input.source(close, title="Source") ema_length = input.int(50, title="EMA Length") // EMA length atr_length = input.int(14, title="ATR Length") // ATR length // G-Channel calculation var float a = na var float b = na a := math.max(src, nz(a[1])) - nz(a[1] - b[1]) / length b := math.min(src, nz(b[1])) + nz(a[1] - b[1]) / length avg = (a + b) / 2 // G-Channel cross conditions crossup = b[1] < close[1] and b > close crossdn = a[1] < close[1] and a > close bullish = ta.barssince(crossdn) <= ta.barssince(crossup) c = bullish ? color.lime : color.red // EMA calculation ema_value = ta.ema(src, ema_length) // ATR calculation atr_value = ta.atr(atr_length) // Plot G-Channel average and Close price p1 = plot(avg, "G-Channel Average", color=c, linewidth=1, transp=90) p2 = plot(close, "Close Price", color=c, linewidth=1, transp=100) fill(p1, p2, color=c, transp=90) // Plot EMA plot(ema_value, color=color.blue, linewidth=2, title="EMA") // Buy and Sell conditions buy_condition = bullish and close < ema_value sell_condition = not bullish and close > ema_value // Track the last signal state var bool last_was_buy = false var bool last_was_sell = false // ATR-based SL and TP calculations long_sl = close - 2 * atr_value // 2 ATR below the entry for SL long_tp = close + 4 * atr_value // 4 ATR above the entry for TP short_sl = close + 2 * atr_value // 2 ATR above the entry for SL (short) short_tp = close - 4 * atr_value // 4 ATR below the entry for TP (short) // Generate Buy signal only if the last signal was not Buy if (buy_condition and not last_was_buy) strategy.entry("Buy", strategy.long) strategy.exit("Exit Buy", from_entry="Buy", stop=long_sl, limit=long_tp) last_was_buy := true last_was_sell := false // Generate Sell signal only if the last signal was not Sell if (sell_condition and not last_was_sell) strategy.entry("Sell", strategy.short) strategy.exit("Exit Sell", from_entry="Sell", stop=short_sl, limit=short_tp) last_was_sell := true last_was_buy := false // Plot shapes for Buy and Sell signals plotshape(series=buy_condition and not last_was_buy, location=location.belowbar, style=shape.labelup, color=color.lime, size=size.small, text="Buy", textcolor=color.white) plotshape(series=sell_condition and not last_was_sell, location=location.abovebar, style=shape.labeldown, color=color.red, size=size.small, text="Sell", textcolor=color.white)