Stratégie de tendance de l'EMA pour une volatilité de retard nul

Auteur:ChaoZhang est là., Date: 2024-01-15 à 12h25
Les étiquettes:

img

Résumé

Il s'agit d'une stratégie de rupture simple qui utilise la différence entre deux EMA différents à décalage zéro pour suivre la dynamique ascendante ou descendante d'un instrument.

La logique de la stratégie

La stratégie utilise deux indicateurs EMA spécialement calculés pour obtenir la différence de volatilité, comme indiqué dans les formules ci-dessous:

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

La différence réagit instantanément aux changements brusques de prix sans retard.

Lorsque le diff traverse au-dessus de la bande supérieure de Bollinger, le signal d'entrée est déclenché. Lorsque le dif traverse au-dessous de la bande moyenne de Bollinger, le signal de sortie est déclenché.

Analyse des avantages

Le plus grand avantage de cette stratégie est sa réponse rapide aux signaux de rupture sans décalage. Cela est réalisé en utilisant deux EMA spécialement calculées à zéro décalage. Cela permet à la stratégie de capturer instantanément les événements de rupture des prix et d'entrer tôt dans les tendances émergentes.

Un autre avantage est la simplicité de cette stratégie. Elle ne comporte qu'un seul paramètre lx. Moins de paramètres facilitent l'optimisation et réduisent le risque de surajustement.

Analyse des risques

Le principal risque de cette stratégie est une éventuelle fausse rupture des signaux. Des fausses ruptures consécutives peuvent se produire pendant des périodes d'intervalle. Pour atténuer ce risque, nous pouvons augmenter le multiple de la bande de Bollinger pour rendre les signaux plus stables.

Un autre risque est celui des gains/pertes fréquents sur les marchés instables, qui peuvent être atténués en ajustant les mécanismes de sortie, par exemple en fixant des niveaux de prix stop loss ou take profit.

Directions d'optimisation

Vous trouverez ci-dessous quelques orientations dans lesquelles cette stratégie peut être optimisée:

  1. Ajouter des indicateurs de filtre pour valider les signaux d'entrée et réduire les faux signaux.

  2. Incorporer le stop loss et le profit pour mieux gérer les transactions.

  3. Recherchez une confirmation du volume de négociation pour éviter de fausses ruptures sans engagement de volume.

  4. Adopter des bandes de Bollinger adaptatives pour ajuster les paramètres en fonction de la volatilité du marché.

  5. Optimiser les paramètres dynamiquement en fonction de l'apprentissage automatique.

Conclusion

En résumé, cette stratégie EMA de rupture de volatilité à retard zéro capture rapidement l'élan des prix en utilisant des EMA spécialement calculées sans retard.


/*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")

Plus de