Kombinationsstrategie mit mehreren Indikatoren

Schriftsteller:ChaoZhang, Datum: 2023-10-07 10:25:40
Tags:

Übersicht

Diese Strategie kombiniert mehrere technische Indikatoren, um genauere und zuverlässigere Handelssignale zu erzeugen. Sie besteht aus zwei Teilen: Der erste Teil verwendet 123 Umkehrstrategie, und der zweite Teil verwendet TEMA Indikator. Die von beiden erzeugten Handelssignale werden kombiniert, um falsche Signale auszufiltern und die Signalqualität zu verbessern.

Strategie Logik

Der erste Teil verwendet 123 Umkehrstrategie. Es basiert auf dem stochastischen Indikator. Wenn der Schlusskurs zwei aufeinanderfolgende Tage umkehrt (z. B. von Aufstieg zu Fall) und der stochastische Indikator ein Überkauf- oder Überverkaufssignal zeigt, generiert er Kauf- oder Verkaufssignale.

Wenn der Schlusskurs höher als die vorherigen Tage ist und die stochastische langsame Linie unter 50 liegt, erzeugt es ein Kaufsignal.

Der zweite Teil verwendet den TEMA-Indikator. TEMA steht für Triple Exponential Moving Average und wird berechnet:

TEMA = 3EMA (Schließung, N) - 3EMA (N) + EMA (N)

Wenn der Schlusskurs über dem TEMA-Wert liegt, erzeugt er ein Kaufsignal. Wenn der Schlusskurs unter dem TEMA-Wert liegt, erzeugt er ein Verkaufssignal.

Schließlich werden die Signale der beiden Indikatoren kombiniert und erst dann, wenn beide Indikatoren konsistente Signale erzeugen (beide kaufen oder beide verkaufen), werden tatsächliche Handelssignale erzeugt.

Vorteile

  • Die Kombination mehrerer Indikatoren hilft, einige falsche Signale auszufiltern und die Signalqualität zu verbessern.
  • Die Strategie zur Umkehrung der Preise vermeidet die Verfolgung hoher Preise und Panikverkäufe, indem sie auf tatsächliche Preisumkehrungen reagiert.
  • Die Mehrfachglättung von TEMA verringert den Lärm und erzeugt zuverlässigere Signale.
  • Die Kombination von zwei verschiedenen Indikatoren sorgt weitgehend für die Zuverlässigkeit der Handelssignale.

Risiken und Verbesserungen

  • Bei Umkehrstrategien besteht das Risiko, dass wichtige Aufwärtstrends in einem Bullenmarkt verpasst werden.
  • TEMA als Trendfolgende Indikator kann auch manchmal falsche Signale erzeugen.
  • Bei unsachgemäß eingestellten Parametern könnten beide Indikatoren zu wenige Signale erzeugen.
  • Das Hinzufügen von Filtern zur Deaktivierung von Strategien in bestimmten Marktumgebungen könnte helfen, Risiken zu kontrollieren.

Zusammenfassung

Diese Strategie verbessert die Signalqualität durch eine vernünftige Kombination mehrerer Indikatoren, was sie zu einer sehr effektiven quantitativen Handelsstrategie macht.


/*backtest
start: 2023-09-29 00:00:00
end: 2023-10-06 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 24/11/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
// This study plots the TEMA1 indicator. TEMA1 ia s triple MA (Moving Average),
// and is calculated as 3*MA - (3*MA(MA)) + (MA(MA(MA)))
//
// 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


TEMA(Length) =>
    pos = 0.0
    xPrice = close
    xEMA1 = ema(xPrice, Length)
    xEMA2 = ema(xEMA1, Length)
    xEMA3 = ema(xEMA2, Length)
    nRes = 3 * xEMA1 - 3 * xEMA2 + xEMA3
    pos := iff(close > nRes, 1,
             iff(close < nRes, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & TEMA1", 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, "---- TEMA1 ----")
LengthTEMA = input(26, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posT3A = TEMA(LengthTEMA)
pos = iff(posReversal123 == 1 and posT3A == 1 , 1,
	   iff(posReversal123 == -1 and posT3A == -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 )

Mehr