Stratégie de stop loss dynamique de Case


Date de création: 2023-09-13 14:08:47 Dernière modification: 2023-09-13 14:08:47
Copier: 0 Nombre de clics: 737
1
Suivre
1617
Abonnés

Cette stratégie est basée sur la théorie de l’arrêt-perte dynamique de M. Case. Cette stratégie est basée sur la théorie de l’arrêt-perte dynamique de M. Case.

Le principe de la stratégie:

  1. Les indices de dynamique des fluctuations des prix RWH et RWL sont calculés.

  2. L’indice de la divergence des prix Pk est obtenu par RWH et RWL.

  3. Lorsque Pk est supérieur ou égal à 0, le prix de stop est calculé en fonction de l’écart. Lorsque Pk est inférieur ou égal à 0, le prix de stop est calculé.

  4. Le coefficient de déviation de l’arrêt de perte est sélectif, généralement de 1 à 3 fois l’écart standard.

  5. Lorsque le prix atteint le seuil de stop loss, effectuez une action inversée.

Les avantages de cette stratégie:

  1. Le stop loss est calculé de manière dynamique et peut être ajusté en fonction des fluctuations du marché.

  2. Le point d’arrêt ne doit pas être trop proche ou trop lâche.

  3. Les calculs mathématiques permettent d’éviter que les émotions subjectives influencent le jugement.

Le risque de cette stratégie:

  1. Il y a un retard dans le calcul du prix de stop-loss et il est possible que vous ayez raté le moment de stop-loss optimal.

  2. Optimiser les paramètres de déviation du multiplicateur pour équilibrer le stop-loss.

  3. Il n’y a pas de limite à la taille des pertes individuelles et il existe un risque de pertes individuelles importantes.

En résumé, la stratégie peut optimiser intelligemment les paramètres de stop-loss dans une certaine mesure, mais son efficacité doit encore être vérifiée par des tests de retour et ne peut pas éviter complètement le risque subjectif SUBJECTIVE, les investisseurs doivent toujours être prudents.

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