Umgekehrte Triaden-Quantitative Strategie

Schriftsteller:ChaoZhang, Datum: 2023-12-01 14:14:46
Tags:

img

Übersicht

Die Reverse Triad Quantitative Strategy kombiniert die 123 Reversal Strategy und den Accelerator Oscillator, um Trendumkehrungen zu beurteilen und genauere Handelssignale zu generieren.

Strategie Logik

Diese Strategie besteht aus zwei unabhängigen Logikcodes.

Der erste Teil ist die 123 Reversal Strategy. Sein Prinzip für die Beurteilung von Reversalsignalen lautet: ein Kaufsignal wird erzeugt, wenn der Schlusskurs zwei aufeinanderfolgende Tage unter dem vorherigen Schlusskurs liegt und die 9-tägige STOCH K-Linie unter der D-Linie liegt; ein Verkaufssignal wird erzeugt, wenn der Schlusskurs zwei aufeinanderfolgende Tage über dem vorherigen Schlusskurs liegt und die 9-tägige STOCH K-Linie über der D-Linie liegt.

Der zweite Teil ist der Accelerator Oscillator Indikator. Dieser Indikator spiegelt die Geschwindigkeit der Veränderung des Awesome Oscillators durch die Berechnung der Differenz zwischen dem Awesome Oscillator und seinem 5-Perioden gleitenden Durchschnitt wider, was dazu beitragen kann, Trendumkehrpunkte früher als der Awesome Oscillator zu identifizieren.

Diese Strategie verbindet schließlich die Signale der beiden Indikatoren: Wenn die Signale beider Indikatoren in die gleiche Richtung sind (beide lang oder beide kurz), wird das entsprechende Richtungssignal ausgegeben; wenn die Signale der beiden Indikatoren inkonsistent sind, wird ein Nullsignal ausgegeben.

Analyse der Vorteile

Diese Strategie kombiniert doppelte Indikatorurteile, um einige falsche Signale auszufiltern, wodurch die Signale genauer und zuverlässiger werden.

Risikoanalyse

Das größte Risiko dieser Strategie besteht darin, dass sich der Preis bereits erheblich umgekehrt hat, bevor die Indikatoren Signale erzeugen, was dazu führt, dass der beste Einstiegspunkt verpasst wird.

Um das Einstiegsrisiko zu beheben, können mehr Umkehrindikatoren kombiniert werden, um die Signalzuverlässigkeit zu gewährleisten. Für das Problem der Parameteroptimierung kann ein dynamischer Anpassungsmechanismus eingerichtet werden, um die Parameterrationalität zu gewährleisten.

Optimierungsrichtlinien

Die folgenden Aspekte dieser Strategie können optimiert werden:

  1. Hinzufügen von Filterbedingungen, um zu vermeiden, dass falsche Signale während der Stufen hoher Volatilität erzeugt werden

  2. Kombination von mehreren Umkehrindikatoren zur Bildung eines Mehrfachvalidierungsmechanismus

  3. Einrichtung eines Parameter-Selbstanpassungsmechanismus zur dynamischen Anpassung der Indikatorparameter

  4. Optimierung von Stop-Loss-Strategien zur Kontrolle von Single Stop-Loss

Schlussfolgerung

Die Reverse Triad Quantitative Strategy verbessert die Signalgenauigkeit durch doppelte Verifizierung, was hilfreich ist, um die wichtigsten Umkehrpunkte des Marktes zu erfassen. Gleichzeitig sollte auch darauf geachtet werden, Risiken wie Indikatorverzögerungen und Parameterversagen zu vermeiden. Kontinuierliche Verifizierung und Optimierung der Strategie ist erforderlich, um sie dem sich ständig verändernden Marktumfeld anzupassen. Diese Strategie eignet sich für Anleger mit etwas quantitativer Handelserfahrung.


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

//@version=3
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 25/04/2019
// This is combo strategies for get 
// a cumulative signal. Result signal will return 1 if two strategies 
// is long, -1 if all strategies is short and 0 if signals of strategies is not equal.
//
// 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.
//
// Secon strategy
// The Accelerator Oscillator has been developed by Bill Williams 
// as the development of the Awesome Oscillator. It represents the 
// difference between the Awesome Oscillator and the 5-period moving 
// average, and as such it shows the speed of change of the Awesome 
// Oscillator, which can be useful to find trend reversals before the 
// Awesome Oscillator does.
//
// 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

AcceleratorOscillator(nLengthSlow, nLengthFast) =>
    xSMA1_hl2 = sma(hl2, nLengthFast)
    xSMA2_hl2 = sma(hl2, nLengthSlow)
    xSMA1_SMA2 = xSMA1_hl2 - xSMA2_hl2
    xSMA_hl2 = sma(xSMA1_SMA2, nLengthFast)
    nRes =  xSMA1_SMA2 - xSMA_hl2
    cClr = nRes > nRes[1] ? blue : red
    pos = 0.0
    pos := iff(nRes > 0, 1,
             iff(nRes < 0, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal and Accelerator Oscillator (AC)", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
nLengthSlow = input(34, minval=1, title="Length Slow")
nLengthFast = input(5, minval=1, title="Length Fast")
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posAcceleratorOscillator = AcceleratorOscillator(nLengthSlow, nLengthFast)
pos = iff(posReversal123 == 1 and posAcceleratorOscillator == 1 , 1,
	   iff(posReversal123 == -1 and posAcceleratorOscillator == -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 ? red: possig == 1 ? green : blue ) 

Mehr