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.
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:
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.
Diese Strategie hat folgende Vorteile:
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.
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.
Multiple Positions können automatisch und ohne menschliche Beurteilung nach DI-Indikatoren gewechselt werden, was die Schwierigkeit des Handels reduziert.
Unterstützt die Einstellung, nur in einem benutzerdefinierten Datumsbereich zu handeln, die Position nach dem Ende automatisch zu löschen, flexibel und bequem.
Durch den Mehrfachschalter kann nur einseitiges Signal gewählt werden, um nur mehr oder nur weniger zu tun, um sich an verschiedene Marktbedingungen anzupassen.
Die Strategie birgt auch einige Risiken:
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.
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.
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:
Filterung von DI-Signalen in Kombination mit Moving Averages
Anpassung der Grenzwerte an die Rückmessung
Ob sich der Trend umkehrt, in Kombination mit Volumes, MACD und anderen
Die Strategie kann weiter optimiert werden:
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.
Setzen Sie eine bewegliche Stop-Loss, eine Zeit- oder Rate-Stop-Loss-Punkt, um Gewinne zu sperren und Verluste zu reduzieren.
Die Anpassung der Grenzparameter und der Handelszeit an die Handelsmerkmale der verschiedenen Sorten kann die Effektivität der Strategie verbessern.
Techniken wie die Anwendung von Reinforcement Learning basierend auf Optimierungsparametern für Festplattensignale eingestellt.
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.
/*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()