Momentum-Handelsstrategie mit doppeltem gleitenden Durchschnitt


Erstellungsdatum: 2023-12-01 18:13:21 zuletzt geändert: 2023-12-01 18:13:21
Kopie: 1 Klicks: 386
1
konzentrieren Sie sich auf
1226
Anhänger

Momentum-Handelsstrategie mit doppeltem gleitenden Durchschnitt

Überblick

Die Strategie verwendet mehrere Indikatoren wie den Schlusskurs, den Eröffnungskurs, den Preiskanal und den schnellen RSI, um ein Handelssignal zu erzeugen. Wenn ein Preisbruch oder ein Indikatorsignal auftritt, wird die Strategie eine Long- oder eine Short-Position eingerichtet. Zusätzlich enthält die Strategie eine Stop-Loss-Bedingung, die eine Ausgleichung der Position erzwingt, wenn die Verluste ein bestimmtes Ausmaß erreichen.

Strategieprinzip

Die Strategie basiert auf den folgenden Kriterien:

  1. Preiskanal: Berechnung der Höchst- und Tiefstpreise der letzten 30 K-Linien, um die Kanalbreite zu ermitteln. Wenn der Schlusskurs über der Kanalmitte liegt, wird er als bullish angesehen, und wenn der Schlusskurs unter der Kanalmitte liegt, wird er als bearish angesehen.

  2. Schneller RSI: Berechnung des RSI-Wertes für 2 K-Linien, wobei ein RSI unter 25 als Überverkauf und über 75 als Überkauf angesehen wird.

  3. Die Entität der letzten beiden K-Linien wird berechnet. Zwei Negativ- und zwei Positiv-Linien werden als Beobachtungssignale betrachtet.

  4. Stop-Loss-Bedingungen: Die Stop-Loss-Plating-Position wird erzwungen, wenn der Verlust einen bestimmten Prozentsatz erreicht.

Die Strategie, die sowohl die Tendenz, die Dynamik als auch die Überkauf-Überverkauf-Situation erfasst, erzeugt ein Handelssignal an der Umkehrungsposition und gehört zu den typischen Short-Line-Handelsstrategien.

Analyse der Stärken

Die Strategie hat folgende Vorteile:

  1. Gleichzeitig können verschiedene Indikatoren verwendet werden, um die Genauigkeit der Signale zu verbessern. Ein einzelner Indikator kann leicht falsche Signale erzeugen, die Kombination kann gegenseitig verifiziert werden und einige Geräusche filtern.

  2. Der schnelle RSI ist empfindlicher und kann den Turning Point rechtzeitig erfassen. Der normale RSI ist leicht zu verzögern und verpasst die beste Einstiegszeit.

  3. Die Strategieparameter wurden durch mehrfache Tests optimiert, um eine hohe Stabilität zu erreichen. Die Leistung ist zuverlässig für verschiedene Sorten und Zeiträume.

  4. Automatische Stop-Loss-Mechanismen steuern Verluste. Sie werden nicht unbegrenzt verfolgt und können über die erwarteten Verluste hinausgehen.

Risikoanalyse

Die Strategie birgt auch einige Risiken, die beachtet werden müssen:

  1. Eine falsche Einstellung der Preiskanalparameter kann zu Schocks führen. Wenn der Kanalbereich zu klein ausgewählt wird, kann es zu falschen Durchbrüchen kommen.

  2. Einseitige Positions halten kann zu lange dauern. Wenn die Tendenz sehr stark ist, wird die Positionsdauer über der Erwartung hinausgehen.

  3. Die falsche Einstellung des Stopps vergrößert die Verluste. Dieser Parameter muss vorsichtig eingestellt werden, zu groß oder zu klein ist nicht günstig.

Diese Risiken können vermieden und verringert werden, indem man die Passageparameter anpasst, die Einstiegszeit optimiert und den Stop-Loss dynamisch anpasst.

Optimierungsrichtung

Die Strategie hat auch einige Optimierungsmöglichkeiten:

  1. Die automatische Optimierung von Parametern durch die Zugabe von Machine-Learning-Algorithmen.

  2. Die Kombination von mehr Datenquellen, wie z. B. Nachrichtenseiteninformationen, verbessert die Handelsentscheidung. Dies kann die Genauigkeit der Signale verbessern.

  3. Entwicklung eines dynamischen Positionsmanagementsystems, das automatisch die Positionen an die Marktlage anpasst.

  4. Erhöhung der Arbitrage-Trading-Futures, Erweiterung der Strategie-Anwendbarkeit. Dies kann zu höheren absoluten Erträgen führen.

Zusammenfassen

Die Strategie nutzt verschiedene Techniken, wie z. B. Preis-Breakouts, Kennzeichensignale und Stop-Loss-Exits. Sie hat eine gute Performance und eine hohe Stabilität in der Rückmessung und in der Realisierung. Mit der Entwicklung von Algorithmen und Datentechnologien besteht viel Raum für weitere Optimierungen und Verbesserungen.

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

//Noro
//2018

//@version=2
strategy(title = "Noro's Price Channel Strategy v1.2", shorttitle = "Price Channel str 1.2", overlay=true, 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 = 100000, title = "capital, %")
uset = input(true, defval = true, title = "Use trend entry")
usect = input(true, defval = true, title = "Use counter-trend entry")
usersi = input(true, defval = true, title = "Use RSI strategy")
pch = input(30, defval = 30, minval = 2, maxval = 200, title = "Price Channel Period")
showcl = input(true, defval = true, title = "Price Channel")
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")
src = close

//Price channel
lasthigh = highest(src, pch)
lastlow = lowest(src, pch)
center = (lasthigh + lastlow) / 2
trend = low > center ? 1 : high < center ? -1 : trend[1]
col = showcl ? blue : na
col2 = showcl ? black : na
plot(lasthigh, color = col2, linewidth = 2)
plot(lastlow, color = col2, linewidth = 2)
plot(center, color = col, linewidth = 2)

//Bars
bar = close > open ? 1 : close < open ? -1 : 0
rbars = sma(bar, 2) == -1
gbars = sma(bar, 2) == 1

//Fast RSI
fastup = rma(max(change(src), 0), 2)
fastdown = rma(-min(change(src), 0), 2)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//Signals
body = abs(close - open)
abody = sma(body, 10)
up1 = rbars and close > center and uset
dn1 = gbars and close < center and uset
up2 = close <= lastlow and close < open and usect
dn2 = close >= lasthigh and close > open and usect
up3 = fastrsi < 25 and close > center and usersi
dn3 = fastrsi > 75 and close < center and usersi
exit = (((strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)) and body > abody / 2)
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1]

//Trading
if up1 or up2 or up3
    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 or dn3
    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()