Index der Richtungsbewegung Handelsstrategie in zwei Richtungen

Schriftsteller:ChaoZhang, Datum: 2023-12-19 14:13:52
Tags:

img

Übersicht

Diese Strategie berechnet den Richtungsbewegungsindex (DI) von Rohstoffen und kombiniert ihn mit Grenzparametern, um den zweiräumigen Handel umzusetzen.

Strategieprinzip

Der Kernindikator dieser Strategie ist der Richtungsbewegungsindex (DI).

DI+ = (DM+ / Wahre Reichweite) × 100 DI- = (DM- / Wirkliche Reichweite) × 100

Der aktuelle Kursindex wird durch die Berechnung des maximalen Wertes des höchsten Preises, des niedrigsten Preises und des Schlusskurses des vorhergehenden Tages über drei Tage berechnet.

Nach der Definition von DI bedeutet, wenn DI+ > DI-, dass die aktuelle Marktdynamik stärker ist, was zu einem Bullenmarkt gehört; wenn DI- > DI+, bedeutet dies, dass die Bärendynamik stärker ist als die Bullendynamik, was zu einem Bärenmarkt gehört.

Diese Strategie nutzt diese Eigenschaft und setzt einen Grenzparameter. Wenn DI + um einen Grenzparameter größer ist als DI-, bestimmt es, dass der aktuelle Markt ein Bullenmarkt ist und lang geht. Wenn DI - um einen Grenzparameter größer ist als DI +, bestimmt es, dass der aktuelle Markt ein Bärenmarkt ist und kurz geht.

Wenn z. B. der Grenzparameter auf 3 festgelegt ist, sind die spezifischen Handelsregeln:

  1. Wenn DI+ - DI- > 3, gehen Sie lang
  2. Wenn DI- - DI+ > 3, kurz gehen

Da zwischen DI+ und DI- häufig kleine schwankende Unterschiede bestehen, kann die Festlegung eines Grenzparameters einige Geschäfte ohne signifikante Richtungen filtern und unnötige Geschäfte reduzieren.

Analyse der Vorteile

Die wichtigsten Vorteile dieser Strategie sind:

  1. DI ist zuverlässig bei der Beurteilung der Marktrichtung

    DI beurteilt direkt Markttrends, indem sie die Kraft von Bullen und Bären berechnet.

  2. Der Grenzparameter kann Signale effektiv filtern

    Der Grenzparameter filtert kleine Schwankungen ohne signifikante Richtungsfähigkeit, wählt nur Abschnitte mit signifikanten Richtungsweisen für den Handel aus und vermeidet, gefangen zu werden.

  3. Erreichen eines automatisierten zweiseitigen Handels

    Die Long- und Short-Positionen können automatisch ohne manuelles Urteilen auf Basis des DI-Indikators gewechselt werden, wodurch die Handelsschwierigkeiten verringert werden.

  4. Anpassbarer Handelszeitrahmen

    Unterstützt die Einstellung, nur innerhalb eines anpassbaren Datumsbereichs zu handeln und alle Positionen automatisch zu schließen, flexibel und bequem.

  5. Nur lang oder kurz auswählbar

    Durch die langen und kurzen Schalter können nur einseitige Signale ausgewählt werden, um für verschiedene Marktumgebungen geeignete lang- oder kurzzeitige Strategien umzusetzen.

Risikoanalyse

Diese Strategie birgt auch einige Risiken:

  1. Möglichkeit, dass DI falsche Signale gibt

    Bei drastischen Marktschwankungen kann DI kurzfristige falsche Signale geben, die zum Scheitern von Geschäften führen.

  2. Unzulässige Grenzparameter Einstellungen

    Eine unsachgemäße Einstellung der Grenzparameter kann zu zu wenigen oder zu vielen Handelssignalen führen, die je nach Markt angepasst werden müssen.

  3. Es ist nicht möglich, den Trendendpunkt zu bestimmen.

    Die DI kann nur die aktuelle Trendrichtung bestimmen und nicht beurteilen, ob der Trend beendet oder umgekehrt ist.

