
Die Moving Average Crossover Strategie ist eine quantitative Handelsstrategie, die auf Moving Averages basiert. Die Strategie erzeugt Handelssignale, um Profit zu erzielen, indem sie den Durchschnittspreis einer Wertpapiere über einen bestimmten Zeitraum berechnet und die Kreuzung der Moving Averages der Preise nutzt.
Die Strategie nutzt hauptsächlich die Kreuzung von schnellen und langsamen Moving Averages, um Preistrends zu ermitteln und Handelssignale zu erzeugen. Konkret handelt es sich um Moving Averages mit zwei unterschiedlichen Periodenlängen, z. B. 10-Tage- und 20-Tage-Linien.
Wenn der schnelle gleitende Durchschnitt von unten den langsamen gleitenden Durchschnitt durchbricht, wird davon ausgegangen, dass der Markt von unten nach unten umschaltet und ein Kaufsignal erzeugt. Wenn der schnelle gleitende Durchschnitt von oben nach unten den langsamen gleitenden Durchschnitt durchbricht, wird davon ausgegangen, dass der Markt von oben nach unten umschaltet und ein Verkaufssignal erzeugt.
Durch die Erfassung von Wendepunkten in der Preisentwicklung kann die Strategie bei guten und schlechten Zeiten gekauft und verkauft werden, um Gewinne zu erzielen.
Diese Strategie hat folgende Vorteile:
Die Strategie birgt auch folgende Risiken:
Diese Risiken können durch geeignete Optimierungen verringert werden.
Die Strategie kann in folgenden Richtungen optimiert werden:
Durch diese Optimierung kann die Wirksamkeit der Strategie im Live-Stream erheblich verbessert werden.
Die Moving-Average-Cross-Strategie ist insgesamt eine leicht zu erlernende und umsetzbare quantitative Handelsstrategie. Sie nutzt das Prinzip der Kreuzung des Preisdurchschnitts, um die Marktentwicklung einfach und intuitiv zu beurteilen und Handelssignale zu erzeugen. Durch die Optimierung der Parameter und die Kombination mit anderen technischen Indikatoren kann die reale Wirkung der Strategie verstärkt werden, was sie zu einem zuverlässigen Instrument für quantitative Gewinne macht.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © HPotter
// Simple SMA strategy
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors
//@version=4
strategy(title="Simple SMA Strategy Backtest", shorttitle="SMA Backtest", precision=6, overlay=true)
Resolution = input(title="Resolution", type=input.resolution, defval="D")
Source = input(title="Source", type=input.source, defval=close)
xSeries = security(syminfo.tickerid, Resolution, Source)
Length = input(title="Length", type=input.integer, defval=14, minval=2)
TriggerPrice = input(title="Trigger Price", type=input.source, defval=close)
TakeProfit = input(50, title="Take Profit", step=0.01)
StopLoss = input(20, title="Stop Loss", step=0.01)
UseTPSL = input(title="Use Take\Stop", type=input.bool, defval=false)
BarColors = input(title="Painting bars", type=input.bool, defval=true)
ShowLine = input(title="Show Line", type=input.bool, defval=true)
UseAlerts = input(title="Use Alerts", type=input.bool, defval=false)
reverse = input(title="Trade Reverse", type=input.bool, defval=false)
pos = 0
xSMA = sma(xSeries, Length)
pos := iff(TriggerPrice > xSMA, 1,
iff(TriggerPrice < xSMA, -1, nz(pos[1], 0)))
nRes = ShowLine ? xSMA : na
alertcondition(UseAlerts == true and pos != pos[1] and pos == 1, title='Signal Buy', message='Strategy to change to BUY')
alertcondition(UseAlerts == true and pos != pos[1] and pos == -1, title='Signal Sell', message='Strategy to change to SELL')
alertcondition(UseAlerts == true and pos != pos[1] and pos == 0, title='FLAT', message='Strategy get out from position')
possig =iff(pos[1] != pos,
iff(reverse and pos == 1, -1,
iff(reverse and pos == -1, 1, pos)), 0)
if (possig == 1)
strategy.entry("Long", strategy.long)
if (possig == -1)
strategy.entry("Short", strategy.short)
if (UseTPSL)
strategy.close("Long", when = high > strategy.position_avg_price + TakeProfit, comment = "close buy take profit")
strategy.close("Long", when = low < strategy.position_avg_price - StopLoss, comment = "close buy stop loss")
strategy.close("Short", when = low < strategy.position_avg_price - TakeProfit, comment = "close buy take profit")
strategy.close("Short", when = high > strategy.position_avg_price + StopLoss, comment = "close buy stop loss")
nColor = BarColors ? strategy.position_avg_price != 0 and pos == 1 ? color.green :strategy.position_avg_price != 0 and pos == -1 ? color.red : color.blue : na
barcolor(nColor)
plot(nRes, title='SMA', color=#00ffaa, linewidth=2, style=plot.style_line)