Diese Strategie berechnet den Richtungsbewegungsindex (DI) von Rohstoffen und kombiniert ihn mit Grenzparametern, um den zweiräumigen Handel umzusetzen.
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:
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.
Die wichtigsten Vorteile dieser Strategie sind:
DI ist zuverlässig bei der Beurteilung der Marktrichtung
DI beurteilt direkt Markttrends, indem sie die Kraft von Bullen und Bären berechnet.
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.
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.
Anpassbarer Handelszeitrahmen
Unterstützt die Einstellung, nur innerhalb eines anpassbaren Datumsbereichs zu handeln und alle Positionen automatisch zu schließen, flexibel und bequem.
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.
Diese Strategie birgt auch einige Risiken:
Möglichkeit, dass DI falsche Signale gibt
Bei drastischen Marktschwankungen kann DI kurzfristige falsche Signale geben, die zum Scheitern von Geschäften führen.
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.
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:
Kombination von gleitenden Durchschnitten und anderen Indikatoren zur Filterung von DI-Signalen
Anpassung der Grenzparameter anhand der Rückprüfungsergebnisse
Kombinieren Sie Volumen, MACD usw., um festzustellen, ob eine Trendumkehr stattfindet
Die Strategie kann auf folgende Weise weiter optimiert werden:
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.
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.
Anpassung der Parameter für bestimmte Produkte
Die Anpassung der Grenzparameter und der Handelszeiten an die verschiedenen Produktmerkmale kann die Strategieleistung verbessern.
Dynamische Optimierung mithilfe von maschinellem Lernen
Anwendung von Verstärkungs-Lernalgorithmen zur dynamischen Optimierung von Parameter-Einstellungen auf Basis von Live-Signalen.
Zusammenfassend ist diese Strategie relativ einfach und praktisch. Sie nutzt DI
/*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()