Kombo-Handelsstrategie auf Basis von 123 Reversal und MACD

Schriftsteller:ChaoZhang, Datum: 2023-09-19 17:17:30
Tags:

Übersicht

Diese Strategie kombiniert 123 Umkehrmuster und MACD-Indikatoren, um durch Filterung stärkere Handelssignale zu generieren. 123 Umkehrungen erfassen kurzfristige Umkehrmöglichkeiten, während MACD eine mittelfristige, langfristige Trendführung bietet. Das Combo-Signal kann effektiv Hochwahrscheinlichkeits-Handelssetups entdecken.

Strategie Logik

  1. 123 Umkehrstrategie kauft, wenn die letzten zwei Tage Abwärtstrends waren und der heutige Schlusspunkt unter dem Stochastischen Schwellenwert liegt; verkauft, wenn die letzten zwei Tage Abwärtstrends waren und der heutige Wert unter dem Stochastischen Schwellenwert liegt.

  2. Die MACD-Strategie geht lang, wenn der schnelle MA über dem langsamen MA liegt, und kurz, wenn der schnelle MA unter dem langsamen MA liegt.

  3. Der Handel wird nur durchgeführt, wenn beide Strategien übereinstimmen, sonst wird keine Aktion durchgeführt.

Analyse der Vorteile

Hauptvorteile:

  1. Das Combo-Signal filtert falsche Ausbrüche und verbessert die Gewinnrate.

  2. 123 zeigt kurzfristige Umkehrungen auf, der MACD beurteilt mittelfristige und langfristige Trendrichtungen.

  3. Der Stochastic mit 123 vermeidet nach einer Trendumkehr einen Überhandel.

  4. Zwei Strategien teilen unterschiedliche Aufgaben, validieren sich gegenseitig und vermeiden eine Überoptimierung.

  5. Einfache Umstellung zwischen Long/Short, anpassungsfähig an verschiedene Marktumgebungen.

Risikoanalyse

Hauptrisiken:

  1. Das Combo-Signal ist vielleicht zu konservativ und verpasst gute Gelegenheiten.

  2. Rückschläge sind anfällig für plötzliche Ereignisse, anfällig für Misserfolge.

  3. Das Fehlen eines Stop-Loss setzt die Strategie großen Verlusten aus.

  4. Doppelfilterung kann zu fehlenden Trendgeschäften führen.

  5. Fehlende Optimierung der Parameter, möglicherweise nicht alle Instrumente.

Optimierungsrichtlinien

Verbesserungen

  1. Versuche verschiedene Parameterkombinationen, um optimale Werte zu finden.

  2. Zählen Sie den Stop-Loss zum Kontrollverlust pro Trade.

  3. Mehr Filterindikatoren zur Verbesserung der Signalqualität.

  4. Einführung von Modellen für maschinelles Lernen zur automatischen Optimierung von Parametern.

  5. Test über mehrere Handelsinstrumente hinweg zur Bewertung der Robustheit.

  6. Wechselparameter auf Basis der Marktbedingungen.

Zusammenfassung

Insgesamt vermeidet die Kombination von dualem Signal eine Überoptimierung im Vergleich zu einzelnen Strategien.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 24/07/2020
// 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 is one of the techniques described by William Blau in his book
// "Momentum, Direction and Divergence" (1995). If you like to learn more,
// we advise you to read this book. His book focuses on three key aspects
// of trading: momentum, direction and divergence. Blau, who was an electrical
// engineer before becoming a trader, thoroughly examines the relationship 
// between price and momentum in step-by-step examples. From this grounding,
// he then looks at the deficiencies in other oscillators and introduces some
// innovative techniques, including a fresh twist on Stochastics. On directional 
// issues, he analyzes the intricacies of ADX and offers a unique approach to help 
// define trending and non-trending periods.
// Blau`s indicator is like usual MACD, but it plots opposite of meaningof
// stndard MACD indicator.  
//
// 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

fADX(Len) =>
    up = change(high)
    down = -change(low)
    trur = rma(tr, Len)
    plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, Len) / trur)
    minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, Len) / trur)
    sum = plus + minus 
    100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), Len)

EMACD(r,SmthLen,LengthMACD) =>
    pos = 0
    source = close
    fastMA = ema(source, r)
    slowMA = ema(source, LengthMACD)
    xmacd = fastMA - slowMA
    xMA_MACD = ema(xmacd, SmthLen)
    pos := iff(xmacd < xMA_MACD, -1,
    	     iff(xmacd > xMA_MACD, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Ergodic MACD", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
r = input(14, minval=1)
LengthMACD = input(21, minval=1)
SmthLen = input(5, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posEMACD = EMACD(r,SmthLen,LengthMACD)
pos = iff(posReversal123 == 1 and posEMACD == 1 , 1,
	   iff(posReversal123 == -1 and posEMACD == -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