Richtungsindex Bidirektionale Handelsstrategie


Erstellungsdatum: 2023-12-19 14:13:52 zuletzt geändert: 2023-12-19 14:13:52
Kopie: 0 Klicks: 371
1
konzentrieren Sie sich auf
1166
Anhänger

Richtungsindex Bidirektionale Handelsstrategie

Überblick

Die Strategie ermöglicht einen beidseitigen Handel mit Waren durch Berechnung des Bewegungsindex der Ware ((DI) in Kombination mit den Grenzparametern. Wenn DI+ größer ist als DI-ein Grenzparameter, wird mehr getan, wenn DI-großer ist als DI+ein Grenzparameter, wird leer gemacht.

Strategieprinzip

Der Kernindikator dieser Strategie ist der Dynamikindex ((DI)). Der DI wird durch folgende Formel berechnet:

DI+ = (DM+ / tatsächliche Reichweite) × 100 DI- = (DM- / tatsächliche Reichweite) × 100

Die realen Bandbreiten werden durch Maximalwerte berechnet, um die Schwankungen der drei Tage Höchst-, Tiefst- und Gestern-Endpreise zu repräsentieren.

Wenn DI+ > DI- ist, bedeutet dies, dass die Kraft der Luftwaffe in der jetzigen Situation größer ist als die Luftwaffe der Luftwaffe und gehört zum Markt der Luftwaffe. Wenn DI- > DI+ bedeutet, dass die Luftwaffe der Luftwaffe stärker ist als die Luftwaffe der Luftwaffe und gehört zum Markt der Luftwaffe.

Die Strategie nutzt diese Eigenschaft, um ein Limit-Parameter zu setzen. Wenn DI+ größer als DI-ein Limit-Parameter ist, wird der Markt als “Mehrköpfe” beurteilt, um mehr zu machen. Wenn DI- größer als DI+ein Limit-Parameter ist, wird der Markt als “Leerköpfe” beurteilt, um zu tun.

Wenn die Grenzparameter auf 3 gesetzt sind, dann lautet die spezifische Handelsregel:

  1. Wenn DI+ - DI- > 3 ist, machen Sie mehr
  2. Wenn DI- - DI+ > 3 ist, machen Sie frei

Da zwischen DI+ und DI- häufig geringe Differenzschwankungen auftreten, kann die Einstellung von Restriktionsparametern einige Handelssignale, die keine eindeutige Richtung haben, filtern und unnötige Geschäfte reduzieren, was ein Vorteil der Strategie ist.

Analyse der Stärken

Diese Strategie hat folgende Vorteile:

  1. Benutzung von DI zur Beurteilung von Situationen ist zielgerichtet und zuverlässig

DI beurteilt die Marktentwicklung direkt durch die Berechnung der Kräfte der mehrsprachigen Seiten, ohne komplexe Algorithmen wie Kurvenanpassung. Die Theorie ist einfach und zuverlässig.

  1. Einstellung von Einschränkungselementen zur effektiven Filterung von Signalen

Durch die Einschränkung der Parameterfilterung keine offensichtliche Richtung kleine Schwankungen, nur die Wahl der Markt offensichtlich Richtung stärkere Segmenten zu handeln, um zu vermeiden, eingehalten werden.

  1. Automatisierte Zwei-Wege-Transaktionen

Multiple Positions können automatisch und ohne menschliche Beurteilung nach DI-Indikatoren gewechselt werden, was die Schwierigkeit des Handels reduziert.

  1. Benutzerdefinierbarer Handelsplatz

Unterstützt die Einstellung, nur in einem benutzerdefinierten Datumsbereich zu handeln, die Position nach dem Ende automatisch zu löschen, flexibel und bequem.

  1. Nur mehr oder nur weniger, je nach Situation

Durch den Mehrfachschalter kann nur einseitiges Signal gewählt werden, um nur mehr oder nur weniger zu tun, um sich an verschiedene Marktbedingungen anzupassen.

Risikoanalyse

Die Strategie birgt auch einige Risiken:

  1. Wahrscheinlichkeit eines Fehlsignals des DI

Bei starken Marktschwankungen kann der DI kurzfristig falsche Signale abgeben, was zum Scheitern des Handels führt. Es ist erforderlich, andere Indikatoren in Kombination zu überprüfen.

  1. Unzulässige Einschränkungsparameter

Eine zu große oder zu kleine Einstellung der Parameter kann zu wenig oder zu viele Handelssignale verursachen und die Parameter müssen an den Markt angepasst werden.

  1. Keine Ahnung, wo der Trend endet

Die DI kann nur die Richtung des aktuellen Trends bestimmen, kann nicht bestimmen, ob der Trend beendet oder umgekehrt ist, und erfordert eine Kombination anderer Indikatoren.

Risiken können mit folgenden Lösungen begegnet werden:

  1. Filterung von DI-Signalen in Kombination mit Moving Averages

  2. Anpassung der Grenzwerte an die Rückmessung

  3. Ob sich der Trend umkehrt, in Kombination mit Volumes, MACD und anderen

Optimierungsrichtung

Die Strategie kann weiter optimiert werden:

  1. Trends mit anderen Indikatoren, wie z. B. dem Trend-Bild der öffentlichen Meinung

Indikatoren, die eine intuitivere Beurteilung der Luftwaffe ermöglichen, wie z.B. die Meinungsüberwachung, können in Kombination mit DI die Genauigkeit der Beurteilung verbessern.

  1. Eintritt in eine Stop-Loss-Strategie

Setzen Sie eine bewegliche Stop-Loss, eine Zeit- oder Rate-Stop-Loss-Punkt, um Gewinne zu sperren und Verluste zu reduzieren.

  1. Parameter für bestimmte Sorten anpassen

Die Anpassung der Grenzparameter und der Handelszeit an die Handelsmerkmale der verschiedenen Sorten kann die Effektivität der Strategie verbessern.

  1. Dynamische Optimierung mit Hilfe von Machine Learning

Techniken wie die Anwendung von Reinforcement Learning basierend auf Optimierungsparametern für Festplattensignale eingestellt.

Zusammenfassen

Die Strategie ist insgesamt relativ einfach und praktisch. Sie nutzt die Berechnungsmethode der DI, um die Richtung der Trends zu bestimmen. Sie kann durch die Begrenzung der Parameter-Filtersignale beidseitig gehandelt werden, aber auch nur mehr oder weniger; unterstützt die Einstellung der Handelszeiträume. Die Hauptvorteile sind hohe Zuverlässigkeit und effektive Filtersignale.

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