
この戦略は,カスタマイズされたGチャネルとインデックスの移動平均 (EMA) に基づくトレンド追跡取引システムである.Gチャネルは,上線 (a),下線 (b) と中線 (avg) を構成し,現在の価格と過去の価格を動的に計算してチャネル境界を決定する.この戦略は,EMAをトレンドフィルターとして組み合わせて,チャネルラインと価格の交差,EMAとの位置関係によって取引信号を生成し,市場トレンドの転換点を効果的に捕捉する.
戦略の核心的な論理には2つの主要な構成要素が含まれている.GチャネルとEMAフィルター.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")