ゼロ・ラグ・ボラティリティ・ブレイクアウト EMAトレンド戦略

作者: リン・ハーンチャオチャン開催日:2024年1月15日 12:00:25
タグ:

img

概要

これは,2つの異なるゼロレイグ EMAの違いを使用して,楽器の上下モメンタムを追跡する単純なブレークアウト戦略である.この差が構成可能な標準偏差のボリンジャーバンドを突破すると,基礎EMAの方向に基づいてロング/ショート信号が生成される.

戦略の論理

戦略は,以下の式で示されているように,変動差を得るために,特別に計算されたEMA指標を2つ使用します.

hJumper = math.max(src,ta.ema(src,lx))
lJumper = math.min(src,ta.ema(src,lx))  
dif = (hJumper / lJumper) - 1

この差は急激な価格変動に即座に反応します

diff が上ボリンジャーバンドを超えると,エントリー信号が起動する. diff が中ボリンジャーバンドを下回ると,出口信号が起動する. ベース EMA の方向は,ロングかショートかを決定する.

利点分析

この戦略の最大の利点は,遅滞なくブレイクシグナルに迅速に対応することです.これは,特別に計算された2つのゼロレイグEMAを使用して達成されます. これにより,戦略は価格ブレイクイベントを即座に把握し,新興トレンドに早期に入ることができます.

また,この戦略の利点は単純さである.この戦略には1つのパラメータlxしかありません.パラメータが少なくなるため,最適化が容易になり,オーバーフィッティングのリスクが軽減されます.

リスク分析

この戦略の主なリスクは,シグナルが誤ったブレイクになる可能性があります. 連続した誤ったブレイクが範囲期間中に起こる可能性があります. このリスクを軽減するために,シグナルをより安定させるためにボリンジャーバンド倍数を増加することができます.

また,不安定な市場において小規模な利益/損失が頻繁に発生するリスクもあります.これは,例えばストップ・ロースまたはテイク・プロフィート価格レベルを設定することによって,退出メカニズムを調整することによって軽減できます.

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

以下は,この戦略を最適化できるいくつかの方向性です.

  1. 入力信号を検証し,誤った信号を減らすためにフィルター指標を追加します.

  2. ストップ・ロスを組み込み 利潤を取って 取引をうまく管理する

  3. 取引量の確認を求めます. 取引量の約束なしの偽のブレイクを避けるためです.

  4. 市場変動に基づいてパラメータを調整するために適応性ボリンジャー帯を採用する.

  5. 機械学習に基づいて パラメータを動的に最適化します

結論

要するに,このゼロレイグ波動性ブレイクアウトEMA戦略は,レイグなしで特別に計算されたEMAを使用して価格の勢いを迅速に把握します.次のステップの最適化には,フィルター,ストップ損失/利益,ボリューム確認などを追加して,戦略を異なる市場環境で堅牢にする可能性があります.


/*backtest
start: 2024-01-07 00:00:00
end: 2024-01-14 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © wbburgin

//@version=5
strategy("Zero-lag Volatility-Breakout EMA Trend Strategy",overlay=false)

tt1 = "If selected, the strategy will not close long or short positions until the opposite signal is received. This"+
 " exposes you to more risk but potentially could generate larger returns."

src = input.source(close,"Source")
lx = input.int(200,"EMA Difference Length")
bbmult = input.float(2.0,"Standard Deviation Multiple")
useBinaryStrategy = input.bool(true,"Use Binary Strategy",tooltip = tt1)

hJumper = math.max(src,ta.ema(src,lx))
lJumper = math.min(src,ta.ema(src,lx))

dif = (hJumper / lJumper) - 1

[bbm,bbu,bbl] = ta.bb(dif,lx,bbmult)

plot(dif,color=color.white,title="Zero lag EMA Difference")
plot(bbu,color=color.lime,title="Bollinger Top")
plot(bbl,color=color.red,title="Bollinger Bottom")
plot(bbm,color=color.yellow,title="Bollinger Middle")

sigEnter = ta.crossover(dif,bbu)
sigExit = ta.crossunder(dif,bbm)
emaBase = ta.ema(src,lx)
enterLong = sigEnter and emaBase > emaBase[1]
enterShort = sigEnter and emaBase < emaBase[1]

plotshape(enterLong,style=shape.labelup,location=location.bottom,color=color.green,size=size.tiny)
plotshape(enterShort,style=shape.labeldown,location=location.top,color=color.red,size=size.tiny)

if enterLong
    strategy.entry("Long",strategy.long)
if enterShort
    strategy.entry("Short",strategy.short)
if not useBinaryStrategy and sigExit
    strategy.close("Long")
    strategy.close("Short")

もっと