Trendumkehrung und Ehlers führende Indikator-Kombi-Strategie

Schriftsteller:ChaoZhang, Datum: 2023-11-07 16:10:26
Tags:

img

Übersicht

Diese Strategie kombiniert eine Trendumkehrstrategie und eine Ehlers-Leading-Indikator-Strategie, um zuverlässigere Handelssignale zu generieren.

Strategie Logik

Strategie zur Umkehrung des Trends

Diese Strategie stammt aus dem Buch How I Tripled My Money in the Futures Market von Ulf Jensen, Seite 183. Es ist eine Umkehrungsstrategie. Es geht lang, wenn der Schlusssatz für 2 aufeinanderfolgende Tage höher als der vorherige Schlusssatz ist und die 9-tägige stochastische langsame Linie unter 50 liegt. Es geht kurz, wenn der Schlusssatz für 2 aufeinanderfolgende Tage niedriger als der vorherige Schlusssatz ist und die 9-tägige stochastische Schnelllinie über 50 liegt.

Ehlers führende Indikatorstrategie

Diese Strategie zeichnet einen einzigen täglichen synthetischen Preis (DSP) und einen täglichen Ehlers-Leading-Indikator (ELI) anhand von Intraday-Daten. DSP erfasst den dominierenden Kurszyklus und wird berechnet, indem ein 3-polliger Butterworth-Filter von einem 2-polösen Filter subtrahiert wird. ELI gibt eine fortgeschrittene Angabe von zyklischen Wendepunkten und wird berechnet, indem der einfache gleitende Durchschnitt von DSP von DSP selbst subtrahiert wird. Kauf- und Verkaufssignale werden erzeugt, wenn ELI über oder unter DSP überschreitet.

Analyse der Vorteile

Der größte Vorteil dieser Kombinationsstrategie besteht darin, die Identifizierung von Trendumkehrungen und die Erkennung von zyklischen Wendepunkten für zuverlässigere Signale zu kombinieren.

Ein weiterer Vorteil ist die Flexibilität beim Parameter-Tuning. Die Parameter des stochastischen Indikators können basierend auf den Marktbedingungen angepasst werden. Die Zykluslänge für den Ehlers-Leading-Indikator ist auch für verschiedene Zyklen anpassbar.

Risikoanalyse

Das größte Risiko dieser Strategie besteht darin, anhaltende Trends zu verpassen. Da die Strategie auf Umkehrsignale wartet, kann sie starke frühe Trendbewegungen verpassen. Umkehrsignale können sich auch als falsche Ausbrüche erweisen, die dazu führen, dass sie gefangen werden.

Die Lösungen bestehen darin, die Parameter anzupassen, um die Umkehrerkennungszeit zu verkürzen, um eine zeitnahe Trendumkehr zu erfassen.

Optimierungsrichtlinien

Die Strategie kann in folgenden Bereichen verbessert werden:

  1. Einführung von Stop Loss zur Kontrolle von Einzelverlusten.

  2. Optimierung der Parameter zur Anpassung der Umkehrsignalperioden für verschiedene Marktumgebungen.

  3. Hinzufügen anderer Indikatorfilter zur Verbesserung der Signalqualität und Verringerung falscher Signale.

  4. Hinzufügen von Positionsgrößen und Risikomanagementmodulen.

  5. Testparameter für verschiedene Produkte, um optimale Anpassungen zu finden.

  6. Fügen Sie maschinelle Lernmodule für adaptive Parameter-Tuning hinzu.

Zusammenfassung

Die Strategie kombiniert Trendumkehrung und zyklische Wendepunktdetektion für einen zuverlässigeren Markteintritt. Der größte Vorteil ist die hohe Signalqualität und Flexibilität. Das Hauptrisiko ist das Fehlen früher Trends, die durch Parameter-Tuning und Stop-Loss gemildert werden können. Zukünftige Verbesserungen können sich auf Stop-Loss, Parameteroptimierung, Signalfilterung usw. konzentrieren, um die Strategie in allen Marktumgebungen robust zu machen.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 26/11/2019
// 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 Indicator plots a single
// Daily DSP (Detrended Synthetic Price) and a Daily ELI (Ehlers Leading
// Indicator) using intraday data.
// Detrended Synthetic Price is a function that is in phase with the dominant
// cycle of real price data. This one is computed by subtracting a 3 pole Butterworth
// filter from a 2 Pole Butterworth filter. Ehlers Leading Indicator gives an advanced
// indication of a cyclic turning point. It is computed by subtracting the simple
// moving average of the detrended synthetic price from the detrended synthetic price.
// Buy and Sell signals arise when the ELI indicator crosses over or under the detrended
// synthetic price.
// See "MESA and Trading Market Cycles" by John Ehlers pages 64 - 70. 
//
// 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

D_ELI(Length) =>
    pos = 0.0
    xHL2 = security(syminfo.tickerid, 'D', hl2)
    xEMA1 = ema(xHL2, Length)
    xEMA2 = ema(xHL2, 2 * Length)
    xEMA1_EMA2 = xEMA1 - xEMA2
    xResultEMA = ema(xEMA1_EMA2, Length)
    nRes = xEMA1_EMA2 - xResultEMA
    pos:= iff(nRes > 0, 1,
	       iff(nRes < 0, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & D_ELI (Ehlers Leading Indicator)", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthELI = input(7, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posD_ELI = D_ELI(LengthELI)
pos = iff(posReversal123 == 1 and posD_ELI == 1 , 1,
	   iff(posReversal123 == -1 and posD_ELI == -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