Stratégies doubles de capture de tendance inversée et de stop loss dynamique


Date de création: 2024-02-05 09:54:13 Dernière modification: 2024-02-05 09:54:13
Copier: 0 Nombre de clics: 558
1
Suivre
1617
Abonnés

Stratégies doubles de capture de tendance inversée et de stop loss dynamique

Aperçu

Cette stratégie est une double stratégie qui combine une stratégie de capture de tendance inverse et une stratégie de stop-loss dynamique dans le but de capturer la tendance inverse tout en définissant des stop-loss dynamiques pour contrôler le risque.

Principe de stratégie

Stratégies de capture de tendances inversées

La stratégie est basée sur des indices aléatoires K et D. Elle génère un signal d’achat lorsque le prix baisse pendant deux jours consécutifs, tandis que K augmente au-dessus de D. Elle génère un signal de vente lorsque le prix augmente pendant deux jours consécutifs, tandis que K baisse au-dessous de D.

Stratégie de stop loss dynamique

La stratégie est basée sur la volatilité des prix et la tendance à la mise en place d’un stop-loss dynamique. Elle calcule les fluctuations des hauts et des bas des prix au cours de la période la plus récente, puis, combinée à la tendance à la tendance, juge si le prix est actuellement dans le canal ascendant ou descendant, afin de mettre en place un stop-loss dynamique.

Les deux stratégies sont utilisées conjointement pour contrôler le risque en réglant un stop-loss dynamique en même temps que la capture d’un signal de retour.

Analyse des avantages

  • Capable de capturer les points de retournement des prix, adapté pour le trading inversé
  • La mise en place d’un arrêt dynamique permettant d’ajuster la position de l’arrêt en fonction des conditions du marché
  • Confirmation du double signal pour éviter les faux signaux
  • Contrôler les risques et assurer la rentabilité

Analyse des risques

  • Risque d’échec du renversement. Les signaux de renversement peuvent échouer
  • Risque de paramétrage. Une mauvaise configuration des paramètres peut affecter l’efficacité de la stratégie
  • Risque de liquidité. Certaines variétés de transactions sont peu liquides et ne peuvent pas être stoppées

Le risque peut être maîtrisé par des paramètres d’optimisation, des arrêts stricts et la sélection de variétés à bonne liquidité.

Direction d’optimisation

  • Optimiser les paramètres de l’indicateur aléatoire pour trouver la meilleure combinaison de paramètres
  • Optimiser les paramètres de stop-loss pour trouver la meilleure position de stop-loss
  • Augmentation des conditions de filtrage pour éviter de prendre des positions dans des marchés instables
  • Ajout d’un module de gestion de position pour contrôler les pertes maximales

Optimisation intégrée pour que la stratégie capte le plus possible les retournements de tendance tout en maîtrisant les risques.

Résumer

Cette stratégie, combinant une double stratégie de capture de tendance inverse et d’arrêt de perte dynamique, capte à la fois les points de retournement des prix et permet de définir un risque de contrôle de perte dynamique, une stratégie de négociation de courte ligne relativement stable. La stratégie est susceptible de générer des gains stables grâce à une surveillance continue optimisée.

Code source de la stratégie
/*backtest
start: 2024-01-05 00:00:00
end: 2024-02-04 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 07/12/2020
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
//  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.
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos

KaseDevStops(Length, Level) =>
    pos = 0.0
    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)
    pos

strategy(title="Combo Backtest 123 Reversal & Kase Dev Stops", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthKDS = input(30, minval=2, maxval = 100)
LevelKDS = input(title="Trade From Level", defval=4, options=[1, 2, 3, 4])
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posKaseDevStops = KaseDevStops(LengthKDS, LevelKDS)
pos = iff(posReversal123 == 1 and posKaseDevStops == 1 , 1,
	   iff(posReversal123 == -1 and posKaseDevStops == -1, -1, 0)) 
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 )