Die Moving Average Crossover Strategie ist eine Handelsstrategie, die auf gleitenden Durchschnitten basiert. Sie verwendet das Crossover eines schnellen gleitenden Durchschnitts und eines langsamen gleitenden Durchschnitts als Kauf- und Verkaufssignale. Wenn der schnelle MA über den langsamen MA von unten kreuzt, wird ein Kaufsignal generiert. Wenn der schnelle MA unter den langsamen MA von oben kreuzt, wird ein Verkaufssignal generiert.
Die Strategie verwendet die Funktion sma, um einfache gleitende Durchschnitte eines bestimmten Zeitraums wie den schnellen MA und den langsamen MA zu berechnen.
Wenn der schnelle MA über den langsamen MA von unten kreuzt, erkennt die Crossunder-Funktion das Crossover-Signal und erzeugt ein Kaufsignal.
Die Strategie realisiert automatisierten Handel durch Track-Signale und Exit-Signale. Long-Entry wird ausgelöst, wenn der schnelle MA über den langsamen MA überschreitet, und Short-Entry ausgelöst, wenn der schnelle MA unter dem langsamen MA überschreitet. Die entsprechenden Exit-Signale werden auch bei umgekehrten Crossovers generiert.
Die MA-Crossover-Strategie ist eine klassische und einfache Trendfolgestrategie. Sie verwendet hauptsächlich MA-Crossovers als Handelssignale mit einfacher Logik und Implementierung. Sie kann durch Parameter-Tuning angepasst werden. Aber sie hat auch Nachteile wie Anfälligkeit für Schwankungen und Trendumkehrungen, hohe Signalfrequenz usw. Diese können durch Filter, dynamische Parameter, Stop-Loss usw. verbessert werden.
/*backtest start: 2023-11-15 00:00:00 end: 2023-11-17 04:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title = "MA Close Strategy", shorttitle = "MA Close",calc_on_order_fills=true,calc_on_every_tick =true, initial_capital=21000,commission_value=.25,overlay = true,default_qty_type = strategy.percent_of_equity, default_qty_value = 100) MASource = input(defval = open, title = "MA Source") MaLength = input(defval = 18, title = "MA Period", minval = 1) StartYear = input(2018, "Backtest Start Year") StartMonth = input(1, "Backtest Start Month") StartDay = input(1, "Backtest Start Day") UseStopLoss = input(true,"UseStopLoss") stopLoss = input(50, title = "Stop loss percentage(0.1%)") window() => time >= timestamp(StartYear, StartMonth, StartDay,00,00) ? true : false MA = sma(MASource,MaLength) plot(MA, title = "Fast MA", color = green, linewidth = 2, style = line, transp = 50) long = crossunder(MA, close) short = crossover(MA, close) if (long) strategy.entry("LongId", strategy.long, when = long) strategy.exit("ExitLong", from_entry = "LongId", when = short) if (short) strategy.entry("ShortId", strategy.short, when = short) strategy.exit("ExitShort", from_entry = "ShortId", when = long) if (UseStopLoss) strategy.exit("StopLoss", "LongId", loss = close * stopLoss / 1000 / syminfo.mintick) strategy.exit("StopLoss", "ShortId", loss = close * stopLoss / 1000 / syminfo.mintick)