GトレンドEMA ATRスマートトレーディング戦略

EMA ATR
作成日: 2024-06-14 15:35:15 最終変更日: 2024-06-14 15:35:15
コピー: 8 クリック数: 713
1
フォロー
1617
フォロワー

GトレンドEMA ATRスマートトレーディング戦略

概要

この戦略は,Gチャネル指標を使用して市場のトレンドの方向を識別し,EMAとATR指標を組み合わせて,入場と出場のポイントを最適化します.戦略の主な考え方は,価格がGチャネルを突破してEMAの下側で多めにすると,Gチャネルを突破してEMA上側で空っぽにすると,ATRを使用してダイナミックなストップとストップポジションを設定します.

戦略原則

  1. Gチャネルの上下軌を計算する:現在の閉店価格と以前の最高価格の最低価格を使用してGチャネルの上下軌を計算する.
  2. トレンドの方向を判断する:価格とGチャネルの上下関係を見ることで多空のトレンドを判断する.
  3. 計算するEMA:指定周期のEMA値を計算する.
  4. ATRを計算する:指定された周期のATR値を計算する
  5. 買い物条件を判断する:価格がGチャネルを突破して上線してEMAより低い時,多行をトリガーし,下線を突破してEMAより高い時,空調をトリガーする.
  6. ストップ・ストップを設定:ストップ・ストップは,開設価格の-2倍ATR,ストップ・ストップは,開設価格の+4倍ATR ((多頭));ストップ・ストップは,開設価格の+2倍ATR,ストップ・ストップは,開設価格の-4倍ATR ((空頭)).
  7. 戦略のトリガー: 買い物条件を満たしたときに,相応のポジション開設操作を実行し,相応のストップ・ロスを設定する.

戦略的優位性

  1. トレンド追跡:Gチャネルを利用して市場トレンドを効果的に捉え,トレンド性のある状況に適した戦略.
  2. 動的ストップ:ATRを利用して動的にストップを調整し,市場の波動に適した状態にします.
  3. リスク管理: ストップロスは2倍ATRで設定され,取引ごとにリスクが厳密に管理されます.
  4. シンプルで使いやすい: 戦略の論理が明確で,ほとんどの投資家が使うことができます.

戦略リスク

  1. 振動: 振動する市場では,頻繁に取引するシグナルが損失を増加させる可能性があります.
  2. パラメータ最適化:異なる品種と周期には異なるパラメータが必要であり,盲目的に使用するとリスクが生じます.
  3. ブラック・スイーン事件:極端な状況では,価格が激しく変動し,停止は有効に実行できない可能性があります.

戦略最適化の方向性

  1. トレンドフィルター: MA交差,DMIなどのトレンドフィルター条件を追加し,波動的な状況での取引を減らす.
  2. パラメータ最適化:異なる品種と周期に対してパラメータ最適化を行い,最適なパラメータ組み合わせを見つける.
  3. ポジション管理:市場の変動動向に応じてポジションを調整し,資金活用率を向上させる.
  4. 組み合わせ戦略:この戦略を他の有効な戦略と組み合わせて,安定性を高める.

要約する

この戦略は,Gチャネル,EMA,ATRなどの指標を介して,シンプルで効果的なトレンド追跡取引システムを構築している.トレンド行情では良い効果を得ることができるが,震動行情では一般的である.その後,トレンドフィルタリング,パラメータ最適化,ポジション管理,組み合わせ戦略などから戦略を最適化することができ,戦略の安定性と収益性をさらに向上させる.

ストラテジーソースコード
/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-31 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// Full credit to AlexGrover: https://www.tradingview.com/script/fIvlS64B-G-Channels-Efficient-Calculation-Of-Upper-Lower-Extremities/
strategy ("G-Channel Trend Detection with EMA Strategy and ATR", shorttitle="G-Trend EMA ATR Strategy", overlay=true)

// Inputs for G-Channel
length = input(100, title="G-Channel Length")
src = input(close, title="Source")

// G-Channel Calculation
var float a = na
var float b = na
a := max(src, nz(a[1])) - (nz(a[1] - b[1]) / length)
b := min(src, nz(b[1])) + (nz(a[1] - b[1]) / length)
avg = (a + b) / 2

// G-Channel Signals
crossup = b[1] < close[1] and b > close
crossdn = a[1] < close[1] and a > close
bullish = barssince(crossdn) <= barssince(crossup)
c = bullish ? color.lime : color.red

// Plot G-Channel Average
p1 = plot(avg, "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)

// Show Buy/Sell Labels
showcross = input(true, title="Show Buy/Sell Labels")
plotshape(showcross and not bullish and bullish[1] ? avg : na, location=location.absolute, style=shape.labeldown, color=color.red, size=size.tiny, text="Sell", textcolor=color.white, transp=0, offset=-1)
plotshape(showcross and bullish and not bullish[1] ? avg : na, location=location.absolute, style=shape.labelup, color=color.lime, size=size.tiny, text="Buy", textcolor=color.white, transp=0, offset=-1)

// Inputs for EMA
emaLength = input(50, title="EMA Length")
emaValue = ema(close, emaLength)

// Plot EMA
plot(emaValue, title="EMA", color=color.blue, linewidth=1)

// ATR Calculation
atrLength = input(14, title="ATR Length")
atrValue = atr(atrLength)

// Strategy Conditions
buyCondition = bullish and close < emaValue
sellCondition = not bullish and close > emaValue

// Stop Loss and Take Profit Levels
longStopLoss = close - 2 * atrValue
longTakeProfit = close + 4 * atrValue
shortStopLoss = close + 2 * atrValue
shortTakeProfit = close - 4 * atrValue

// Execute Strategy with ATR-based stop loss and take profit
if (buyCondition)
    strategy.entry("Buy", strategy.long)
    strategy.exit("Sell", "Buy", stop=longStopLoss, limit=longTakeProfit)

if (sellCondition)
    strategy.entry("Sell", strategy.short)
    strategy.exit("Cover", "Sell", stop=shortStopLoss, limit=shortTakeProfit)

// Plot Buy/Sell Signals on the chart
plotshape(series=buyCondition, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", offset=-1)
plotshape(series=sellCondition, location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", offset=-1)