Diese Strategie setzt Long und Short auf der Grundlage von gleitenden Durchschnitts-Crossovers um und tritt nur am Nachmittag auf der Grundlage früher Gewinnstatistiken aus, um nicht von hoher Eröffnungsvolatilität gefangen zu werden.
Die Strategie verwendet 3 gleitende Durchschnitte mit unterschiedlichen Parametern: 14-Tage-, 28-Tage- und 56-Tage-Linien. Es geht lang, wenn die 14-Tage-Linie über die 56-Tage-Linie überschreitet, und geht kurz, wenn sie unterhalb der 56-Tage-Linie überschreitet. Dieser grundlegende Ansatz verfolgt langfristige Trends. Um etwas Lärm zu filtern, wird die 28-Tage-Linie als Referenz hinzugefügt, so dass Signale nur ausgelöst werden, wenn die 14-Tage-Linie auch über oder unter der 28-Tage-Linie liegt.
Die wichtigste Neuerung ist, dass es nur zwischen 16 Uhr und 17 Uhr Verluste stoppt und Gewinne erzielt. Statistiken zeigen, dass 70% der Chancen auf tägliche Hoch-/Tieflage in der ersten Stunde nach der Eröffnung liegen. Um Auswirkungen durch hohe Eröffnungsvolatilität zu vermeiden, sind Exits nur während der regulären Nachmittagsgeschäftszeiten möglich.
Zu den Vorteilen dieser Strategie gehören:
Es gibt auch einige Risiken:
Einige Möglichkeiten zur weiteren Optimierung der Strategie:
Die Strategie hat eine klare und einfache Logik, nutzt effektiv die Eröffnungsfunktionen für Stop-Loss, um Volatilitätsfallen zu vermeiden.
/*backtest start: 2023-11-23 00:00:00 end: 2023-11-30 00:00:00 period: 10m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("MAC 1st Trading Hour Walkover", overlay=true) // Setting up timeperiod for testing startPeriodYear = input(2014, "Backtest Start Year") startPeriodMonth = input(1, "Backtest Start Month") startPeriodDay = input(2, "Backtest Start Day") testPeriodStart = timestamp(startPeriodYear, startPeriodMonth, startPeriodDay, 0, 0) stopPeriodYear = input(2025, "Backtest Stop Year") stopPeriodMonth = input(12, "Backtest Stop Month") stopPeriodDay = input(30, "Backtest Stop Day") testPeriodStop = timestamp(stopPeriodYear, stopPeriodMonth, stopPeriodDay, 0, 0) // Moving Averages ema14 = ema(close, 14) ema28 = ema(close, 28) sma56 = sma(close, 56) // Plot plot(ema14, title="ema14", linewidth=2, color=green) plot(ema28, title="ema28", linewidth=2, color=red) plot(sma56, title="sma56", linewidth=3, color=blue) // Strategy goLong = cross(ema14, sma56) and ema14 > ema28 goShort = cross(ema14, sma56) and ema14 < ema28 // Strategy.When to enter if time >= testPeriodStart if time <= testPeriodStop strategy.entry("Go Long", strategy.long, 1.0, when=goLong) strategy.entry("Go Short", strategy.short, 1.0, when=goShort) // Strategy.When to take profit if time >= testPeriodStart if time <= testPeriodStop strategy.exit("Close Long", "Go Long", profit=2000) strategy.exit("Close Short", "Go Short", profit=2000) // Strategy.When to stop out // Some studies show that 70% of the days high low happen in the first hour // of trading. To avoid having that volatility fire our loss stop we // ignore price action in the morning, but allow stops to fire in the afternoon. if time("60", "1000-1600") strategy.exit("Close Long", "Go Long", loss=500) strategy.exit("Close Short", "Go Short", loss=500)