Stratégie dynamique de stop-loss adaptée aux fluctuations de l'ATR

Auteur:ChaoZhang est là., Date: 2023-10-09 15:30:29 Je vous en prie.
Les étiquettes:

Résumé

Cette stratégie combine l'indicateur de dynamique Stochastique K et l'indicateur de volatilité ATR pour ajuster dynamiquement la ligne d'arrêt des pertes et la ligne d'entrée en fonction des valeurs ATR, réalisant ainsi l'idée d'ajuster automatiquement les lignes d'arrêt des pertes et d'entrée en fonction de la volatilité du marché.

La logique de la stratégie

  1. Calculer la valeur de K sma ((stoch ((close, high, low, len), smoothK) avec la longueur len, représentant la valeur de K stochastique.

  2. Calculer la valeur ATR atr ((len) avec la longueur len.

  3. Graphique de la ligne stop loss (rsi (atr, len) + lowLine,..., title = low line) et graphique de la ligne d'entrée (rsi (atr, len) *-1+100-lowLine,..., title = up line) basé sur la valeur ATR.

  4. Déterminer les signaux d'entrée et de sortie lorsque la valeur K traverse le croisement de la ligne d'entrée (k, ligne ascendante) et le croisement de la ligne de stop-loss (k, ligne descendante).

  5. Tracer les couleurs de fond pour les signaux d'achat et de vente.

  6. Exécuter des transactions et définir un stop loss lorsque les signaux ci-dessus sont déclenchés.

Analyse des avantages

  1. La stratégie ajuste dynamiquement les lignes de stop loss et d'entrée en fonction de la volatilité du marché ATR, qui adapte automatiquement le risque de stop loss en fonction de la volatilité du marché.

  2. Lorsque la volatilité du marché est élevée, la distance entre les lignes d'arrêt des pertes et les lignes d'entrée augmente pour éviter d'être arrêtée par les fluctuations.

  3. Lorsque la volatilité du marché est faible, la distance entre les lignes d'arrêt des pertes et les lignes d'entrée se rétrécit pour obtenir un arrêt des pertes rapide.

  4. Utilisation des valeurs K de l'indicateur de dynamique pour déterminer les entrées et les sorties.

  5. La combinaison d'indicateurs de dynamique et de volatilité permet de saisir les tendances et d'ajuster automatiquement les risques en fonction des fluctuations.

Analyse des risques

  1. Les valeurs K peuvent avoir de fausses ruptures, provoquant des signaux de trading inutiles.

  2. Si le paramètre ATR len est trop grand, la distance entre le stop loss et les lignes d'entrée devient trop grande avec un risque élevé.

  3. Le stop-loss pur ne peut pas déterminer si la position de stop-loss est appropriée et ne peut pas contrôler le risque de stop-loss unique.

  4. Les signaux de stratégie fréquents entraînent des coûts de négociation élevés.

Directions d'optimisation

  1. Testez et ajustez le paramètre smoothK pour trouver les combinaisons optimales de paramètres de valeur smoothK.

  2. Tester différentes valeurs du paramètre ATR len afin de déterminer les paramètres ATR appropriés.

  3. Optimiser le paramètre de ligne d'entrée lowLine pour trouver les paramètres optimaux pour contrôler la fréquence des transactions.

  4. Considérez la combinaison d'autres indicateurs pour filtrer les signaux d'entrée et éviter les fausses ruptures, tels que les indicateurs du volume des transactions, les indicateurs KDJ, etc.

  5. Considérer l'optimisation des méthodes de stop loss, l'amélioration de la stop loss attendue pour contrôler activement le risque de stop loss.

Résumé

La stratégie réalise l'idée d'ajuster dynamiquement les lignes de stop loss et d'entrée en fonction des valeurs de l'indicateur de momentum K et de l'indicateur de volatilité ATR. Elle peut capturer les tendances et ajuster automatiquement les risques en fonction des fluctuations, ce qui est très innovant et pratique. Des optimisations supplémentaires telles que l'ajustement des paramètres, l'amélioration des méthodes de stop loss peuvent rendre la stratégie plus stable et fiable, avec de grandes perspectives de développement.


/*backtest
start: 2023-09-08 00:00:00
end: 2023-10-08 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Stoch + ATR", overlay=false, pyramiding = 0, calc_on_order_fills = false, commission_type =  strategy.commission.percent, commission_value = 0.0454, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

len = input(34, minval=1, title="Length for Main Stochastic & ATR") 
smoothK = input(2, minval=1, title="SmoothK for Main Stochastic")
lowLine = input(10, minval=-50, maxval=50, title="Multiplier for up/low lines")

//Stoch formula
k = sma(stoch(close, high, low, len), smoothK)
plot(k, color=aqua, title = "Stoch")

//len=input
atr=atr(len)
plot(rsi(atr, len)+lowLine , color=red,linewidth=2, title = "low line")
plot(rsi(atr, len)*-1+100-lowLine, color=lime,linewidth=2, title = "up line")

aboveLine = crossunder(k,(rsi(atr, len)+lowLine))? 1 : 0
belowLine = crossover(k,(rsi(atr, len)*-1+100-lowLine))? 1 : 0

aboveLine2 = crossover(k,(rsi(atr, len)+lowLine))? 1 : 0
belowLine2 = crossunder(k,(rsi(atr, len)*-1+100-lowLine))? 1 : 0

skip=(aboveLine2==1 or belowLine2==1) and (aboveLine==1 or belowLine==1)? 1 : 0

//BackGroound Color Plots
plotchar(belowLine==1 and skip==0, title="Buy Signal", char='B', location=location.bottom, color=white, transp=0, offset=0)
plotchar(aboveLine==1 and skip==0, title="Sell Signal", char='S', location=location.top, color=white, transp=0, offset=0)
plotchar(belowLine2==1 and skip==0, title="Close Signal", char='C', location=location.bottom, color=white, transp=0, offset=0)
plotchar(aboveLine2==1 and skip==0, title="Close Signal", char='C', location=location.top, color=white, transp=0, offset=0)

bgcolor(aboveLine==1 ? red : na, transp=30, title = "sell signal")
bgcolor(belowLine==1 ? lime : na, transp=30, title = "buy signal")

bgcolor(aboveLine2==1 ? lime : na, transp=80, title = "close short")
bgcolor(belowLine2==1 ? red : na, transp=80, title = "close long")

bgcolor(skip==1 ? black : na, transp=0, title = "skip signal")

//strategy
longCondition = belowLine==1
shortCondition = aboveLine==1

strategy.entry("BUY", strategy.long, when = longCondition)
strategy.entry("SELL", strategy.short, when = shortCondition)
strategy.cancel_all(when = skip==1)





Plus de