Stratégie de suivi de tendance adaptative pour arrêter les pertes

Auteur:ChaoZhang est là., Date: 2023-10-17 14h04 et 28 min
Les étiquettes:

img

Résumé

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.

La logique de la stratégie

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.

Analyse des avantages

  • 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.

Analyse des risques

  • 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.

Directions d'optimisation

  • 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.

Résumé

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)

Plus de