Stratégie de stop loss dynamique de Kase

Auteur:ChaoZhang est là., Date: 2023-09-13 14h08 et 47 min
Les étiquettes:

Cette stratégie est basée sur l'approche dynamique de stop loss de M. Kase, calculant la plage dynamique du prix pour trouver un stop loss optimal et prendre des niveaux de profit pour équilibrer les profits et les pertes.

La logique de la stratégie:

  1. Calculer les indices de gamme dynamique du prix RWH et RWL.

  2. Dériver l'indice de niveau d'écart Pk à partir de RWH et de RWL.

  3. Lorsque Pk>0, calculer le stop loss basé sur le niveau d'écart. Lorsque Pk<0, calculer le profit.

  4. Les multiples d'écart varient généralement entre 1 et 3 écarts types.

  5. Prenez une position opposée lorsque le prix atteint le stop loss/profit.

Les avantages:

  1. Les arrêts/profits dynamiques s'adaptent à la volatilité changeante.

  2. Les freins ne sont ni trop serrés ni trop lâches.

  3. L'approche mathématique évite les jugements émotionnels et subjectifs.

Les risques:

  1. Décalage des calculs d'arrêt, potentiellement manquant le meilleur moment d'arrêt.

  2. Un réglage des paramètres pour équilibrer les arrêts et les cibles.

  3. Il n'y a pas de limite sur la taille des pertes, il y a des risques de gros pertes.

En résumé, cette approche peut optimiser intelligemment les arrêts et les objectifs dans une certaine mesure, mais nécessite toujours un backtesting robuste.


/*backtest
start: 2023-01-01 00:00:00
end: 2023-04-15 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 09/10/2019
//  The Kase Dev Stops system finds the optimal statistical balance between letting profits run, 
//  while cutting losses.  Kase DevStop seeks an ideal stop level by accounting for volatility (risk),
//  the variance in volatility (the change in volatility from bar to bar), and volatility skew 
//  (the propensity for volatility to occasionally spike incorrectly).
//
//  Kase Dev Stops are set at points at which there is an increasing probability of reversal against 
//  the trend being statistically significant based on the log normal shape of the range curve.  
//  Setting stops will help you take as much risk as necessary to stay in a good position, but not more.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="Kase Dev Stops Backtest", overlay = true)
Length = input(30, minval=2, maxval = 100)
Level = input(title="Trade From Level", defval=4, options=[1, 2, 3, 4])
reverse = input(false, title="Trade reverse")
RWH = (high - low[Length]) / (atr(Length) * sqrt(Length))
RWL = (high[Length] - low) / (atr(Length) * sqrt(Length))
Pk = wma((RWH-RWL),3)
AVTR = sma(highest(high,2) - lowest(low,2), 20)
SD = stdev(highest(high,2) - lowest(low,2),20)
Val4 = iff(Pk>0, highest(high-AVTR-3*SD,20), lowest(low+AVTR+3*SD,20))
Val3 = iff(Pk>0, highest(high-AVTR-2*SD,20), lowest(low+AVTR+2*SD,20))
Val2 = iff(Pk>0, highest(high-AVTR-SD,20), lowest(low+AVTR+SD,20))
Val1 = iff(Pk>0, highest(high-AVTR,20), lowest(low+AVTR,20))
ResPrice = iff(Level == 4, Val4,
             iff(Level == 3, Val3,
               iff(Level == 2, Val2,
                 iff(Level == 1, Val1, Val4))))
pos = iff(close < ResPrice , -1, 1)
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1 , 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )

Plus de