Stratégie d'inversion de l'élan avec double confirmation

Auteur:ChaoZhang est là., Date: 2024-02-20 15h27
Les étiquettes:

img

Résumé

La stratégie de l'élan inverse combine des signaux d'inversion de prix et des signaux d'inversion de volatilité pour mettre en œuvre le trading de tendance. Elle utilise principalement le modèle 123 pour déterminer les points d'inversion de prix, tout en utilisant la volatilité du canal de Donchian comme filtre pour les faux signaux. Cette stratégie est adaptée à la détention à moyen et long terme.

Principe de stratégie

La partie de l'inversion des prix utilise le modèle 123 pour juger. Ce modèle signifie que les prix des deux premières lignes K se déplacent dans des directions opposées (haut ou bas), et la troisième ligne K s'inverse à nouveau (haut ou bas). Par conséquent, il est appelé le modèle 123. Quand un prix apparaît avec trois lignes K en inversion, cela indique généralement qu'une tendance à court terme est sur le point de tourner. Pour vérifier davantage la fiabilité des inversions de prix, cette stratégie utilise également un indicateur stochastique pour déclencher des transactions uniquement lorsque l'indicateur stochastique s'inverse également (la ligne rapide diminue ou augmente rapidement).

La partie de l'inversion de la volatilité utilise la volatilité du canal de Donchian. Le canal de Donchian reflète principalement la plage de fluctuation des prix. Lorsque la volatilité des prix augmente, la largeur du canal de Donchian s'élargit également; lorsque la volatilité des prix diminue, la largeur du canal de Donchian se rétrécit également. La volatilité du canal de Donchian (largeur) peut mesurer efficacement le degré de fluctuation du marché et le niveau de risque. Cette stratégie utilise l'inversion de la volatilité du canal de Donchian pour filtrer les faux signaux, n'émettant des signaux de trading que lorsque la volatilité et les prix s'inverseront en même temps, évitant ainsi d'être pris dans des opérations de rappel.

En résumé, cette stratégie garantit la fiabilité des signaux de négociation et contrôle les risques grâce à la double validation de l'inversion, ce qui en fait une stratégie de tendance relativement solide.

Les avantages

  • Le mécanisme de double filtrage garantit la fiabilité des signaux de négociation et évite les fausses ruptures
  • Contrôle des risques et réduit la probabilité de pertes
  • Convient pour la détention à moyen et long terme, évite le bruit du marché et capte les rendements excédentaires
  • Grand espace d'optimisation pour les paramètres pouvant être ajustés pour un état optimal
  • Un style unique fonctionne bien en combinaison avec des indicateurs techniques communs

Les risques

  • S'appuie sur l'optimisation des paramètres, les paramètres inappropriés affectent les performances de la stratégie
  • La stratégie de stop loss doit être améliorée, le contrôle maximal du tirage doit être amélioré
  • La fréquence de négociation peut être faible, ne peut pas s'adapter à la négociation algorithmique à haute fréquence
  • Requiert une sélection de produits et de délais appropriés, une portée d'application limitée
  • L'apprentissage automatique peut être utilisé pour trouver des paramètres optimaux

Directions d'optimisation

  • Augmenter le module d'arrêt de perte adaptatif pour réduire considérablement le tirage maximum
  • Introduction d'un indicateur de volume de négociation pour assurer l'entrée sur les écarts de volume élevés
  • Optimiser les paramètres pour une meilleure stabilité
  • Essayez différents produits et délais pour trouver le meilleur
  • Essayez de les combiner avec d'autres indicateurs ou stratégies pour une synergie 1+1>2

Résumé

La stratégie de l'élan de renversement permet un bon contrôle des risques grâce à une double confirmation de l'inversion des prix et de l'inversion de la volatilité. Par rapport aux indicateurs simples, elle filtre beaucoup de bruit et a une meilleure stabilité. En améliorant l'optimisation des paramètres, en introduisant des modules de stop loss, en introduisant du volume, etc., cette stratégie peut améliorer encore la qualité du signal et la stabilité des bénéfices.


/*backtest
start: 2024-01-20 00:00:00
end: 2024-02-19 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 06/03/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 Donchian Channel was developed by Richard Donchian and it could be compared 
// to the Bollinger Bands. When it comes to volatility analysis, the Donchian Channel 
// Width was created in the same way as the Bollinger Bandwidth technical indicator was.
//
// As was mentioned above the Donchian Channel Width is used in technical analysis to measure 
// volatility. Volatility is one of the most important parameters in technical analysis. 
// A price trend is not just about a price change. It is also about volume traded during this 
// price change and volatility of a this price change. When a technical analyst focuses his/her 
// attention solely on price analysis by ignoring volume and volatility, he/she only sees a part 
// of a complete picture only. This could lead to a situation when a trader may miss something and 
// lose money. Lets take a look at a simple example how volatility may help a trader:
//
//    Most of the price based technical indicators are lagging indicators.
//    When price moves on low volatility, it takes time for a price trend to change its direction and 
// it could be ok to have some lag in an indicator.
//    When price moves on high volatility, a price trend changes its direction faster and stronger. 
// An indicator's lag acceptable under low volatility could be financially suicidal now - Buy/Sell signals could be generated when it is already too late.
//
// Another use of volatility - very popular one - it is to adapt a stop loss strategy to it:
//    Smaller stop-loss recommended in low volatility periods. If it is not done, a stop-loss could 
// be generated when it is too late.
//    Bigger stop-loss recommended in high volatility periods. If it is not done, a stop-loss could 
// be triggered too often and you may miss good trades.
//
// 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

DCW(length, smoothe) =>
    pos = 0.0
    xUpper = highest(high, length)
    xLower = lowest(low, length)
    xDonchianWidth = xUpper - xLower
    xSmoothed = sma(xDonchianWidth, smoothe)
    pos := iff(xDonchianWidth > xSmoothed, -1,
              iff(xDonchianWidth < xSmoothed, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Donchian Channel Width", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthDCW = input(20, minval=1)
SmootheSCW = input(22, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posDCW = DCW(LengthDCW, SmootheSCW)
pos = iff(posReversal123 == 1 and posDCW == 1 , 1,
	   iff(posReversal123 == -1 and posDCW == -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