この戦略は,カスタムGチャネルと指数関数移動平均 (EMA) をベースとしたトレンドフォローする取引システムである.Gチャネルは,上 (a),下 (b),中 (avg) の線で構成され,現在の価格と過去の価格の動的計算を通じてチャネル境界を決定する.この戦略は,EMAをトレンドフィルターとして組み合わせ,チャネルラインと相関的な位置との価格クロスオーバーを通じて取引信号を生成し,市場のトレンド逆転点を効果的に捕捉する.
GチャネルとEMAフィルターという2つの主要なコンポーネントで構成される.Gチャネル計算は,現在の価格と歴史的なデータに基づいており,適応アルゴリズムを通じてチャネル幅を動的に調整する.上線 (a) は,チャネル幅と長さのパラメータによって調整された現在の価格と以前の上線の最大値を取ります.下線 (b) は最低値に類似した方法を使用します.中間線は算術平均値です.取引信号は,チャネルラインと価格クロスオーバーとEMAとの関係的な位置を組み合わせることで起動されます.価格がEMA以下で下線を超えると購入信号が発生し,EMA以下で価格が上線を超えると販売信号が発生します.
GチャネルとEMAトレンドフィルター取引システムは,チャネルブレイクとトレンドフォローを組み合わせた完全な取引戦略である.Gチャネルのダイナミックな特性とEMAのトレンド確認機能を通じて,戦略は取引リスクを制御しながら,市場のターニングポイントを効果的に把握する.いくつかの制限があるにもかかわらず,戦略の全体的なパフォーマンスは提案された最適化方向によってさらに改善することができる.この戦略はトレンド市場に適しており,より複雑な取引システムを構築するための基礎の枠組みとして機能することができる.
/*backtest start: 2024-11-04 00:00:00 end: 2024-12-04 00:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("G-Channel with EMA Strategy", overlay=true) // G-Channel Indicator length = input.int(100, title="G-Channel Length") src = input(close, title="Source") var float a = na var float b = na a := math.max(src, nz(a[1])) - (nz(a[1]) - nz(b[1])) / length b := math.min(src, nz(b[1])) + (nz(a[1]) - nz(b[1])) / length avg = (a + b) / 2 // G-Channel buy/sell signals crossup = ta.crossover(close, b) crossdn = ta.crossunder(close, a) bullish = ta.barssince(crossdn) <= ta.barssince(crossup) // EMA Indicator emaLength = input.int(200, title="EMA Length") ema = ta.ema(close, emaLength) // Buy Condition: G-Channel gives a buy signal and price is below EMA buySignal = bullish and close < ema // Sell Condition: G-Channel gives a sell signal and price is above EMA sellSignal = not bullish and close > ema // Plotting the G-Channel and EMA plot(a, title="Upper", color=color.blue, linewidth=2, transp=100) plot(b, title="Lower", color=color.blue, linewidth=2, transp=100) plot(avg, title="Average", color=bullish ? color.lime : color.red, linewidth=1, transp=90) plot(ema, title="EMA", color=color.orange, linewidth=2) // Strategy Execution if (buySignal) strategy.entry("Buy", strategy.long) if (sellSignal) strategy.entry("Sell", strategy.short) // Plot Buy/Sell Signals plotshape(buySignal, location=location.belowbar, color=color.green, style=shape.labelup, text="Buy") plotshape(sellSignal, location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")