Personalisierte Momentum-Trading-Strategien


Erstellungsdatum: 2023-11-23 15:18:27 zuletzt geändert: 2023-11-23 15:18:27
Kopie: 0 Klicks: 415
1
konzentrieren Sie sich auf
1237
Anhänger

Personalisierte Momentum-Trading-Strategien

Überblick

Dies ist eine personalisierte Handelsstrategie, die Dynamik-Indikatoren und K-Line-Einheiten-Filter kombiniert. Es verwendet die drei technischen Indikatoren Random Dynamic Index, Rapid RSI und K-Line-Einheiten-Filter, um einen Dynamik-Breakthrough zu erzielen, während die Strategie des Überkaufs und Überverkaufs berücksichtigt wird.

Strategieprinzip

Die Strategie beurteilt die Handelssignale anhand der folgenden drei Indikatoren:

  1. Der Zufallsdynamikindex ((SMI): Er kombiniert die Entfernungen der K-Linien mit der relativen Position des Schlusskurses, um zu bestimmen, ob die Preisdynamik stark oder schwach ist. Wenn die SMI die Grenze überschreitet, erzeugt es ein Kaufsignal, und wenn die Grenze unterhalb der Grenze überschritten wird, erzeugt es ein Verkaufsignal.

  2. Schnell RSI ((7-Tage-Linie): Es beurteilt die Überkauf-Überverkauf-Situation des Preises. Wenn der RSI unter 20 liegt, erzeugt er ein Kaufsignal für den Überverkauf, wenn er über 80 liegt, erzeugt er ein Verkaufssignal für den Überkauf.

  3. K-Line-Einheit-Filter: Berechnet die durchschnittliche K-Line-Einheit-Größe in 10 Tagen und wirkt, wenn die heutige K-Line-Einheit mehr als ein Drittel dieses Durchschnittswertes übersteigt, um ein ungültiges Signal zu vermeiden.

Diese Strategie beurteilt zunächst die Signale von SMI und RSI, und wenn sie die Signalvoraussetzungen eines der Indikatoren erfüllen, wird in Kombination mit einer K-Line-Entity-Filterung beurteilt, ob das Signal gültig ist, und wenn es gültig ist, wird ein Handelssignal erzeugt.

Analyse der Stärken

Diese Strategie hat folgende Vorteile:

  1. Es gibt mehrere Indikatoren, die eine genauere und zuverlässigere Einschätzung ermöglichen.

  2. K-Leitung-Entity-Filter hinzugefügt, um ein ungültiges Signal zu vermeiden.

  3. In Kombination mit einem Überkauf-Überverkauf-Urteil ist es leichter, Signale zu erfassen, wenn sich ein Trend umkehrt.

  4. Es gibt viele Möglichkeiten, in zwei Richtungen zu handeln.

  5. Die Verwendung von Teilpositionen verhindert exzessive Verluste bei einem einzigen Handel.

Risikoanalyse

Die Strategie birgt auch Risiken:

  1. Indikatoren können leicht zu Fehlsignalen führen, die zu Verlusten führen. Die Fehlsignale können durch Optimierung der Parameter reduziert werden.

  2. Einige Positionen können nicht in jeder Richtung genutzt werden. Sie können einen höheren Gewinn erzielen, indem Sie Ihre Positionen ausdehnen.

  3. SMI ist als Hauptindikator empfindlich auf die Parameter-Einstellungen und kann durch falsche Einstellungen verpasste Handelschancen oder falsche Signale erhöhen.

  4. Mehrfach, zweiseitig, häufiger und mit höheren Kosten.

Optimierungsrichtung

Die Strategie kann in folgenden Bereichen weiter optimiert werden:

  1. Optimieren Sie die Parameter von SMI und RSI, um die optimale Kombination zu finden.

  2. Erhöhung der Positionsvergrößerung und Positionsmanagementmechanismen, um eine höhere Rendite im Trend zu erzielen.

  3. Erhöhung der Stop-Loss-Strategie und Verringerung des Einmalverlustrisikos.

  4. In Kombination mit mehr Indikatoren wird die Zuverlässigkeit des Signals beurteilt, wodurch Fehlsignale reduziert werden.

  5. Die Einführung effizienter Verträge senkt die Transaktionskosten.

Zusammenfassen

Die Strategie verwendet die drei technischen Indikatoren SMI, Rapid RSI und K-Line-Einheiten-Filter, um eine dynamische, personalisierte Handelsstrategie zu realisieren, die Überkauf und Überverkauf berücksichtigt. Es hat die Vorteile, genaue Urteile zu treffen, effektive Signale zu identifizieren, überkaufte und überverkaufte und überspannte Geschäfte zu kombinieren, aber es gibt auch einige Parameter-Sensitivität und die Gefahr, Trends nicht voll auszunutzen, häufig zu handeln. Durch die kontinuierliche Optimierung der Parameter-Einstellungen, die Erhöhung der Positions- und Stop-Loss-Verwaltung und die Verringerung der falschen Signale kann die Strategie bessere Handelswirkung erzielen.

Strategiequellcode
/*backtest
start: 2023-10-23 00:00:00
end: 2023-11-22 00:00:00
period: 6h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's Stochastic Strategy v1.2", shorttitle = "Stochastic str 1.2", 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 = SMI < -1 * limit and close < open and body and usesmi
dn1 = SMI > 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()