EMA指標に基づくトレンド追跡フラグパターン戦略

作者: リン・ハーンチャオチャン, 日付: 2023年11月27日 15:30:29
タグ:

img

概要

この戦略は主にEMAと標準偏差指標を使用して,EMAクロス信号を通じてトレンド方向を決定し,標準偏差を持つブレイクアウト信号を探し,購入・販売信号を生成する.これは,価格が上線を突破すると購入信号を生成し,価格が下線を突破すると販売信号を生成するトレンドトラッキングタイプの戦略に属している.

戦略の論理

戦略は主に3つの部分で構成されています.

  1. EMA差 (s2): 価格トレンドの方向性を決定するために,速い EMA (ema_range) と遅い EMA (ema_watch) の差を計算します.

  2. 標準偏差チャネル (s3):標準偏差の倍数を持つEMA差に基づいて上下チャネルを構築する.標準偏差倍数は,黄金比5.618を使用する.

  3. フラグとシグナル:価格が上から下へと上線を突破するときに購入信号を生成し,価格が上から下線を突破するときに販売信号を生成する.フラグの形はシグナルをマークするために使用される.

この指標の組み合わせによって 価格の傾向の方向を把握し 重要なポイントで 買・売シグナルを生成できます これは典型的なトレンド追跡戦略です

利点分析

この戦略には以下の利点があります.

  1. EMAは動向を効果的に追跡できます
  2. 標準偏差は 誤った信号を避けるために チャンネルを作ります
  3. 旗の形は信号をはっきりさせる.
  4. 移動平均値と標準偏差倍数の柔軟なパラメータ設定
  5. 最大限の抽出制御はリスクを減らすのに役立ちます

リスク分析

リスクもあります:

  1. 範囲限定市場では 誤った信号が増える可能性があります
  2. 標準偏差の倍数が大きすぎると 機会を逃す可能性があります
  3. ストップロスのない場合,リトラセイジングの際により大きな損失をもたらす可能性があります.

解決策は

  1. 範囲限定の市場判断を加え,代わりに他の戦略を使用します
  2. 標準偏差パラメータを最適化する
  3. 移動ストップロスを追加し,個々の取引の損失を制御します.

最適化

戦略は以下の方向で最適化できる:

  1. ボリンジャー帯のような指標を追加して信号の質を向上させる.
  2. 移動平均値と標準偏差パラメータを最適化する
  3. ストップ・ロスの戦略を追加して 引き上げを減らす
  4. 異なる市場に応じて最適な買い/売るシグナルパラメータを設定する.
  5. 機械学習アルゴリズムを追加して 市場全体の体制を決定します

結論

概要すると,これはEMAと標準偏差を使用して指標システムを構築し,重要なポイントでフラグ信号を生成する典型的なトレンド追跡戦略である.利点はトレンドを捉え,標準偏差の誤った信号を避けることである.主なリスクは,レンジバインド市場における間違った信号とストップロスのないため引き下げリスクから生じる.判断指標を追加し,パラメータを最適化し,ストップロスを追加することで,戦略は安定性と収益性の面でさらに強化することができる.全体として,戦略枠組みは合理的で最適化の可能性が大きい.


/*backtest
start: 2023-09-27 00:00:00
end: 2023-11-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("ROCKET_EWO", overlay=true)
ema_range = input(5)
ema_watch = input(13)
inval_a = input(open)
inval_b = input(open)
ratio = input(0)
max = 5000
s2=ta.ema(inval_a, ema_range) - ta.ema(inval_b, ema_watch)
c_color=s2 <= ratio ? 'red' : 'lime'
s3 = s2 + (ta.stdev(open, 1)) * 5.618
plotshape(s3, color=color.white, style=shape.cross, location=location.abovebar, size=size.auto, show_last=max, transp=30, offset= 0)
cr = s2 > 0
alertcondition(cr, title='[Rocket_EWO]', message='[Rocket_EWO]')
buy = s2 > 1
sell = s2 < -1
txt  = "🚀" + "\n"+ "\n"+ "\n"+ "\n"
plotshape(buy, color=color.lime, style=shape.triangleup, location=location.belowbar ,color=color.white, text=txt, size=size.normal, show_last=max, transp=1, offset= -3)
plotshape(not buy, color=color.red, style=shape.triangledown, location=location.belowbar, size=size.normal, show_last=max, transp=1, offset= 0)
signalperiod = time
s4 = ta.cross(s2, 0) ? time : na
colsig= s2 <= ratio ? color.red : color.lime
plotshape((time==s4)?7000:na,color=color.blue, style=shape.flag, location=location.abovebar, size=size.large, transp=1)

longCondition =  ta.crossover(s2, 1.618)
if (longCondition)
    strategy.entry("LONG Id", strategy.long)

shortCondition = ta.crossunder(s2, 1.618)
if (shortCondition)
    strategy.entry("SHORT Id", strategy.short)

strategy.close("LONG Id", when = s2 < 0.218)
// strategy.risk.max_drawdown(75, strategy.percent_of_equity)


もっと