
Die Doppel-Evenline-Trading-Strategie erzeugt ein Handelssignal durch Berechnung eines schnellen Moving Averages und eines langsamen Moving Averages und basiert auf der Kreuzung der beiden Moving Averages. Wenn der schnellen Moving Average über dem schnellen Moving Average durchbrochen wird, wird eine Mehrkopf-Strategie angewandt; wenn der langsamen Moving Average unter dem schnellen Moving Average durchbrochen wird, wird eine Hohlkopf-Strategie angewandt.
Die Strategie setzt zunächst die Länge der schnellen Moving Averages maFastLength und die Länge der langsamen Moving Averages maSlowLength. Dann werden die schnellen Moving Averages fastMA und slowMA berechnet. Schnelle Moving Averages reagieren auf Preisänderungen und sind empfindlicher, um die aktuelle Tendenz zu beurteilen; langsame Moving Averages reagieren auf Preisänderungen und sind langsamer, um die Trendrichtung zu beurteilen.
Wenn der schnelle bewegliche Durchschnitt über den langsamen beweglichen Durchschnitt geht, wird die Multiplikationsstrategie angewendet, die ein goLong () Signal erzeugt. Wenn der schnelle bewegliche Durchschnitt unter dem langsamen beweglichen Durchschnitt geht, wird die Platzierung über den Multiplikator durchgeführt, die ein killLong () Signal erzeugt.
Die Optionen sind Longonly, Shorting oder Zwei-Wege-Swapping.
Wenn Sie mehrere Strategien ausführen, nehmen Sie mehr Positionen auf, wenn das Signal “goLong” ausgeht. Wenn das Signal “killLong” ausgeht, nehmen Sie keine Positionen auf.
Wenn Sie eine Kaufstrategie ausführen, legen Sie Ihre Position auf, wenn das KillLong () -Signal ausgeht.
Beim Zwei-Wege-Handel wird bei einem goLong () Signal eine Überposition eröffnet; bei einem killLong () Signal wird eine Überposition ausgeschaltet und eine leere Position eröffnet.
Die Strategie bietet außerdem die Möglichkeit, Stop Loss, Stop Loss Tracking und Trade Alerts zu verwenden, um die Option zu wählen, ob sie verwendet werden soll.
Die Strategie ist einfach zu verstehen und umzusetzen.
Sie können frei wählen, ob Sie mehr, weniger oder in beide Richtungen handeln wollen.
Es gibt eine flexible Auswahl an Risikomanagement-Funktionen wie Stop Loss, Stop Loss Tracking und so weiter.
Die Benutzer können ihre Transaktionsnachrichten anpassen, um ihre Transaktionen in Echtzeit zu informieren.
Die schnelle und langsame Mittellinie ist empfindlich auf Veränderungen der Markttrends und kann starke Trends erfassen.
Strategieparameter sind anpassbar und können für verschiedene Märkte angepasst werden.
Wenn der Markt keine eindeutige Tendenz zeigt, kann es zu mehr Falschsignalen kommen, die zu übermäßigen Handel führen.
Einheitliche Systeme sind nicht empfindlich auf Überraschungen und können Überraschungschancen verpassen.
Die Auswahl der Parameter für die Durchschnittslinie muss vernünftig sein, und die falsche Auswahl der Parameter kann die Effektivität der Strategie beeinträchtigen.
Es ist notwendig, die strategischen Signale strikt einzuhalten, um willkürliche Transaktionen zu vermeiden.
Die Auswirkungen der Transaktionskosten auf die strategische Profitabilität müssen beachtet werden.
Es ist möglich, andere Indikatoren wie den RSI einzuführen, um Handelssignale zu überprüfen und falsche Signale zu vermeiden.
Die Optimierung der Parameter kann eingerichtet werden, um automatisch die optimale Kombination von Parametern zu finden.
Es kann ein dynamischer Stop-Loss eingestellt werden, um Gewinne zu sichern und den Stop-Loss-Punkt gegebenenfalls anzupassen.
Die Nutzung von Machine Learning-Modellen kann dazu beitragen, Trends zu bestimmen.
Die Anzeigen können optimiert werden, um den eigenen Handelsgewohnheiten besser gerecht zu werden.
Die Strategie ist im Allgemeinen einfacher und leichter anzuwenden und ist empfindlicher auf Veränderungen der Markttrends, wodurch die Handelschancen stärkerer Trends erfasst werden können. Es ist jedoch auch darauf zu achten, Fehltrades in tendenzlosen Märkten zu vermeiden und die Parameter entsprechend an die unterschiedlichen Marktumgebungen anzupassen. Darüber hinaus kann die Stabilität und Anpassungsfähigkeit der Strategie durch die richtige Aufnahme von unterstützenden technischen Indikatoren und Optimierungsfunktionen weiter verbessert werden.
/*backtest
start: 2022-10-20 00:00:00
end: 2023-10-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("SMA Strategy", shorttitle="SMA Strategy", overlay=true, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// === Inputs ===
// short ma
maFastSource = input(defval=close, title="Fast MA Source")
maFastLength = input(defval=3, title="Fast MA Period", minval=1)
// long ma
maSlowSource = input(defval=close, title="Slow MA Source")
maSlowLength = input(defval=9, title="Slow MA Period", minval=1)
// Trade direction
shorting = input(defval=false, title="Short only?")
longonly = input(defval=true, title="Long only?")
swapping = input(defval=false, title="Swap orders?")
// risk management
useStop = input(defval=false, title="Use Initial Stop Loss?")
slPoints = input(defval=25, title="Initial Stop Loss Points", minval=1)
useTS = input(defval=false, title="Use Trailing Stop?")
tslPoints = input(defval=120, title="Trail Points", minval=1)
useTSO = input(defval=false, title="Use Offset For Trailing Stop?")
tslOffset = input(defval=20, title="Trail Offset Points", minval=1)
// Messages for buy and sell
message_long_entry = input("Long entry message", title="Long entry message")
message_long_exit = input("Long exit message", title="Long exit message")
message_short_entry = input("Short entry message", title="Short entry message")
message_short_exit = input("Short exit message", title="Short exit message")
// Calculate start/end date and time condition
startDate = input(timestamp("2021-01-01T00:00:00"), type = input.time)
finishDate = input(timestamp("2021-12-31T00:00:00"), type = input.time)
time_cond = true
// === Vars and Series ===
fastMA = sma(maFastSource, maFastLength)
slowMA = sma(maSlowSource, maSlowLength)
plot(fastMA, color=color.blue)
plot(slowMA, color=color.purple)
goLong() =>
crossover(fastMA, slowMA)
killLong() =>
crossunder(fastMA, slowMA)
// Long only
if longonly
strategy.entry("Buy", strategy.long, when=goLong() and time_cond, alert_message = message_long_entry)
strategy.close("Buy", when=killLong() and time_cond, alert_message = message_long_exit)
// Short only
if shorting
strategy.entry("Sell", strategy.short, when=killLong() and time_cond, alert_message = message_short_entry)
strategy.close("Sell", when=goLong() and time_cond, alert_message = message_short_exit)
// Order Swapping
if swapping
strategy.entry("Buy", strategy.long, when=goLong() and time_cond, alert_message = message_long_entry)
strategy.entry("Sell", strategy.short, when=killLong() and time_cond, alert_message = message_short_entry)
if useStop
strategy.exit("XLS", from_entry="Buy", stop=strategy.position_avg_price / 1.08, alert_message = message_long_exit)
strategy.exit("XSS", from_entry="Sell", stop=strategy.position_avg_price * 1.08, alert_message = message_short_exit)