DMI und Strategie der Kombination gleitender Durchschnitte

Schriftsteller:ChaoZhang, Datum: 2023-09-19 21: 51:14
Tags:

Übersicht

Diese Strategie kombiniert die 123 Umkehrstrategie, die DMI-Strategie und die gleitende Durchschnittsstrategie, um eine effektive Kombinationsstrategie zu bilden.

Strategie Logik

  1. 123 Umkehrstrategie: Gehen Sie lang, wenn der Schlusskurs 2 aufeinanderfolgende Tage höher als der vorherige Schlusskurs ist und die 9-tägige langsame K-Linie unter 50 liegt; gehen Sie kurz, wenn der Schlusskurs 2 aufeinanderfolgende Tage niedriger als der vorherige Schlusskurs ist und die 9-tägige schnelle K-Linie über 50 liegt.

  2. DMI-Strategie: Long gehen, wenn +DI über -DI liegt; Short gehen, wenn -DI unter +DI liegt.

  3. Bewegliche Durchschnittsstrategie: Long gehen, wenn der Schlusskurs über den MA liegt; Short gehen, wenn der Schlusskurs unter den MA liegt.

  4. Öffnen von Positionen, wenn drei Strategien einheitliche Signale geben, ansonsten schließen.

Die Strategie kombiniert Trendstrategien und Umkehrstrategien, die Umkehrchancen und Trendfolgungschancen erfassen können.

Analyse der Vorteile

  1. Die Kombination mehrerer Strategien verbessert die Gewinnrate. 123 Umkehrung für die Erfassung von Wendepunkten, DMI für die Erfassung von Trends und MA-Filter für das Filtern von Signalen.

  2. Die Kombination von Umkehr- und Trendstrategien ermöglicht es, Umkehrungen und Trends flexibel zu erfassen.

  3. Der MA-Filter reduziert die falschen Signale von kurzfristigen Schwankungen.

  4. Die Kombination mehrerer Strategien überprüft die Signale und verhindert das Scheitern einer einzigen Strategie.

  5. Mehrere Parameter ermöglichen eine Optimierung für die beste Parameterkombination und höhere Stabilität.

Risikoanalyse

  1. Umkehrstrategien sind anfällig dafür, in den Trendbereichen gefangen zu werden.

  2. DMI kann frühe Trendchancen verpassen und DMI-Parameter verkürzen, um die Empfindlichkeit zu verbessern.

  3. MA hat eine Verzögerungseffekt und kann die Signalerzeugung verzögern.

  4. Die Kombination von Strategien verbessert zwar die Gewinnrate, erhöht aber auch die Komplexität.

  5. Die Strategie ist auf Transaktionskosten angewiesen und sollte den Stop Loss entspannen, um einen Überhandel zu vermeiden.

Optimierungsrichtlinien

  1. Optimieren Sie die Parameter jeder Strategie, um die beste Kombination zu finden.

  2. Hinzu kommen andere Indikatoren wie MACD, RSI, um Signale zu filtern und die Stabilität zu verbessern.

  3. Fügen Sie Stop-Loss-Strategien wie Trailing Stop-Loss hinzu, um Risiken zu kontrollieren.

  4. Optimieren Sie die Positionsgröße, wie beispielsweise die feste/dynamische Größe, um die Rendite zu verbessern.

  5. Feinabstimmungsparameter für bestimmte Produkte zur Verbesserung der Anpassungsfähigkeit.

  6. Hinzufügen von Modellen für maschinelles Lernen zur Unterstützung von Entscheidungen und zur Verbesserung der Leistung.

Schlussfolgerung

Diese Strategie bildet ein flexibles Kombinationssystem, indem sie Umkehr-, Trend- und MA-Filterstrategien effektiv kombiniert. Sie kann sowohl Umkehr- als auch Trend-nachfolgende Chancen erfassen und die Signalzuverlässigkeit durch mehrere Strategien verbessern. Es gibt noch Raum für weitere Verbesserungen bei Parametern, Stop Loss, Positionsgrößen usw. Mit geschickter Anwendung kann diese praktische und erweiterbare Strategie erhebliche Gewinne im Live-Handel generieren.


/*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 )

Mehr