Un système puissant combinant des stratégies d'inversion et de suivi des tendances

Auteur:ChaoZhang est là., Date: 2023-10-27 16:22:08 Je suis désolé
Les étiquettes:

img

Résumé

Le Double Dip Reversal Breakout System combine des éléments de stratégie d'inversion et de suivi de tendance dans le trading quantitatif. Il génère des signaux d'achat en détectant des jours de baisse consécutifs par rapport aux prix de clôture précédents, et des signaux de vente lorsque le prix dépasse la ligne de moyenne mobile T3, permettant des transactions rentables tout en gérant les risques.

Comment fonctionne- t- il?

Le système est composé de deux composantes:

  1. 123 Le renversement

Il observe les variations du prix de clôture au cours des N derniers jours. Si la clôture d'aujourd'hui est supérieure à celle d'hier et que celle d'hier est inférieure à celle de la veille, il signale deux jours d'arrêt consécutifs et déclenche un signal d'achat. Il utilise également l'indicateur STOCH - lorsque la ligne rapide d'aujourd'hui est inférieure à la ligne lente, il confirme davantage la validité du signal d'achat.

  1. La moyenne mobile T3

La ligne T3 est calculée sur la base des moyennes mobiles exponentielles en utilisant une formule spéciale.

Le système combine les deux signaux ci-dessus, générant des signaux de négociation réels uniquement lorsque le signal d'achat 123 Reversal et le signal de vente T3 se produisent ensemble.

Analyse des avantages

  • Efficace pour les opérations de revers de la pêche de fond et pour les sauts de tendance opposés
  • La moyenne mobile aide à sécuriser les bénéfices et à gérer les risques
  • Le mécanisme à double signal améliore la validité du signal et réduit les faux signaux
  • Combine les atouts des stratégies de suivi de tendance et de renversement
  • Les paramètres réglables permettent une flexibilité pour différentes conditions de marché

Analyse des risques

  • Les signaux d'inversion peuvent être faux, ce qui entraîne des transactions perdantes
  • Un ajustement incorrect des paramètres peut entraîner une survente, augmentant les coûts
  • Les signaux de vente de la moyenne mobile peuvent prématurément sortir des tendances rentables
  • Des risques tels que la chasse au stop-loss demeurent pendant les marchés volatils
  • Les paramètres doivent être optimisés pour différents instruments

Pour lutter contre les risques, les mesures suivantes peuvent être prises:

  1. Ajuster les paramètres d'inversion pour améliorer la validité du signal
  2. Ajuster les paramètres de la moyenne mobile pour prolonger la période de détention
  3. Ajouter un stop-loss pour limiter les pertes
  4. Optimiser les paramètres séparément pour les différents instruments

Des possibilités d'amélioration

La stratégie peut être améliorée sous plusieurs aspects:

  1. Ajouter des filtres pour assurer la validité du signal

    Des indicateurs supplémentaires tels que les écarts de volume peuvent être ajoutés comme filtres pour éviter les faux échanges.

  2. Adaptation des paramètres en fonction de l'évolution des marchés

    Retestez diverses combinaisons de paramètres et sélectionnez l'ensemble donnant le meilleur rendement.

  3. Incorporer l'apprentissage automatique pour l'optimisation adaptative

    Rassembler de grands ensembles de données historiques, former des modèles ML pour prévoir des points d'entrée/sortie optimaux et optimiser dynamiquement les paramètres.

  4. Optimiser les paramètres séparément pour les différents instruments

    Les instruments ont des caractéristiques différentes, de sorte que leurs paramètres optimaux diffèrent également.

Conclusion

Le double dip reversal breakout system combine synergiquement le suivi des tendances et le trading inversé. Il permet d'acheter à des basses après les baisses et d'obtenir des profits des tendances en utilisant des moyennes mobiles. La combinaison efficace de signaux inversés et de tendance capitalise sur les opportunités d'inversion tout en bloquant les profits.


/*backtest
start: 2023-09-26 00:00:00
end: 2023-10-26 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 16/09/2021
// 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
// This indicator plots the moving average described in the January, 1998 issue
// of S&C, p.57, "Smoothing Techniques for More Accurate Signals", by Tim Tillson.
// This indicator plots T3 moving average presented in Figure 4 in the article.
// T3 indicator is a moving average which is calculated according to formula:
//     T3(n) = GD(GD(GD(n))),
// where GD - generalized DEMA (Double EMA) and calculating according to this:
//     GD(n,v) = EMA(n) * (1+v)-EMA(EMA(n)) * v,
// where "v" is volume factor, which determines how hot the moving average’s response
// to linear trends will be. The author advises to use v=0.7.
// When v = 0, GD = EMA, and when v = 1, GD = DEMA. In between, GD is a less aggressive
// version of DEMA. By using a value for v less than1, trader cure the multiple DEMA
// overshoot problem but at the cost of accepting some additional phase delay.
// In filter theory terminology, T3 is a six-pole nonlinear Kalman filter. Kalman
// filters are ones that use the error — in this case, (time series - EMA(n)) — 
// to correct themselves. In the realm of technical analysis, these are called adaptive
// moving averages; they track the time series more aggres-sively when it is making large
// moves. Tim Tillson is a software project manager at Hewlett-Packard, with degrees in
// mathematics and computer science. He has privately traded options and equities for 15 years.  
//
// 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


T3A(Length, b) =>
    pos = 0.0
    xPrice = close
    xe1 = ema(xPrice, Length)
    xe2 = ema(xe1, Length)
    xe3 = ema(xe2, Length)
    xe4 = ema(xe3, Length)
    xe5 = ema(xe4, Length)
    xe6 = ema(xe5, Length)
    c1 = -b*b*b
    c2 = 3*b*b+3*b*b*b
    c3 = -6*b*b-3*b-3*b*b*b
    c4 = 1+3*b+b*b*b+3*b*b
    nT3Average = c1 * xe6 + c2 * xe5 + c3 * xe4 + c4 * xe3
    pos:= iff(nT3Average > close, -1,
           iff(nT3Average < close, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & T3 Averages", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- T3 Averages ----")
LengthT3 = input(5, minval=1)
b = input(0.7, minval=0.01,step=0.01) 
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posT3A = T3A(LengthT3, b)
pos = iff(posReversal123 == 1 and posT3A == 1 , 1,
	   iff(posReversal123 == -1 and posT3A == -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 )

Plus de