Stratégie de suivi des tendances quantitatives combinées

Auteur:ChaoZhang est là., Date: le 27 février 2024
Les étiquettes:

img

Résumé

L'idée de base de cette stratégie est de combiner la stratégie d'inversion 123 et l'indicateur d'oscillateur arc-en-ciel pour obtenir un double suivi des tendances et améliorer le taux de réussite de la stratégie.

Principaux

La stratégie se compose de deux parties:

  1. 123 Stratégie d'inversion: aller long si le prix de clôture diminue pour les deux jours précédents et augmente aujourd'hui, et la ligne Slow K de 9 jours est inférieure à 50; aller court si le prix de clôture augmente pour les deux jours précédents et diminue aujourd'hui, et la ligne Fast K de 9 jours est supérieure à 50.

  2. Indicateur d'oscillateur arc-en-ciel: Cet indicateur reflète le degré d'écart des prix par rapport aux moyennes mobiles. Lorsque l'indicateur est supérieur à 80, il indique que le marché a tendance à être instable. Lorsque l'indicateur est inférieur à 20, il indique que le marché a tendance à s'inverser.

Cette stratégie ouvre des positions lorsque des signaux longs et courts apparaissent, sinon elle aplatit les positions.

Analyse des avantages

Les avantages de cette stratégie sont les suivants:

  1. Le double filtre améliore la qualité du signal et réduit les erreurs de jugement.
  2. L'ajustement dynamique des positions réduit les pertes sur les marchés à sens unique.
  3. Il intègre des indicateurs à court et à moyen terme pour améliorer la stabilité.

Analyse des risques

Les risques de cette stratégie comprennent:

  1. L'optimisation incorrecte des paramètres peut entraîner un surajustement.
  2. La double ouverture augmente les coûts commerciaux.
  3. Le point stop-loss est vulnérable lorsque le prix fluctue violemment.

Ces risques peuvent être atténués en ajustant les paramètres, en optimisant la gestion des positions et en définissant un stop loss raisonnable.

Directions d'optimisation

Cette stratégie peut être optimisée dans les aspects suivants:

  1. Optimisez les paramètres pour trouver la meilleure combinaison de paramètres.
  2. Ajout d'un module de gestion des positions permettant d'ajuster dynamiquement les positions en fonction de la volatilité et du tirage.
  3. Augmenter le module stop loss et régler un stop loss raisonnable.
  4. Augmenter les algorithmes d'apprentissage automatique pour aider à juger les points d'inflexion.

Conclusion

Cette stratégie intègre la stratégie d'inversion 123 et l'indicateur d'oscillateur arc-en-ciel pour atteindre un double suivi de tendance. Tout en maintenant une grande stabilité, elle a un potentiel de rendement excédentaire. Une optimisation supplémentaire peut être effectuée pour améliorer la rentabilité de la stratégie.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 25/05/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
// Ever since the people concluded that stock market price movements are not 
// random or chaotic, but follow specific trends that can be forecasted, they 
// tried to develop different tools or procedures that could help them identify 
// those trends. And one of those financial indicators is the Rainbow Oscillator 
// Indicator. The Rainbow Oscillator Indicator is relatively new, originally 
// introduced in 1997, and it is used to forecast the changes of trend direction.
// As market prices go up and down, the oscillator appears as a direction of the 
// trend, but also as the safety of the market and the depth of that trend. As 
// the rainbow grows in width, the current trend gives signs of continuity, and 
// if the value of the oscillator goes beyond 80, the market becomes more and more 
// unstable, being prone to a sudden reversal. When prices move towards the rainbow 
// and the oscillator becomes more and more flat, the market tends to remain more 
// stable and the bandwidth decreases. Still, if the oscillator value goes below 20, 
// the market is again, prone to sudden reversals. The safest bandwidth value where 
// the market is stable is between 20 and 80, in the Rainbow Oscillator indicator value. 
// The depth a certain price has on a chart and into the rainbow can be used to judge 
// the strength of the move.
//
// 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


RO(Length, LengthHHLL) =>
    pos = 0.0
    xMA1 = sma(close, Length)
    xMA2 = sma(xMA1, Length)
    xMA3 = sma(xMA2, Length)
    xMA4 = sma(xMA3, Length)
    xMA5 = sma(xMA4, Length)
    xMA6 = sma(xMA5, Length)
    xMA7 = sma(xMA6, Length)
    xMA8 = sma(xMA7, Length)
    xMA9 = sma(xMA8, Length)
    xMA10 = sma(xMA9, Length)
    xHH = highest(close, LengthHHLL)
    xLL = lowest(close, LengthHHLL)
    xHHMAs = max(xMA1,max(xMA2,max(xMA3,max(xMA4,max(xMA5,max(xMA6,max(xMA7,max(xMA8,max(xMA9,xMA10)))))))))
    xLLMAs = min(xMA1,min(xMA2,min(xMA3,min(xMA4,min(xMA5,min(xMA6,min(xMA7,min(xMA8,min(xMA9,xMA10)))))))))
    xRBO = 100 * ((close - ((xMA1+xMA2+xMA3+xMA4+xMA5+xMA6+xMA7+xMA8+xMA9+xMA10) / 10)) / (xHH - xLL))
    xRB = 100 * ((xHHMAs - xLLMAs) / (xHH - xLL))
    pos:= iff(xRBO > 0, 1,
           iff(xRBO < 0, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Rainbow Oscillator", 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, "---- Rainbow Oscillator ----")
LengthRO = input(2, minval=1)
LengthHHLL = input(10, minval=2, title="HHV/LLV Lookback")
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posRO = RO(LengthRO, LengthHHLL)
pos = iff(posReversal123 == 1 and posRO == 1 , 1,
	   iff(posReversal123 == -1 and posRO == -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