EMAインジケーターに基づくフラグトレンドフォロー戦略


作成日: 2023-11-27 15:30:29 最終変更日: 2023-11-27 15:30:29
コピー: 0 クリック数: 623
1
フォロー
1617
フォロワー

EMAインジケーターに基づくフラグトレンドフォロー戦略

概要

この戦略は,主に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. 機械学習のアルゴリズムを追加して,overall market regimeを判断する.

要約する

この戦略の全体は,より典型的なトレンド追跡戦略に属し,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)