Stop loss dynamique adaptatif aux fluctuations de l'ATR stratégie de momentum knock-in


Date de création: 2023-10-09 15:30:29 Dernière modification: 2023-10-09 15:30:29
Copier: 0 Nombre de clics: 628
1
Suivre
1617
Abonnés

Aperçu

Cette stratégie combine l’indicateur de dynamique, l’indicateur aléatoire K, et l’indicateur de volatilité ATR, afin d’ajuster dynamiquement les lignes d’arrêt et d’entrée des valeurs K en fonction des valeurs de l’ATR, réalisant ainsi l’idée d’ajuster automatiquement les lignes d’arrêt et d’entrée en fonction des fluctuations du marché.

Principe de stratégie

  1. Les valeurs K de la longueur de l’indicateur sont calculées comme les valeurs k de l’indicateur aléatoire (sma, stoch, close, high, low, len, smoothK).

  2. La valeur ATR de la longueur calculée est lénatr ((lén) ∈

  3. Le graphique des lignes de stop-loss (rsi, atr, len) + lowLine, …, title = “low line”) et des lignes d’entrée (rsi, atr, len) est tracé en fonction de la valeur ATR*-1+100-lowLine, …, title = “up line”)。

  4. Déterminez quand les valeurs de K doivent franchir la ligne d’entrée (crossover) et la ligne d’arrêt (crossunder), générant des signaux d’achat et de vente.

  5. La couleur de fond des achats et des ventes.

  6. Lorsque le signal ci-dessus est satisfait, effectuez une opération d’achat et de vente et définissez un stop loss.

Analyse des forces stratégiques

  1. La stratégie ajuste dynamiquement les lignes de stop et d’entrée en fonction de la volatilité du marché ATR, et peut s’adapter automatiquement à l’ajustement du risque de stop en fonction de la volatilité du marché.

  2. Lorsque le marché est très volatile, il est préférable d’étendre l’intervalle entre la ligne d’arrêt et la ligne d’entrée afin d’éviter que la ligne d’arrêt ne soit secouée.

  3. Lorsque le marché est calme, l’écart entre la ligne d’arrêt et la ligne d’entrée se réduit, ce qui permet de faire un arrêt en temps opportun.

  4. La valeur de la dynamique K est utilisée pour déterminer les entrées et les sorties. La valeur de la dynamique K peut réagir à la vitesse de variation des prix et peut capturer les points de basculement.

  5. La combinaison de l’indicateur de dynamisme et de l’indicateur de volatilité permet à la fois de capturer les tendances et d’ajuster automatiquement le risque en fonction des fluctuations.

Analyse stratégique des risques

  1. Les valeurs de K sont sujettes à de fausses ruptures, ce qui peut déclencher des signaux de transaction inutiles. On peut modifier le paramètre de la valeur de K de manière appropriée pour lisser la ligne de K.

  2. Les paramètres ATR sont trop grands, l’intervalle entre les lignes d’arrêt et les lignes d’entrée est trop grand, le risque peut être trop élevé. La stabilité de différents paramètres de l’ATR peut être testée.

  3. Le simple suivi des arrêts ne permet pas de déterminer si la position des arrêts est raisonnable et ne permet pas de contrôler le risque d’arrêt unique. Il peut être envisagé de contrôler le risque d’arrêt unique en combinaison avec un algorithme d’arrêt attendu.

  4. Les signaux de stratégie sont fréquents et les frais de transaction élevés. Le paramètre de ligne d’entrée lowLine peut être ajusté de manière appropriée pour contrôler la fréquence des transactions.

Orientation de l’optimisation de la stratégie

  1. Testez le paramètre de réglage de la valeur de K pour trouver la combinaison optimale de paramètres pour une valeur de K lisse.

  2. Testez les différentes prises de valeur des paramètres ATR len pour déterminer les paramètres ATR appropriés.

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

  4. Pensez à filtrer les signaux d’entrée en bourse en combinant d’autres indicateurs pour éviter les fausses percées, tels que le volume de transactions combiné, l’indicateur KDJ, etc.

  5. Envisagez d’optimiser les méthodes de stop loss, d’améliorer le stop loss attendu et de contrôler le risque de stop loss.

Résumer

Cette stratégie, basée sur la valeur K de l’indicateur de dynamique et l’indicateur de volatilité ATR, permet d’ajuster dynamiquement les lignes d’arrêt et d’entrée, de capturer la tendance et d’ajuster automatiquement le risque en fonction des fluctuations. C’est une stratégie très innovante et pratique.

Code source de la stratégie
/*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)