Strategie zur Rückprüfung des Regenbogenoszillators

Schriftsteller:ChaoZhang, Datum: 2023-12-26 15:08:17
Tags:

img

Übersicht

Die Rainbow Oscillator Backtesting Strategie ist eine quantitative Handelsstrategie, die auf dem Rainbow Oscillator-Indikator basiert.

Strategie Logik

Der Kernindikator dieser Strategie ist der Regenbogen-Oszillator (RO), der wie folgt berechnet wird:

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

Der 10-Tage- gleitende Durchschnitt ist der einfache gleitende Durchschnitt der Schlusskursentwicklung in den letzten 10 Perioden. Dieser Indikator spiegelt die Abweichung des Preises gegenüber seinem eigenen gleitenden Durchschnitt wider. Wenn RO > 0, bedeutet dies, dass der Preis über dem gleitenden Durchschnitt liegt, ein bullisches Signal; wenn RO < 0, bedeutet dies, dass der Preis unter dem gleitenden Durchschnitt liegt, ein bärisches Signal.

Die Strategie berechnet außerdem einen Hilfsindikator - Bandbreite (RB), der als

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

Der RB-Indikator spiegelt die Breite zwischen gleitenden Durchschnitten wider. Je größer der RB ist, desto größer ist die Kursschwankung und umgekehrt ist der Preis stabiler. Der RB-Indikator kann verwendet werden, um die Stabilität des Marktes zu beurteilen.

Nach den Werten der RO- und RB-Indikatoren beurteilt die Strategie den Grad der Kursentwicklung und die Stabilität des Marktes und erzeugt Handelssignale für Long- und Short-Positionen.

Vorteile

Die Vorteile dieser Strategie sind:

  1. Das Urteilsvermögen auf zwei Indikatoren vermeidet die Einschränkungen des Urteils auf einen Indikator.
  2. Kann gleichzeitig die Preisentwicklung und die Marktstabilität beurteilen.
  3. Einfach zu berechnen, leicht zu verstehen und umzusetzen.
  4. Visualisierte Indikatoren bilden einen Regenbogen-Effekt, der intuitiv und leicht zu lesen ist.

Risiken

Diese Strategie birgt auch einige Risiken:

  1. Die falsche Einstellung der Parameter der RO- und RB-Indikatoren kann zu falschen Handelssignalen führen.
  2. Bei einer doppelten gleitenden Durchschnittsstrategie werden in der Regel falsche Signale und häufiger Handel generiert.
  3. Eine unangemessene Backtestzeit und Produktwahl beeinträchtigen die Wirksamkeit der Strategie.
  4. Die Handelskosten werden nicht berücksichtigt, die tatsächlichen Ergebnisse können schlecht sein.

Gegenmaßnahmen:

  1. Optimierung der Parameter für RO- und RB-Indikatoren.
  2. Fügen Sie Filterbedingungen hinzu, um häufigen Handel zu vermeiden.
  3. Wählen Sie einen geeigneten Backtestzyklus und eine geeignete Sorte aus.
  4. Berechnen und berücksichtigen Sie die Transaktionskosten.

Optimierung

Die Strategie kann auch auf folgende Weise optimiert werden:

  1. Hinzufügen von Smooth-Funktion zum RO-Indikator, um dramatische Schwankungen zu vermeiden.
  2. Hinzufügen einer Stop-Loss-Strategie, um Einzelverluste zu kontrollieren.
  3. Kombination mit anderen Indikatoren für den Portfoliohandel zur Steigerung der Rentabilität.
  4. Hinzufügen eines maschinellen Lernmodells zur Vorhersage und Bewertung der Indikatorwirksamkeit.
  5. Optimierung der Parameter für verschiedene Sorten, um die Anpassungsfähigkeit zu verbessern.

Schlussfolgerung

Die Rainbow Oscillator Backtesting-Strategie beurteilt Markttrends und Stabilität, indem sie die Abweichung zwischen Preisen und gleitenden Durchschnitten berechnet und diese Informationen verwendet, um lange / kurze Handelsentscheidungen zu treffen. Diese Strategie ist intuitiv, einfach umzusetzen und hat einen gewissen praktischen Wert.


/*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)

Mehr