Cette stratégie utilise la méthode d'arrêt de traînée de la volatilité de Wilder, combinée à l'indicateur ATR et à différents types de moyennes mobiles, pour mettre en œuvre une stratégie d'arrêt de perte de suivi de tendance adaptative.
Le noyau de cette stratégie est l'algorithme d'arrêt de trail de volatilité Wilder. Il calcule d'abord l'indicateur ATR et trace dynamiquement la ligne de stop loss en fonction de la longueur et du multiplicateur d'entrée ATR. Il suit ensuite le plus haut et le plus bas de la ligne de stop loss en fonction de l'option de prix choisie parmi les prix de clôture, de haut et de bas. Il envoie des signaux de trading lorsque le prix dépasse la ligne de stop loss.
Dans le code, la fonction f_ma implémente diverses moyennes mobiles, y compris RMA, EMA, SMA et Hull MA. L'indicateur ATR est calculé et multiplié par le multiplicateur défini par l'utilisateur pour générer la ligne de stop de trail basée sur la volatilité. Les niveaux les plus élevés et les plus bas de cette ligne sont suivis à l'aide des fonctions les plus élevées et les plus basses. Les transactions sont effectuées lorsque le prix pénètre cette ligne de stop de trail.
Grâce à l'utilisation flexible de l'indicateur ATR, de différentes moyennes mobiles et de paramètres réglables, cette stratégie réalise un système de suivi des stops de perte de tendance hautement adaptable.
Cette stratégie tire parti de l'algorithme Wilder Volatility Trailing Stop, qui est une méthodologie mature et fiable de suivi des tendances.
La stratégie utilise l'indicateur ATR pour calculer dynamiquement la ligne d'arrêt de perte, en évitant les points d'arrêt de perte rigides.
La mise en œuvre de diverses moyennes mobiles, y compris RMA, EMA, SMA et Hull MA, améliore l'adaptabilité de la stratégie.
En ajustant la longueur de l'ATR, les paramètres du multiplicateur, les paramètres optimisés peuvent être trouvés pour différents marchés, améliorant les performances de la stratégie.
L'utilisation de différentes options de prix comme les prix élevés, bas et rapprochés permet une optimisation sur différents produits.
En résumé, il s'agit d'une stratégie de suivi des tendances fiable, adaptable et facilement optimisable.
La stratégie repose fortement sur l'optimisation des paramètres. Les paramètres ATR et multiplicateur appropriés doivent être trouvés par des tests pour différents marchés et produits, sinon l'effet stop loss peut ne pas être idéal.
Dans les marchés à fourchette, la ligne d'arrêt-perte ATR peut déclencher des arrêts fréquents et injustifiés.
Si la ligne de stop loss est trop large, les opportunités de perte seront manquées. Si elle est trop serrée, la fréquence des transactions et les coûts de glissement augmenteront. Un point équilibré doit être trouvé par des tests minutieux.
Un trop grand nombre d'options de moyennes mobiles peut entraîner des écarts de performance.
Cette stratégie se concentre sur le suivi des tendances et ne vise pas directement les bénéfices.
Avec des paramètres inappropriés, la stratégie peut présenter des périodes de négociation excessives ou de détention surdimensionnées.
Des indicateurs d'identification des tendances peuvent être introduits afin d'éviter les problèmes sur les différents marchés.
Les indicateurs d'inversion peuvent être testés pour permettre un arrêt et un renversement plus rapides lorsque la tendance haussière et la tendance baissière alternent.
Le paramètre de la période ATR peut être corrélé avec les caractéristiques du produit, de sorte que différents produits utilisent des périodes ATR différentes.
Les indicateurs de volume peuvent être utilisés pour resserrer plus rapidement la ligne stop loss lorsque le volume diminue de manière significative.
Le pourcentage de stop loss peut être augmenté, mais pas trop serré pour éviter de s'arrêter aux retracements normaux.
D'autres indicateurs peuvent être utilisés pour mesurer l'élan et optimiser les paramètres pour assouplir les arrêts lorsque l'élan est faible.
Cette stratégie est basée sur le concept de "Wilder Volatility Trailing Stop" et utilise l'indicateur ATR pour concevoir un système de suivi des stops de perte de tendance hautement adaptatif. Grâce à l'optimisation des paramètres, elle peut être adaptée à différents produits de trading et constitue une approche fiable et pratique du stop loss.
/*backtest start: 2023-10-09 00:00:00 end: 2023-10-16 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // Wilder's Volatility Trailing Stop Strategy with various MA's // by SparkyFlary //For Educational Purposes //Results can differ on different markets and can fail at any time. Profit is not guaranteed. strategy(title="Wilder's Volatility Trailing Stop Strategy with various MA's", shorttitle="Trailing Stop Strategy", overlay=true) AtrMult = input(3.0, title="ATR multiplier") ATRlength = input(7, title="ATR length") ATRavgType = input("RMA", title="ATR moving average type", options=["RMA", "EMA", "SMA", "HULL"]) sicType = input("close", title="significant close type for trail calculation", options=["close", "high-low"]) //function for choosing moving averages f_ma(type, src, len) => float result = 0 if type == "RMA" // Wilder's moving averaege or Running moving average result := rma(src, len) if type == "EMA" // Exponential moving average result := ema(src, len) if type == "SMA" // Simple moving average result := sma(src, len) if type == "HULL" // Hull moving average result := wma(2 * wma(src, len / 2) - wma(src, len), round(sqrt(len))) result ATR = f_ma(ATRavgType, tr, ATRlength) upperTrail = lowest(sicType=="close"?close:low, ATRlength) + AtrMult * ATR lowerTrail = highest(sicType=="close"?close:high, ATRlength) - AtrMult * ATR float TS = 0 TS := close < TS[1] ? upperTrail[1] : close > TS[1] ? lowerTrail[1] : TS //plot plot(TS, title="trailing stop", color=close<TS?color.red:color.green) //Strategy buy = crossover(close, TS) //sell = close < TS short = crossunder(close, TS) //cover = close > TS strategy.entry(id="enter long", long=true, when=buy) //strategy.close(id="enter long", comment="exit long", when=sell) strategy.entry(id="enter short", long=false, when=short) //strategy.close(id="enter short", comment="exit short", when=cover)