Die Momentum Dual Moving Average Trading Strategie ist eine kurzfristige Handelsstrategie, die sowohl die Preisdynamik als auch die Trendindikatoren nutzt. Die Strategie verwendet den Schlusskurs, den Eröffnungskurs, den Preiskanal, den schnellen RSI und andere Indikatoren, um Handelssignale zu generieren. Sie wird lange oder kurze Positionen einrichten, wenn Preisbruch oder Indikatorsignale auftreten. Sie legt auch Stop-Loss-Bedingungen fest, um die Liquidation zu erzwingen, wenn Verluste ein bestimmtes Niveau erreichen.
Die Strategie trifft Handelsentscheidungen hauptsächlich auf der Grundlage folgender Beurteilungsindikatoren:
Preiskanal: Berechnen Sie die höchsten und niedrigsten Preise der letzten 30 Kerzen, um die Kanalkette zu bestimmen.
Fast RSI: Berechnet den RSI-Wert der letzten 2 Kerzen. RSI unter 25 gilt als überverkauft und RSI über 75 als überkauft.
Yin-Yang-Linie: Berechnen Sie die Entitätsgröße der letzten 2 Kerzen. Zwei rote Kerzen deuten auf ein bärisches Signal hin, während zwei grüne Kerzen ein bullisches Signal deuten.
Stop-Loss-Bedingung: Zwangsliquidation, wenn die Verluste einen bestimmten Prozentsatz erreichen, um die Verluste zu begrenzen.
Mit den kombinierten Signalen aus Trend-, Momentum- und Überkauf-/Überverkaufsindicatoren kann diese kurzfristige Strategie Umkehrungen effektiv erkennen und zeitnahe Handelssignale erzeugen.
Zu den Vorteilen dieser Strategie gehören:
Verbesserte Signalgenauigkeit durch Kombination mehrerer Indikatoren, die hilft, falsche Signale zu filtern.
Schnellere Reaktionen auf Wendepunkte durch den Einsatz von Fast RSI, der empfindlicher als normaler RSI ist.
Hohe Zuverlässigkeit über verschiedene Produkte und Zeitrahmen hinweg, dank der strengen Optimierung der Parameter während der Backtests.
Automatischer Stop-Loss-Mechanismus zur Kontrolle potenzieller Verluste über die Erwartungen hinaus.
Einige Risiken dieser Strategie:
Eine falsche Einstellung der Preiskanalparameter kann zu Schocks führen. Zu enge Kanäle können zu falschen Ausbrüchen führen.
Einseitige Positionsaufbewahrungszeit kann bei starken Trends zu lang sein und die Prognosen übersteigen.
Eine unsachgemäße Einstellung des Stop-Loss-Punkts kann die Verluste vergrößern.
Wir können diese Risiken durch Anpassung der Kanalparameter, Optimierung der Einstiegszeit, dynamische Anpassung der Stop-Loss-Punkte usw. mindern und reduzieren.
Einige Richtungen, in denen die Strategie weiter optimiert werden kann:
Einbeziehung von Algorithmen des maschinellen Lernens zur automatischen Optimierung der Parameter und Verbesserung der Anpassungsfähigkeit.
Kombinieren Sie mehr Datenquellen wie Nachrichten, um Handelsentscheidungen und Signalgenauigkeit zu verbessern.
Entwicklung dynamischer Positionsgrößenmechanismen, die auf Marktbedingungen basieren, um Risiken besser zu kontrollieren.
Erweiterung der Anwendbarkeit auf den Futures-Arbitrage-Handel, um die absoluten Renditen weiter zu steigern.
Diese Strategie kombiniert verschiedene Techniken, darunter Preis-Breakout, Indikatorsignal, Stop-Loss usw. Sie hat eine gute Stabilität und Leistung in Backtests und Live-Handel gezeigt.
/*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()