Stratégie de négociation de tendance de moyenne mobile dynamique

Auteur:ChaoZhang est là., Date: 2023-11-15 17h45 et 13 min
Les étiquettes:

img

Résumé

Cette stratégie est basée sur l'indicateur Dynamic Moving Average, combiné avec les bandes de Bollinger et le RSI pour le filtrage des signaux de trading. Elle implémente une tendance suivant une stratégie longue.

La logique de la stratégie

Le noyau de cette stratégie est de calculer la variation du prix de clôture de Heiken Ashi. Plus précisément, il calcule la différence entre la MA des barres actuelles et la MA des deux barres précédentes, puis la multiplie par un coefficient de sensibilité pour obtenir la valeur exacte de variation de la MA.

Ensuite, cette valeur de changement est comparée à la différence entre la bande supérieure et la bande inférieure des bandes de Bollinger. Si la variation de MA est supérieure à la différence de BB, elle est considérée comme une explosion de tendance. Lorsque l'explosion est positive, c'est-à-dire que la variation de MA est positive, elle génère un signal long et une barre verte. Lorsque l'explosion est négative, c'est-à-dire que la variation de MA est négative, elle génère un signal de fermeture et une barre rouge.

En outre, cette stratégie dispose d'un filtre RSI qui n'autorise des signaux longs que lorsque le RSI est supérieur à un seuil, évitant ainsi le risque d'inversion de tendance.

Les avantages

  • MA dynamique pour suivre efficacement les changements de tendance
  • BB comme indicateur dynamique combiné à MA pour une meilleure identification de l'explosion de tendance
  • Le filtre RSI évite les faux signaux de faibles rebonds
  • Longue seulement adaptée à un marché haussier persistant
  • Paramètres réglables flexibles pour différents produits et délais

Les risques

  • Long ne peut pas profiter de la tendance à la baisse
  • Trop dépendante de l'optimisation des paramètres pour différents produits et délais
  • L'incapacité de capturer efficacement l'inversion de tendance peut entraîner de grosses pertes
  • Des paramètres de filtrage RSI incorrects peuvent manquer des opportunités de trading
  • Une sensibilité élevée peut entraîner des transactions bruyantes

Les méthodes de contrôle des risques comprennent: un ajustement approprié des paramètres pour la robustesse, la combinaison d'autres indicateurs pour juger de l'inversion de tendance, l'utilisation uniquement de tendances claires à long terme, etc.

Directions d'optimisation

Il y a de la place pour d'autres optimisations:

  • Essayez différentes sources de prix comme la fermeture, les moyennes mobiles, etc. pour un meilleur lissage

  • Ajuster les paramètres de la période MA et BB pour optimiser les différents produits

  • Essayez la relation de rapport au lieu de coefficient de sensibilité pour une valeur d'indicateur plus intuitive

  • Ajouter d'autres filtres comme les lignes de tendance, le volume, etc. pour améliorer la qualité du signal

  • Développer une stratégie à court terme basée sur des modèles d'indicateurs

  • Incorporer des mécanismes de stop loss pour un meilleur contrôle des risques

Conclusion

Dans l'ensemble, il s'agit d'une tendance relativement stable suivant une stratégie. Il utilise une moyenne mobile dynamique pour déterminer la direction de la tendance, BB pour identifier les points explosifs, RSI pour filtrer les faux signaux, réalisant un système de tendance longue. Mais il comporte également certains risques, nécessitant un réglage des paramètres pour différents produits et délais, et l'incapacité de tirer profit des tendances baissières. Il y a place à d'autres améliorations telles que l'amélioration de la qualité du signal, le développement d'une stratégie courte, l'ajout d'un stop loss, etc. pour obtenir de meilleures performances.


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

//@version=5

///////////Original Script Courtesy of Lazy_Bear.... Absolute Legend\\\\\\\\\\\\\\\

strategy('SmoothedWaddah', overlay=false, initial_capital=1)
sensitivity = input(150, title='Sensitivity')
fastLength = input(20, title='MacD FastEMA Length')
slowLength = input(40, title='MacD SlowEMA Length')
channelLength = input(20, title='BB Channel Length')
mult = input(1.5, title='BB Stdev Multiplier')
RSI14filter = input(40, title='RSI Value trade filter')

////////////MacD Calculation of price//////////////////////////////
calc_macd(source, fastLength, slowLength) =>
    fastMA = ta.ema(source, fastLength)
    slowMA = ta.ema(source, slowLength)
    fastMA - slowMA

/////////BolingerBand Calculation of Price///////////////////////
calc_BBUpper(source, length, mult) =>
    basis = ta.sma(source, length)
    dev = mult * ta.stdev(source, length)
    basis + dev

calc_BBLower(source, length, mult) =>
    basis = ta.sma(source, length)
    dev = mult * ta.stdev(source, length)
    basis - dev

//////heinkenashi chart call for closing price "smoothing mechanism"\\\\\\\\\\\\\\\\\\\\\\\\\\\
point = request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close)

////////////////////T1 is change in MacD current  candle from previous candle Sensitivy amplifies calculation/////////////////////
t1 = (calc_macd(point, fastLength, slowLength) - calc_macd(point[1], fastLength, slowLength)) * sensitivity
//////////////////////T2 is  T1 from two candles prior\\\\\\\\\\\\\\\\\\\\\\\\\\\
t2 = (calc_macd(point[2], fastLength, slowLength) - calc_macd(point[3], fastLength, slowLength)) * sensitivity

////////////////E1 is difference in bolinger band upper and lower...E2 is E1 from one candle prior not needed//////////////
e1 = calc_BBUpper(ohlc4, channelLength, mult) - calc_BBLower(ohlc4, channelLength, mult)
//e2 = (calc_BBUpper(close[1], channelLength, mult) - calc_BBLower(close[1], channelLength, mult))

//////signal bar printing.. Up if MacD positive .. Down if MacD negative//////////
trendUp = t1 >= 0 ? t1 : 0
trendDown = t1 < 0 ? -1 * t1 : 0

///////plots difference in macD*Sensitivity, color change if increasing or decreasing. 
//////color is green/lime if explosion is up \ color is red/orange if explosion is down/////////
plot(trendUp, style=plot.style_columns, linewidth=1, color=trendUp < trendUp[1] ? color.new(color.lime,45) : color.new(color.green,45), title='UpTrend')
plot(trendDown, style=plot.style_columns, linewidth=1, color=trendDown < trendDown[1] ? color.new(color.orange,45) : color.new(color.red,45), title='DownTrend')
plot(e1, style=plot.style_line, linewidth=2, color=color.new(#A0522D, 0), title='ExplosionLine')


////////////Entry conditions and Concept/////////////////////
////////////Long Only System. T1 is measuring the distance between MACD EMA's. This is Multiplied
////////////by the sensitivity so that it can be compared to the difference between BollingerBand. 
/////////////{this could have been a ratio maybe i will work with that in a different script.} 
/////////////I found that 135-175 sensitivy allows for values to be compared on most charts.....
////////////If the (difference between the EMA)*(Sensitivity) is greater than (BB upper line- BB lower line)
////////////it is considered an explosion in either the downside or the upside.The indicator will print
///////////a bar higher than the trigger line either green or red (up or down respectively)//////////////////

longCondition = trendUp > e1 and ta.rsi(close, 14) > RSI14filter
if longCondition
    strategy.entry('up', strategy.long)

strategy.close('up', trendDown > e1)



Plus de