Handelsstrategie für den Index mit doppelter Umkehrung der Dynamik

Schriftsteller:ChaoZhang, Datum: 2023-12-25 12:02:57
Tags:

img

Übersicht

Diese Strategie basiert auf dem Dual Reversal Momentum Index-Indikator für den Handel. Es berechnet einen Umkehrmomentum-Index über einen bestimmten Zeitraum anhand des höchsten Preises, des niedrigsten Preises und des Schlusskurses und erzeugt Handelssignale, wenn der Index von der Überkaufzone nach unten oder von der Überverkaufszone nach oben umkehrt. Es setzt auch einen Breakout-Stop-Loss-Mechanismus fest.

Strategie Logik

Der Kernindikator dieser Strategie ist der Stochastic Momentum Index (SMI).

$$SMI = \frac{Close-(HH+LL)/2}{AVGDIFF/2}*100$$

Bei HH ist der höchste Preis in den letzten N Tagen, LL ist der niedrigste Preis in den letzten N Tagen, N wird durch Parameter a bestimmt; AVGDIFF ist der gleitende Durchschnitt von HH-LL in M-Tagen, M wird durch Parameter b bestimmt.

SMI zeigt die Umkehrung der Preise. Wenn der Aktienkurs sich dem höchsten Punkt in den letzten N Tagen nähert, ist SMI nahe 100, was auf einen Überkauf der Aktie hinweist; wenn er sich dem niedrigsten Punkt in den letzten N Tagen nähert, ist SMI nahe -100, was auf einen Überverkauf hinweist. Die Kauf-/Verkaufssignale werden erzeugt, wenn SMI von der 100-Ebene nach unten oder von der -100-Ebene nach oben umkehrt.

Die Strategie verwendet die M-Tage gleitende Durchschnitts-SMA von SMI als Handelssignallinie. Wenn SMI von der Überkaufzone nach unten umkehrt und unterhalb der SMA bricht, wird ein Kaufsignal generiert. Wenn SMI von der Überverkaufszone nach oben umkehrt und über der SMA bricht, wird ein Verkaufssignal generiert.

Außerdem beurteilt die Strategie den Breakout des Leibs der Kerze für den Stop-Loss.

Analyse der Vorteile

Die Vorteile dieser Strategie sind:

  1. Mit Hilfe des Preisumkehrprinzips kann es Handelssignale an Umkehrpunkten erzeugen und Umkehrmöglichkeiten erfassen.

  2. SMI kombiniert höchsten Preis, niedrigsten Preis und Schlusskurs, um überkaufte und überverkaufte Konditionen zu beurteilen und zuverlässigere Signale zu erzeugen.

  3. Mit dem Breakout-Stopp-Loss kann man die Positionen rechtzeitig verlassen und die Risiken effektiv kontrollieren.

  4. Die Strategie hat nur wenige Parameter und ist leicht umzusetzen und zu optimieren.

Risikoanalyse

Diese Strategie birgt auch einige Risiken:

  1. Im Umkehrhandel ist es schwierig, den genauen Zeitpunkt erfolgreicher Umkehrungen zu bestimmen, und es kann mehrere Verluste entstehen, bevor eine Trendumkehr festgestellt wird.

  2. Eine falsche Beurteilung der Umkehrpunkte kann zu verstärkten Verlusten führen.

  3. Der Ausbruch-Stopp-Verlust kann zu empfindlich sein und mit hoher Wahrscheinlichkeit eingeschlossen werden.

Die Lösungen sind:

  1. Optimierung der SMI-Parameter zur Anpassung der Umkehrhandelsfrequenz.

  2. Kombinieren Sie andere Indikatoren, um den Zeitpunkt der Umkehrung zu bestimmen.

  3. Körpergröße anpassen, um zu verhindern, dass sie zu empfindlich ist.

Optimierung

Die Strategie kann in folgenden Aspekten optimiert werden:

  1. Optimierung der Parameter a und b des SMI zur Anpassung der Empfindlichkeit der Erfassung von Umkehrungen.

  2. Hinzufügen anderer Indikatoren zur Beurteilung, um zu vermeiden, dass wichtige Trendrichtungen fehlen, z. B. gleitende Durchschnitte, Volatilitätsindikatoren usw.

  3. Hinzufügen von mehr Stop-Loss-Methoden, um zu vermeiden, dass sie zu empfindlich oder unempfindlich sind, z. B. Trailing Stop-Loss, Curve Stop-Loss usw.

  4. Einbeziehung von Modellen des maschinellen Lernens zur Beurteilung der Wahrscheinlichkeit des Erfolgs der Umkehrung und Vermeidung fehlgeschlagener Umkehrungen.

Schlussfolgerung

Dies ist eine zweiräumige Handelsstrategie, die auf dem Reversal Momentum Index (SMI) basiert. Der Vorteil liegt darin, mehr kurzfristige Handelsmöglichkeiten zu erlangen, indem Preisumkehrungen genutzt werden und Signale an Umkehrpunkten generiert werden. Es gibt aber auch typische Risiken des Umkehrhandels. Parameter-Tuning und Stop-Loss-Optimierung sind erforderlich, um verstärkte Verluste zu vermeiden. Insgesamt eignet sich diese Strategie für Investoren, die an Umkehrhandel interessiert sind, muss jedoch andere Indikatoren und strenge Stop-Loss-Risiken berücksichtigen, um Risiken zu kontrollieren.


/*backtest
start: 2023-11-01 00:00:00
end: 2023-11-30 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's Stochastic Strategy v1.0", shorttitle = "Stochastic str 1.0", 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, %")
a = input(5, "Percent K Length")
b = input(3, "Percent D Length")
limit = input(50, defval = 50, minval = 1, maxval = 100, title = "SMI Limit")
fromyear = input(2018, defval = 2018, 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")

//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
body = abs(close - open)
abody = sma(body, 10)

//Signals
up = SMIsignal < -1 * limit and close < open
dn = SMIsignal > limit and close > open
exit = ((strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)) and body > abody / 2

//Trading
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1]

if up
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Bottom", strategy.long, needlong == false ? 0 : lot)

if dn
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Top", strategy.short, needshort == false ? 0 : lot)
    
if  exit
    strategy.close_all()

Mehr