この戦略は,トレンドフォローを実行するためにゼロレイグEMAとハルEMAの組み合わせを使用する.ゼロレイグEMAは通常のEMAのレイグをなくし,ハルEMAは価格曲線を滑らかにする.それらの組み合わせは,取引後の低リスクトレンドのためのトレンド動きをより正確に把握することができます.
まずゼロレイグEMAを計算しますEMA1 = ema(close, Period) EMA2 = ema(EMA1, Period) Difference = EMA1 - EMA2 ZeroLagEMA = EMA1 + Difference
標準的なEMAの遅延問題を解消します.
次に,Hull EMA の平滑曲線を計算します.
```
n2ma = 2*wma(ZeroLagEMA, round(S_period/2))
nma = wma(ZeroLagEMA, S_period)
n1 = wma(n2ma - nma, sqn)
```
最後に,現在のHull EMA (n1) と前期のHull EMA (n2) の大きさの関係に基づいてトレンド方向を決定し,取引戦略を策定します.
この戦略の最大の利点は,トレンド方向を正確に把握する能力です.二つの理由があります.
Zero Lag EMAは通常の EMAの遅延問題をなくし,価格変動をより早く把握することができます.
Hull EMAのダブルスにより 価格が平坦になり 騒音をフィルタリングして 傾向をより明確に把握できます
EMA や Hull EMA を単独で使うと比べると,この組み合わせは,より正確で信頼性の高い戦略のために両者の強みを活用します.
この戦略の主なリスクは,
不適切な Period と S_period パラメータ設定により,戦略は市場に敏感になり,取引機会を逃す可能性があります.
EMA と Hull EMA は 差異のある市場では,注意を要する 偽のクロスオーバー信号が増加する可能性があります.
一夜間価格格差を効果的に処理することはできません.
したがって,慎重なパラメータテストが必要であり,指標信号は慎重に解釈され,価格格差リスクは防げなければならない.
戦略は以下の側面で最適化できます.
異なる市場と時間枠でパラメータの組み合わせをテストし,適応性を向上させる.
安定性を高めるため,KDJ,MACDなど,偽のブレイクシグナルをフィルターするために他の指標を追加します.
ストップロスを追加して単一の取引損失を制御します.
トレンドに反する取引を避けるため,勝利率をさらに改善するためにエントリータイミングを最適化します.
この戦略は,取引後の低リスクトレンドの市場動向を正確かつ敏感に把握するために,ゼロラグハルEMAコンボを使用しています.パラメータ最適化,シグナルフィルタリング,ストップ損失などを通じて安定性をさらに向上させることができます.全体として,この戦略はシンプルで,実践的で,トレンド通貨ペアやインデックスに適しています.
/*backtest start: 2023-08-19 00:00:00 end: 2023-09-18 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 // Zero Lag EMA combined with Hull moving average for smoothing purposes. // author: email: sbginter@gmail.com strategy("Ujanja", overlay=true) Period = input(title="Period",defval=30, minval=1) S_period=input(title="Smoother Period",defval=176) EMA1= ema(close,Period) EMA2= ema(EMA1,Period) Difference= EMA1 - EMA2 ZeroLagEMA= EMA1 + Difference n2ma=2*wma(ZeroLagEMA,round(S_period/2)) nma=wma(ZeroLagEMA,S_period) diff=n2ma-nma sqn=round(sqrt(S_period)) n2ma1=2*wma(ZeroLagEMA[1],round(S_period/2)) nma1=wma(ZeroLagEMA[1],S_period) diff1=n2ma1-nma1 sqn1=round(sqrt(S_period)) n1=wma(diff,sqn) n2=wma(diff1,sqn) c=n1>n2?green:red ma=plot(n1,color=c) longCondition = n1>n2 if (longCondition) strategy.entry("Long", strategy.long) shortCondition = longCondition != true if (shortCondition) strategy.entry("Short", strategy.short)