Diese Strategie verwendet zwei gleitende Durchschnitte (MA), um Handelssignale zu generieren. Wenn der kurzfristige MA über den längerfristigen MA überschreitet, wird ein Kaufsignal generiert; wenn der kurzfristige MA unter den längerfristigen MA überschreitet, wird ein Verkaufssignal generiert. Die Strategie legt auch eine Handelszeit (8 AM bis 20 PM UTC) und ein Gewinnziel (150 Punkte) fest.
Diese Strategie erzeugt Handelssignale basierend auf der Überschneidung von zwei gleitenden Durchschnitten mit verschiedenen Perioden, die für Trendmärkte geeignet sind. Durch die Festlegung einer Handelszeit und eines festen Gewinnziels kann sie das Risiko bis zu einem gewissen Grad kontrollieren. Die Strategie kann jedoch in unruhigen Märkten nicht gut abschneiden, und das feste Gewinnziel kann das Gewinnpotenzial der Strategie einschränken. In Zukunft kann man in Betracht ziehen, mehr technische Indikatoren zu integrieren, die Festlegung von Gewinnzielen und Stop Loss zu optimieren, Marktmikrostrukturinformationen zu kombinieren und verschiedene Parameter-Einstellungen für verschiedene Marktzustände zu übernehmen, um diese Strategie zu optimieren.
/*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")