Zu den Lösungen für die Risiken gehören:

  1. Kombination von gleitenden Durchschnitten und anderen Indikatoren zur Filterung von DI-Signalen

  2. Anpassung der Grenzparameter anhand der Rückprüfungsergebnisse

  3. Kombinieren Sie Volumen, MACD usw., um festzustellen, ob eine Trendumkehr stattfindet

Optimierungsrichtlinien

Die Strategie kann auf folgende Weise weiter optimiert werden:

  1. Kombination anderer Trendbeurteilungsindikatoren wie Marktprofil

    Die Kombination von Indikatoren wie dem Marktprofil, der auch die lang-kurze Leistung intuitiv mit DI beurteilt, kann die Richtigkeit der Beurteilung verbessern.

  2. Hinzufügen von Stop-Profit- und Stop-Loss-Strategien

    Das Festlegen von Stop-Loss, Zeit- oder Prozentsatz-Stop-Lossen kann Gewinne erzielen und Verluste reduzieren.

  3. Anpassung der Parameter für bestimmte Produkte

    Die Anpassung der Grenzparameter und der Handelszeiten an die verschiedenen Produktmerkmale kann die Strategieleistung verbessern.

  4. Dynamische Optimierung mithilfe von maschinellem Lernen

    Anwendung von Verstärkungs-Lernalgorithmen zur dynamischen Optimierung von Parameter-Einstellungen auf Basis von Live-Signalen.

Zusammenfassung

Zusammenfassend ist diese Strategie relativ einfach und praktisch. Sie nutzt DIs Berechnung, um die Marktrichtung zu bestimmen; sie filtert Signale über Limitparameter; sie unterstützt dual-directional Trading oder nur Long/Short; sie erlaubt das Setzen von Handelszeiträumen. Die Hauptvorteile sind hohe Zuverlässigkeit und effektive Signalfilterung. Sie hat auch Probleme wie falsche Signale und Parameter-Einstellungen. Wir können sie verbessern, indem wir andere Indikatoren kombinieren, Stop-Loss/Profit setzen, Parameter anpassen usw. oder sie dynamisch mit maschinellem Lernen optimieren. Insgesamt eignet sie sich als Richtungsindikator, um sie mit anderen Strategien für anständige Ergebnisse zu kombinieren.


/*backtest
start: 2022-12-12 00:00:00
end: 2023-12-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Noro's DI Strategy", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
len = input(title="Length", defval=14)
limit = input(3, title = "limit, %")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//DI
TrueRange = max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1])))
DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? max(high-nz(high[1]), 0): 0
DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? max(nz(low[1])-low, 0): 0
SmoothedTrueRange = 0.0
SmoothedDirectionalMovementPlus = 0.0
SmoothedDirectionalMovementMinus = 0.0
SmoothedTrueRange := nz(SmoothedTrueRange[1]) - (nz(SmoothedTrueRange[1])/len) + TrueRange
SmoothedDirectionalMovementPlus := nz(SmoothedDirectionalMovementPlus[1]) - (nz(SmoothedDirectionalMovementPlus[1])/len) + DirectionalMovementPlus
SmoothedDirectionalMovementMinus := nz(SmoothedDirectionalMovementMinus[1]) - (nz(SmoothedDirectionalMovementMinus[1])/len) + DirectionalMovementMinus
DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100
DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100

//Trend
trend = 0
trend := DIPlus > DIMinus + limit ? 1 : DIPlus < DIMinus - limit ? -1 : trend[1]

//Background
col = trend == 1 ? lime : red
bgcolor(col, transp = 80)

//Lines
plot(DIPlus, color=lime, title="DI+", linewidth = 3)
plot(DIMinus, color=red, title="DI-", linewidth = 3)

//Trading
size = strategy.position_size
lot = 0.0
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]
if trend == 1
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if trend == -1
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()

Mehr