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é.
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).
La valeur ATR de la longueur calculée est lénatr ((lén) ∈
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”)。
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.
La couleur de fond des achats et des ventes.
Lorsque le signal ci-dessus est satisfait, effectuez une opération d’achat et de vente et définissez un stop loss.
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é.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Testez les différentes prises de valeur des paramètres ATR len pour déterminer les paramètres ATR appropriés.
Optimiser le paramètre de ligne d’entrée lowLine pour trouver le paramètre optimal pour contrôler la fréquence des transactions.
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.
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.
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.
/*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)