トリプルEMA重ね合わせブレイクアウト戦略


作成日: 2023-12-28 15:56:54 最終変更日: 2023-12-28 15:56:54
コピー: 0 クリック数: 680
1
フォロー
1621
フォロワー

トリプルEMA重ね合わせブレイクアウト戦略

概要

三重EMAの重複突破策は,3重指数移動平均指標を用いて市場のトレンド方向を判断し,トレンド突破点で入場を行う.この策は,同時にK線形判断信号の優劣を組み合わせている.

戦略原則

この戦略は以下の原則に基づいています.

  1. 3つの異なる周期のEMA線 ((200日線,50日線,20日線) を使って,市場の大傾向,中期傾向および短期傾向を判断する.

  2. 短期トレンドのEMA ((20日線) が中期EMA ((50日線) を上方突破すると,買い信号が生じ,下方突破すると,売り信号が生じます.

  3. K線形を組み合わせて,突破信号の信頼性を判断する.第2のK線の閉盘価格が前日の最高価格 (最低価格) よりも高 (以下) ければ,信頼性の高い突破とみなされる.

  4. 合理的な波動範囲を超えたリスクを回避するために,ストップ・ストップ・ポイントを設定します.

戦略的優位性

  1. 複数のEMA指標を用いて傾向を判断し,判断の精度を高めます.

  2. K線形フィルタリングとK線形フィルタリングの組み合わせにより,不必要な取引リスクを回避する.

  3. ストップ・ストップ・ロスを設定し,単一損失を効果的に制御する.

戦略リスク

  1. EMA指数は,波動的な状況では,多くの誤った信号を生み出し,市場動向を効果的に判断することができません.

  2. 単一の指標の組み合わせはシンプルで,複雑な状況の判断は悪い.

  3. 高手数料の市場で,取引コストを考慮せずに,利益を得ることができません.

戦略の最適化

  1. MACD,KDJなどの他の指標を導入して,判断の正確性を高める指標群を形成することができる.

  2. 異なる品種,周期パラメータに応じてテスト最適化が可能で,戦略パラメータをその品種特性により適合させる.

  3. 取引量指標を導入することで,低量の誤導信号を回避できます.

要約する

三重EMAは,突破策の全体的な考え方を明確に理解しやすく,EMAによって市場の主動トレンドを判断し,トレンドが転じるときに入場するタイミングを探します. しかし,この戦略には一定の制限があり,複雑な状況にうまく対処することはできません.他の指標の組み合わせと使用することを推奨し,パラメータを最適化して,より広範な市場環境に適応します.

ストラテジーソースコード
/*backtest
start: 2022-12-21 00:00:00
end: 2023-12-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("GHG RETRACEMENT MODE 1", overlay=true)

entryLevel1 = input(0.5, "ENTRY LEVEL 1")
entryLevel2 = input(0.25, "ENTRY LEVEL 2")
entryLevel3 = input(0.0, "ENTRY LEVEL 3")

stopLevel = input(-0.35, "STOP LEVEL")
tpLevel = input(0.88, "TP LEVEL")
dontUseEma = input(false, "Don't Use EMA")


get_level(level, level100, level0) =>
    level * (level100 - level0) + level0

buySignal = close[2] < open[2] and close[1] > open[1] and close[0] > open[0] and high[0] > open[2] and high[1] < high[2]
sellSignal = close[2] > open[2] and close[1] < open[1] and close[0] < open[0] and low[0] < open[2] and low[1] > low[2]

if buySignal and (close[0] > ta.ema(close, 200) or dontUseEma)
    l = label.new(bar_index, na)
    entryPrice1 = get_level(entryLevel1, high[0], low[2])
    entryPrice2 = get_level(entryLevel2, high[0], low[2])
    entryPrice3 = get_level(entryLevel3, high[0], low[2])
    
    exitPrice = get_level(tpLevel, high[0], low[2])
    stopPrice = get_level(stopLevel, high[0], low[2])
    
    strategy.order("BUY 1", strategy.long, comment="BUY 1", limit=entryPrice1)
    strategy.exit("exit", "BUY 1", limit=high[0], stop=stopPrice)
    strategy.order("BUY 2", strategy.long, comment="BUY 2", limit=entryPrice2)
    strategy.exit("exit", "BUY 2", limit=high[0], stop=stopPrice)

    label.set_text(l, "Buy => " + str.tostring(close[2]) + "\nSL=> " + str.tostring(stopPrice) + "\nTP => " + str.tostring(exitPrice) )
    label.set_color(l, color.green)
    label.set_yloc(l, yloc.belowbar)
    label.set_style(l, label.style_label_up)
    
if sellSignal and (close[0] < ta.ema(close, 200) or dontUseEma)
    a = label.new(bar_index, na)
    entryPrice1 = get_level(entryLevel1, low[0], high[2])
    entryPrice2 = get_level(entryLevel2, low[0], high[2])
    entryPrice3 = get_level(entryLevel3, low[0], high[2])
    
    exitPrice = get_level(tpLevel, low[0], high[2])
    stopPrice = get_level(stopLevel,low[0], high[2])
    
    strategy.order("SELL 1", strategy.short, comment="SELL 1", limit=entryPrice1)
    strategy.exit("exit", "SELL 1", limit=low[0], stop=stopPrice) 
    strategy.order("SELL 2", strategy.short, comment="SELL 2", limit=entryPrice2)
    strategy.exit("exit", "SELL 2", limit=low[0], stop=stopPrice) 

    label.set_text(a,"Sell => " + str.tostring(close[2]) + "\nSL=> " + str.tostring(stopPrice) + "\nTP => " + str.tostring(exitPrice) )
    label.set_color(a, color.red)
    label.set_yloc(a, yloc.abovebar)
    label.set_style(a, label.style_label_down)