
Die Dynamik-Schock-Strategie ist eine quantitative Trading-Strategie, die eine Kombination von Zufallsdynamik-Indikatoren und relativ starken Indikatoren verwendet. Die Strategie verwendet Zufallsdynamik-Indikatoren, um überkaufte und überverkaufte Bereiche des Marktes zu ermitteln, kombiniert mit einem Filtersignal des schnellen RSI-Indikators, um eine zuverlässigere Handelssignalwahl durch eine tatsächliche Filterung zu erzielen.
Der Random Momentum Index (SMI) ist ein technischer Indikator, der häufig in der Quantifizierung von Transaktionen verwendet wird. Er kombiniert die Vorzüge von Dynamik- und Schwingungsindikatoren.
Die Berechnungsformel für SMIs lautet:
SMI = (Close - (HH + LL)/2)/(0.5*(HH - LL)) * 100
Hiervon ist HH der höchste Preis der letzten N Tage und LL der niedrigste Preis der letzten N Tage.
Auf diese Weise kombiniert der SMI eine Trendbeurteilung der Dynamik mit einer Umkehrbeurteilung der Erschütterung. Wenn der SMI über 80 liegt, ist es ein Überkauf, wenn er unter 20 liegt, ist es ein Überverkauf. Die Strategie sendet Handelssignale in überkauften und überverkauften Bereichen aus.
Der Relative Strength Index (RSI) ist ein allgemein verwendeter Überkauf-Überverkauf-Indikator. In dieser Strategie wird der schnelle RSI mit einer Periode von 7 verwendet, um die Überkauf-Überverkaufssituation in kurzer Zeit zu beurteilen.
Wenn der schnelle RSI unter 20 liegt, ist es ein Überverkauf, wenn er über 80 liegt, ist es ein Überkauf. Die Strategie sendet ein Handelssignal in den überkauften und überverkauften Bereichen.
Die Strategie enthält auch einen Entitätsfilter, der die Größe der K-Line-Einheiten berechnet, um die Signalpartie zu filtern. Die Handelssignale werden nur ausgesendet, wenn die K-Line-Einheiten einen bestimmten Threshold überschreiten.
Das kann einige falsche Signale herausfiltern und die Zuverlässigkeit erhöhen.
Die Strategie kombiniert die drei Komponenten Random Dynamic Indicator, Rapid RSI Indicator und Entity Filter. Durch die Kombination mehrerer Indikatoren kann die Signalgenauigkeit verbessert und die Strategie robust gemacht werden.
Der Random Momentum-Indikator und der RSI-Indikator geben eine genaue Einschätzung des Überkaufs und Überverkaufs des Marktes. Die Strategie besteht darin, Positionen in überkauften und überverkauften Bereichen zu eröffnen und den Handelsprinzipien zu folgen, die den Kauf der niedrigen und den Verkauf der hohen Positionen beinhalten.
Die Strategie ermöglicht sowohl mehrköpfige als auch leere, beidseitige Transaktionen, um maximale Handelschancen auf dem Markt zu erfassen.
Die Einführung eines physikalischen Filters filtert den Großteil des Geräusches ab und verhindert, dass es in den Schwingungen eingeschlossen wird.
Eine Strategie, die zwei-Wege-Handels, Multi-Leerköpfe häufig zu wechseln, ist ein potenzieller Risikopunkt. Eine angemessene Optimierung der Positionsöffnungslogik kann dieses Risiko senken.
Wenn der Indikator ein Signal gibt, kann sich eine große Anzahl von Gefährdeten in kurzer Zeit versammeln, was zu einem Risiko für eine Marktumkehr führt. Dieses Risiko kann durch Optimierung der Indikatorparameter verringert werden.
In extremen Situationen können alle Modelle ausfallen. Solche Risiken müssen durch eine angemessene Stop-Loss-Einstellung kontrolliert werden.
Die optimale Parameter zur Steigerung der Strategie-Rendite können durch das Testen verschiedener Kombinationen von Parametern wie SMI-Perioden, RSI-Perioden, physikalische Filter-Termins und andere gefunden werden.
Die Einrichtung eines dynamischen Stop-Loss-Mechanismus auf der Grundlage der ATR oder der Volatilität ermöglicht eine bessere Kontrolle des Risikos für einzelne Aktien und die Gesamtheit.
Die Einführung von Algorithmen zur Modellvorhersage der zukünftigen Entwicklung der Kennzahlen. Dies ermöglicht die vorherige Bestimmung der Wendepunkte der Kennzahlen und erhöht die vorausschauende Strategie.
Zusammenfassend lässt sich sagen, dass die Strategie aus einer Kombination von Random Dynamic Indicators, Rapid RSI Indicators und Entity Filters ein relativ vollständiges Überkauf-Überverkauf-System erzeugt. Die Kombination aus mehreren Indikatoren erhöht die Signalgenauigkeit und bi-directionaler Handel und Risikokontrollmechanismen machen die Strategie ausgewogener. Durch die kontinuierliche Optimierung der Parameter und Modelle wird die Strategie eine bessere Rendite erzielen.
/*backtest
start: 2023-12-22 00:00:00
end: 2024-01-21 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2018
//@version=2
strategy(title = "Noro's Stochastic Strategy v1.1", shorttitle = "Stochastic str 1.1", 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")
usemar = input(false, defval = false, title = "Use Martingale")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
usesmi = input(true, defval = true, title = "Use SMI Strategy")
usersi = input(true, defval = true, title = "Use RSI Strategy")
usebod = input(true, defval = true, title = "Use Body-Filter")
a = input(5, "SMI Percent K Length")
b = input(3, "SMI Percent D Length")
limit = input(50, defval = 50, minval = 1, maxval = 100, title = "SMI Limit")
fromyear = input(2017, defval = 2017, 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")
//Fast RSI
fastup = rma(max(change(close), 0), 7)
fastdown = rma(-min(change(close), 0), 7)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))
//Stochastic Momentum Index
ll = lowest (low, a)
hh = highest (high, a)
diff = hh - ll
rdiff = close - (hh+ll)/2
avgrel = ema(ema(rdiff,b),b)
avgdiff = ema(ema(diff,b),b)
SMI = avgdiff != 0 ? (avgrel/(avgdiff/2)*100) : 0
SMIsignal = ema(SMI,b)
//Lines
plot(SMI, color = blue, linewidth = 3, title = "Stochastic Momentum Index")
plot(SMIsignal, color = red, linewidth = 3, title = "SMI Signal Line")
plot(limit, color = black, title = "Over Bought")
plot(-1 * limit, color = black, title = "Over Sold")
plot(0, color = blue, title = "Zero Line")
//Body Filter
nbody = abs(close - open)
abody = sma(nbody, 10)
body = nbody > abody / 3 or usebod == false
//Signals
up1 = SMIsignal < -1 * limit and close < open and body and usesmi
dn1 = SMIsignal > limit and close > open and body and usesmi
up2 = fastrsi < 20 and close < open and body and usersi
dn2 = fastrsi > 80 and close > open and body and usersi
exit = ((strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)) and body
//Trading
profit = exit ? ((strategy.position_size > 0 and close > strategy.position_avg_price) or (strategy.position_size < 0 and close < strategy.position_avg_price)) ? 1 : -1 : profit[1]
mult = usemar ? exit ? profit == -1 ? mult[1] * 2 : 1 : mult[1] : 1
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 * mult : lot[1]
if up1 or up2
if strategy.position_size < 0
strategy.close_all()
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 dn1 or dn2
if strategy.position_size > 0
strategy.close_all()
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) or exit
strategy.close_all()