DMI- und Moving Average Convergence-Handelsstrategie


Erstellungsdatum: 2023-09-19 21:51:14 zuletzt geändert: 2023-09-19 21:51:14
Kopie: 1 Klicks: 733
1
konzentrieren Sie sich auf
1617
Anhänger

Überblick

Die Strategie kombiniert die 123 Umkehrstrategie, die DMI-Strategie und die Moving-Average-Strategie, um eine effektive Aggregation verschiedener Arten von Strategien zu einer leistungsstarken Kombinationsstrategie zu bilden. Die Strategie kann bei einer Trendwende umgekehrt betrieben werden, aber auch bei einer Fortführung des Trends, während die Moving-Average-Strategie filtert wird, um die Richtung der Markttrends effektiv zu erkennen und die Strategie zu verbessern.

Strategieprinzip

  1. 123 Umkehrstrategie: Wenn der Schlusskurs nach 2 aufeinanderfolgenden Tagen unter dem Schlusskurs des Vortages in den Schlusskurs des Vortages umgewandelt wird, und 9 Tage langsamer K-Linien unter 50 sind, machen Sie mehr; Wenn der Schlusskurs nach 2 aufeinanderfolgenden Tagen höher als der Schlusskurs des Vortages in den Schlusskurs des Vortages umgewandelt wird, und 9 Tage lang schneller K-Linien über 50 sind, machen Sie leer.

  2. DMI-Strategie: Mehr machen, wenn +DI-Linien durch -DI-Linien; leeren, wenn +DI-Linien unter -DI-Linien durch.

  3. Moving-Average-Strategien: Vermehrung beim Durchschnittskurs über dem Schlusskurs; Verlust beim Durchschnittskurs unter dem Schlusskurs.

  4. Die drei Strategie-Signale geben ein Gleichgewichtssignal an, um die Position zu eröffnen, ansonsten ist die Position leer.

Die Strategie kombiniert die Trendstrategie mit der Umkehrstrategie, um die Gelegenheit zur Preisumkehr rechtzeitig zu erfassen, ohne die Gelegenheit zu verpassen, den Trend zu betreiben. Die Filterung von Moving Averages kann falsche Signale reduzieren. Mehrere Strategien überprüfen sich gegenseitig und können die Zuverlässigkeit der Signale erhöhen.

Strategische Stärkenanalyse

  1. In Kombination mit mehreren Strategien erhöht sich die Gewinnrate. Die 123 Umkehrstrategie kann Wendepunkte erfassen, die DMI-Strategie kann Trends erfassen, und der Moving Average kann Signale filtern.

  2. Die Umkehrstrategie kombiniert mit der Trendstrategie, um sowohl Umkehr als auch Trend zu erfassen.

  3. Die Filterung von Moving Averages reduziert die falschen Signale, die durch kurzfristige Schwankungen erzeugt werden.

  4. Eine Kombination aus mehreren Strategien kann gegenseitig verifizierte Signale liefern, um zu vermeiden, dass eine einzelne Strategie aufgrund eines bestimmten Marktumfelds fehlschlägt.

  5. Strategieparameter sind zahlreich und können optimiert werden, um die optimale Kombination von Parametern zu finden und die Strategie-Stabilität zu verbessern.

Risikoanalyse

  1. Eine Umkehrstrategie kann leicht in einen schwankenden Trend eingeschlossen werden. Sie kann durch eine Kombination von Trendstrategien umgangen werden.

  2. Die DMI-Strategie kann die Chance verpassen, die zu Beginn des Trends besteht. Die Parameter des DMI können entsprechend verkürzt werden, um die Empfindlichkeit zu erhöhen.

  3. Es gibt eine Verzögerung bei den Moving Averages, die die Signalgenerierung verzögern kann. Die Perioden können entsprechend verkürzt werden, um die Reaktionsgeschwindigkeit zu beschleunigen.

  4. Die Kombination von mehreren Strategien erhöht zwar die Gewinnrate, erhöht aber auch die Komplexität der Strategie. Die Einstellungen der Parameter müssen sorgfältig getestet werden.

  5. Die Strategie ist auf die Kosten des Handels sensibel. Es wird empfohlen, die Stop-Loss-Range entsprechend zu erweitern und zu häufige Off-Positionen zu vermeiden.

Richtung der Strategieoptimierung

  1. Optimierung der einzelnen Strategieparameter, um die optimale Kombination von Parametern zu finden

  2. Das Hinzufügen von Filtersignalen für andere Indikatoren wie MACD, RSI usw. verbessert die Strategie-Stabilität weiter.

  3. Steigerung von Stop-Loss-Strategien wie Trend-Stopps und Shake-Stopps zur Risikokontrolle.

  4. Optimierung des Positionsmanagements, wie beispielsweise der Fest- und Dynamipositionen, zur Steigerung der strategischen Rendite.

  5. Parameter-Anpassungen für spezifische Sorten zur Verbesserung der Anpassungsfähigkeit der Strategie.

  6. Mehr Daten aus der Vergangenheit, um die Strategie zu verbessern.

Zusammenfassen

Diese Strategie bildet eine flexible und variable Aggregationsstrategie durch die effektive Kombination von Umkehr-, Trend- und Moving-Average-Filtern. Sie erfasst sowohl Preiswendepunkte als auch die Fortsetzung von Trends und verbessert die Stabilität und Zuverlässigkeit des Signals durch eine Kombination aus mehreren Strategien. Es gibt noch Raum für weitere Verbesserungen in den Bereichen Optimierung der Parameter, Stop-Loss-Strategie und Positionsmanagement.

Strategiequellcode
/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-18 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 15/10/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
// The related article is copyrighted material from Stocks & Commodities Aug 2009 
//
// 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

fFilter(xSeriesSum, xSeriesV, Filter) =>
    iff(xSeriesV > Filter, xSeriesSum, 0)

DMIMA(Length_MA, Length_DMI) =>
    pos = 0.0
    xMA = sma(close, Length_MA)
    up = change(high)
    down = -change(low)
    trur = rma(tr, Length_DMI)
    xPDI = fixnan(100 * rma(up > down and up > 0 ? up : 0, Length_DMI) / trur)
    xNDI = fixnan(100 * rma(down > up and down > 0 ? down : 0, Length_DMI) / trur)
    nPDI = xPDI
    nNDI = xNDI
    nMA = xMA
    nPDI_1 = xPDI[1]
    nNDI_1 = xNDI[1]
    nMA_1 = xMA[1]
    bMDILong = iff(nPDI > nNDI and nPDI_1 < nNDI_1, true, 
                 iff(nPDI < nNDI and nPDI_1 > nNDI_1, false, false)) 
    bMDIShort = iff(nPDI > nNDI and nPDI_1 < nNDI_1, false, 
                  iff(nPDI < nNDI and nPDI_1 > nNDI_1, true, false)) 
    bMALong = iff(close > nMA and close[1] < nMA_1, true, 
                 iff(close < nMA and close[1] > nMA_1, false, false))
    bMAShort = iff(close > nMA and close[1] < nMA_1, false, 
                 iff(close < nMA and close[1] > nMA_1, true, false))
    pos := iff(bMDILong and bMALong, 1, 
         iff(bMDIShort and bMAShort, -1, nz(pos[1], 0)))
    pos

strategy(title="Combo Backtest 123 Reversal & DMI & Moving Average", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
Length_MA = input(30, minval=1)
Length_DMI = input(14, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posDMIMA = DMIMA(Length_MA,Length_DMI)
pos = iff(posReversal123 == 1 and posDMIMA == 1 , 1,
	   iff(posReversal123 == -1 and posDMIMA == -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 )