双 EMA 金クロスアルゴリズムの戦略


作成日: 2024-01-22 11:04:41 ニュース この記事へのトラックバック一覧です. 2024-01-22 11:04:41 ニュース
コピー: ゼロ クリック数: 303
1
懸念
1105
フォローする

双EMA黄金交叉算法策略

概要

この戦略は,快線EMAと遅線EMAの交差状況を計算することによって,黄金交差と死亡交差の取引信号の生成を実現する.快線EMAが遅線EMAを横切ると買い信号が生成され,快線EMAが遅線EMAを横切ると売れ信号が生成される.この戦略は,移動平均線の優位性を充分活用し,トレンド開始段階で取引信号を効果的に追跡し,市場傾向を追跡することができる.

戦略の原理

この戦略の核心指標は,高速EMA線と遅速EMA線である.この戦略は,2つの異なるパラメータのEMA線を設定することによって,高速EMA線を10に設定し,遅速EMA線を20に設定する.そのうちの,10日EMA線は価格変動により早く反応し,20日EMA線はより遅く反応する.短期EMA線が長期EMA線を横切ると,短期平均線が長期平均線を上向きにリードし,市場が強勢状態に入ることができることを示唆し,買い信号を発信する.逆に,短期平均線が長期平均線を横切ると,市場が強勢状態に入ることができることを示唆し,売り信号を発信する.

急速なEMAの交差原理により,この戦略は市場のトレンドの転換時刻を充分に把握し,適切なタイミングで取引信号を生成することができる.同時に,EMA指標自体は,市場の波動時に頻繁に取引を開くのを避けるための偽波信号をフィルタリングする能力を持っています.これは,間違った取引を減らすと同時に,市場の転換点を捉えることができ,高い収益性を有します.

優位性分析

  • 市場転換点を捉える EMAの交差原理を利用し,収益性が高い
  • 高速EMA線と低速EMA線が協力して使用され,それぞれの優位性を発揮する.
  • EMAは自己フィルタリング作用を持ち,誤った取引を減らすことができます.
  • シンプルで理解しやすく最適化
  • 拡張性があり,他の補助指標を導入し,さらに最適化できます

リスク分析

  • 双 EMA 交差点は,波動する市場では頻繁に誤った信号を生む可能性があります.
  • EMAパラメータを正しく設定していない場合,市場転換点を見逃す可能性があります.
  • 遅延があるため,ショートラインでの運用機会を逃す可能性があります.
  • 暴動に耐える力がない

上記のリスクに対して,追加指標の導入によって最適化することができる.例えば,取引のフィルタリング条件を拡大し,MACD指標を組み合わせて誤信号を回避し,自律的なEMA加速指標の応答速度を使用するなど.さらに,合理的なストップ損失と積極的なストップ抑制も必要である.

優化方向

この戦略のさらなる最適化には,以下の要素が含まれます.

  • オープン・フィルタリングを増やす:例えば,取引量指標を組み合わせて,低量偽突破を避ける
  • MACDなどの補助指標を組み合わせることで,誤った信号をさらに防ぐことができます.
  • 適応型EMAを導入し,市場状況に応じて動的にEMAパラメータを調整する
  • 複数の時間枠で共同作業し,異なる周期EMAの優位性を発揮する
  • ストップ損失戦略を最適化し,移動ストップ損失,比率ストップ損失などの方法で利益をロックする
  • ディープラーニングなどの技術でパラメータの自動最適化を実現します

概要

この戦略は,双 EMA の快速スローライン交差原理により,市場の重要な転換点を捕捉し,実物効果が強い. 補助指標と停止損失を最適化することで,戦略の安定性をさらに強化することができます. この戦略の考え方はシンプルで明確で,交易者が学ぶと使用する価値のある量化であり,拡張および最適化の大きな可能性もあります.

策略ソースコード
                
                    /*backtest
start: 2023-01-15 00:00:00
end: 2024-01-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Backtest single EMA cross", overlay=true)

qty = input(100000, "Buy quantity")

testStartYear = input(2019, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testStartMin = input(0, "Backtest Start Minute")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, testStartHour, testStartMin)
testStopYear = input(2099, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)
testPeriodBackground = input(title="Color Background?", type=input.bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and time >= testPeriodStart and time <= testPeriodStop ? 
   #00FF00 : na
testPeriod() => true


ema1 = input(10, title="Select EMA 1")
ema2 = input(20, title="Select EMA 2")

expo = ema(close, ema1)
ma = ema(close, ema2)

avg_1 = avg(expo, ma)
s2 = cross(expo, ma) ? avg_1 : na
//plot(s2, style=plot.style_line, linewidth=3, color=color.red, transp=0)

p1 = plot(expo, color=#00FFFF, linewidth=2, transp=0)
p2 = plot(ma, color=color.orange, linewidth=2, transp=0)
fill(p1, p2, color=color.white, transp=80)

longCondition = crossover(expo, ma)

shortCondition = crossunder(expo, ma)


if testPeriod()
    strategy.entry("Long", strategy.long, when=longCondition)
    strategy.entry("Short", strategy.short, when=shortCondition)

plotshape(longCondition, title = "Buy Signal", text ="BUY", textcolor =#FFFFFF , style=shape.labelup, size = size.normal, location=location.belowbar, color = #1B8112, transp = 0)
plotshape(shortCondition, title = "Sell Signal", text ="SELL", textcolor = #FFFFFF, style=shape.labeldown, size = size.normal, location=location.abovebar, color = #FF5733, transp = 0)


                
            
もっと見る