資源の読み込みに... 荷物...

EMAの双重ゴールドクロス戦略

作者: リン・ハーンチャオチャン開催日: 2024-01-22 11:04:41
タグ:

img

概要

この戦略は,高速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自体は,誤った信号をフィルタリングし,市場の統合中に過剰な取引を回避する能力を備えている.これは,戦略が間違った取引を削減しながら市場転換点を把握することを可能にし,優れた収益性につながる.

利点分析

  • EMAのクロスオーバールールを利用して市場転換点を把握し,高い収益性を確保する
  • 利点を考慮して,速いEMA線と遅いEMA線の両方を利用します.
  • EMA の固有のノイズフィルタリング能力は誤った取引を減らす
  • 分かりやすく,最適化され,拡張できます
  • 他の補助指標を組み込むための高度な拡張性

リスク分析

  • 範囲限定市場では頻繁に誤った信号が発生する可能性があります.
  • EMA パラメータの設定が正しくない場合,主要な曲がりが欠けている可能性があります.
  • 遅延した発行は,短期間の取引機会を逃す可能性があります
  • 劇的な市場動乱に適応できない

これらのリスクに対処するために,フィルタリングルールを追加し,誤った信号を避けるためにMACDを組み合わせ,応答を加速するために適応型EMAを使用するなど,最適化が導入できます.また,適切なストップ・ロストと利益取りメカニズムも必要です.

オプティマイゼーションの方向性

さらに最適化するための潜在的な方向性には,以下が含まれます.

  • 入力信号のフィルタリングルールの追加,例えば取引量を組み合わせる
  • 補完信号のMACDのような補助指標を組み込む
  • パラメータを動的に調整するための適応型EMAの導入
  • 複数のタイムフレーム分析を適用し,異なるEMAを活用する
  • ストップ・ロスの戦略を最適化する
  • 自動パラメータ調整のためのAI技術の活用

概要

この戦略は,デュアル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)



もっと