Stratégie de contre-test de l'oscillateur arc-en-ciel

Auteur:ChaoZhang est là., Date: le 26-12-2023 15:08:17
Les étiquettes:

img

Résumé

La stratégie de backtesting de l'oscillateur arc-en-ciel est une stratégie de trading quantitative basée sur l'indicateur de l'oscillateur arc-en-ciel.

La logique de la stratégie

L'indicateur de base de cette stratégie est l'oscillateur arc-en-ciel (RO), qui est calculé comme suit:

RO = 100 * ((Close - 10-day Moving Average) / (HHV(High, N) - LLV(Low, N))) 

où la moyenne mobile de 10 jours est la moyenne mobile simple des prix de clôture au cours des 10 dernières périodes. Cet indicateur reflète l'écart du prix par rapport à sa propre moyenne mobile. Lorsque RO > 0, cela signifie que le prix est supérieur à la moyenne mobile, un signal haussier; lorsque RO < 0, cela signifie que le prix est inférieur à la moyenne mobile, un signal baissier.

La stratégie prévoit également un indicateur auxiliaire - la bande passante (RB), qui est calculé comme suit:

RB = 100 * ((Highest value of moving averages - Lowest value of moving averages) / (HHV(High, N) - LLV(Low, N)))

L'indicateur RB reflète la largeur entre les moyennes mobiles. Plus l'indicateur RB est grand, plus la fluctuation des prix est importante, et vice versa.

Selon les valeurs des indicateurs RO et RB, la stratégie évalue le degré d'écart de prix et la stabilité du marché et génère des signaux de négociation pour les positions longues et courtes.

Les avantages

Les avantages de cette stratégie sont les suivants:

  1. Le jugement sur deux indicateurs évite les limites du jugement sur un seul indicateur.
  2. Peut juger simultanément des tendances des prix et de la stabilité du marché.
  3. Simple à calculer, facile à comprendre et à mettre en œuvre.
  4. Les indicateurs visualisés forment un effet arc-en-ciel qui est intuitif et facile à lire.

Les risques

Cette stratégie comporte également certains risques:

  1. Des paramètres incorrects des indicateurs RO et RB peuvent provoquer des signaux de négociation erronés.
  2. Les stratégies de moyenne mobile doubles ont tendance à générer de faux signaux et des transactions fréquentes.
  3. Une période de rétro-test et une sélection de produits inappropriées affecteront l'efficacité de la stratégie.
  4. Les coûts de négociation ne sont pas pris en compte, les résultats réels peuvent être médiocres.

Les contre-mesures:

  1. Optimiser les paramètres pour les indicateurs RO et RB.
  2. Ajoutez des conditions de filtrage pour éviter les échanges fréquents.
  3. Sélectionnez le cycle et la variété de backtest appropriés.
  4. Calculer et prendre en compte les coûts de transaction.

Optimisation

La stratégie peut également être optimisée de la manière suivante:

  1. Ajoutez une fonction Smooth à l'indicateur RO pour éviter les fluctuations spectaculaires.
  2. Ajoutez une stratégie de stop loss pour contrôler une seule perte.
  3. Combiner avec d'autres indicateurs pour le trading de portefeuille afin d'accroître la rentabilité.
  4. Ajouter un modèle d'apprentissage automatique pour la prédiction et évaluer l'efficacité des indicateurs.
  5. Optimiser les paramètres pour les différentes variétés afin d'améliorer l'adaptabilité.

Conclusion

La stratégie de backtesting de l'oscillateur arc-en-ciel évalue les tendances et la stabilité du marché en calculant l'écart entre les prix et les moyennes mobiles, et utilise ces informations pour prendre des décisions de trading long/short.


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

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 18/03/2018
// 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.
//
// You can change long to short in the Input Settings
// WARNING:
//  - For purpose educate only
//  - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="Rainbow Oscillator Backtest")
Length = input(2, minval=1)
LengthHHLL = input(10, minval=2, title="HHV/LLV Lookback")
reverse = input(false, title="Trade reverse")
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))
clr = iff(xRBO >= 0, green, red)
pos = iff(xRBO > 0, 1,
       iff(xRBO < 0, -1, nz(pos[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)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue ) 
plot(xRBO, color=clr, title="RO", style= histogram, linewidth=2)
p0 = plot(0, color = gray, title="0")
p1 = plot(xRB, color=green, title="RB")
p2 = plot(-xRB, color=red, title="RB")
fill(p1, p0, color=green)
fill(p2, p0, color=red)

Plus de