
Die Strategie erzeugt ein Kaufsignal, wenn der MA mit kürzerer Periode von unten nach oben durch die MA mit längerer Periode geht; und ein Verkaufsignal, wenn der MA mit kürzerer Periode von oben nach unten durch die MA mit längerer Periode geht. Die Strategie setzt gleichzeitig einen Handelszeitraum (von 8 bis 20 Uhr UTC) und einen Stopppunkt (von 150 Punkten) fest.
Die Strategie basiert auf der Kreuzung von zwei unterschiedlichen Perioden von Moving Averages, um Handelssignale zu erzeugen, und ist für trendige Märkte geeignet. Durch die Einstellung von Handelszeiten und festen Stop-Points kann das Risiko bis zu einem gewissen Grad kontrolliert werden. Die Strategie kann jedoch in schwankenden Märkten schlecht abschneiden, und die festen Stop-Points können die Gewinnspanne der Strategie einschränken. In Zukunft kann man erwägen, die Strategie zu optimieren, indem man mehr technische Indikatoren einführt, die Stop-Loss-Einstellung optimiert, Informationen über die Mikrostruktur des Marktes kombiniert und verschiedene Parameter-Einstellungen für verschiedene Marktzustände verwendet.
/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Moving Average Crossover Strategy", overlay=true)
// User-defined moving average periods
ma1Periods = input(5, title="First Moving Average Periods")
ma2Periods = input(20, title="Second Moving Average Periods")
// Calculate moving averages
ma1 = sma(close, ma1Periods)
ma2 = sma(close, ma2Periods)
// Plot moving averages
plot(ma1, color=color.red, linewidth=2, title="First Moving Average")
plot(ma2, color=color.blue, linewidth=2, title="Second Moving Average")
// Detect crossovers and crossunders
bullishCross = crossover(ma1, ma2)
bearishCross = crossunder(ma1, ma2)
// Define trading hours (8 AM to 2 PM UTC)
startHour = 8
endHour = 20
utcHour = hour(time, "UTC")
isMarketOpen = true
// Define profit target
profitTarget = 150
// Check if the price has closed above/below the MA for the past 4 bars
aboveMa = close[4] > ma1[4] and close[3] > ma1[3] and close[2] > ma1[2] and close[1] > ma1[1]
belowMa = close[4] < ma1[4] and close[3] < ma1[3] and close[2] < ma1[2] and close[1] < ma1[1]
// Create buy and sell signals
if (bullishCross and isMarketOpen and aboveMa)
strategy.entry("Buy", strategy.long)
strategy.exit("Sell", "Buy", profit=profitTarget)
if (bearishCross and isMarketOpen and belowMa)
strategy.entry("Sell", strategy.short)
strategy.exit("Cover", "Sell", profit=profitTarget)
// Plot shapes on crossovers
plotshape(series=bullishCross and isMarketOpen and aboveMa, location=location.belowbar, color=color.green, style=shape.labelup, text="Buy")
plotshape(series=bearishCross and isMarketOpen and belowMa, location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")