Dies ist eine intelligente Rotationsstrategie, die auf Zeitabschnitten basiert und durch den lang-kurzen Rotationshandel innerhalb bestimmter Zeitabschnitte Renditen erzielen soll. Die Strategie verwendet einen flexiblen Positionsmanagementmechanismus, der die Handelsrichtung automatisch an die Marktbedingungen anpassen kann und gleichzeitig Risikokontrollfunktionen beinhaltet. Sie unterstützt bidirektionales Trading und den optionalen Swing-Trading-Modus und zeigt eine starke Anpassungsfähigkeit.
Die Strategie steuert vor allem den Handel durch Zeiträume und Positionsstatus. Zunächst bestimmt die Funktion inActivePeriod ((), ob der Handel innerhalb des effektiven Handelsintervalls der letzten 500 Baren liegt. Innerhalb des effektiven Intervalls entscheidet die Strategie über Handelsaktionen auf der Grundlage von Variablen wie Positionsstatus (positionHeld), Haltezeit (barsHeld) und Pausezeit (barsPaused). Wenn der Swing-Handelsmodus aktiviert ist, rotiert die Strategie schnell zwischen langen und kurzen Richtungen; wenn sie deaktiviert ist, werden Positionen nach 3 Perioden geschlossen und warten auf neue Handelsmöglichkeiten.
Diese Strategie erzielt Marktrenditen durch Zeitrahmenkontrolle und lang-kurze Rotation, was eine starke Flexibilität und Anpassungsfähigkeit zeigt. Während bestimmte Risiken bestehen, können die Stabilität und Rentabilität der Strategie durch angemessene Optimierungs- und Risikokontrollmaßnahmen erheblich verbessert werden. Der Hauptvorteil liegt in ihrer einfachen, aber effektiven Handelslogik, die sie als Grundstrategie für weitere Optimierung und Expansion eignet.
/*backtest start: 2024-10-12 00:00:00 end: 2024-11-11 00:00:00 period: 4h basePeriod: 4h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Tickerly Test Strategy", overlay=true) // Inputs longEnabled = input.bool(true, "Enable Long Trades") shortEnabled = input.bool(true, "Enable Short Trades") swingEnabled = input.bool(false, "Enable Swing Trading") // Variables var positionHeld = 0 var barsHeld = 0 var barsPaused = 0 var lastAction = "none" // Function to determine if we're in the last 500 bars inActivePeriod() => barIndex = bar_index lastBarIndex = last_bar_index barIndex >= (lastBarIndex - 499) // Main strategy logic if inActivePeriod() if swingEnabled if positionHeld == 0 and barstate.isconfirmed if lastAction != "long" strategy.entry("Long", strategy.long) positionHeld := 1 barsHeld := 0 lastAction := "long" else strategy.entry("Short", strategy.short) positionHeld := -1 barsHeld := 0 lastAction := "short" if positionHeld != 0 barsHeld += 1 if barsHeld >= 2 if positionHeld == 1 strategy.entry("Short", strategy.short) positionHeld := -1 barsHeld := 0 lastAction := "short" else strategy.entry("Long", strategy.long) positionHeld := 1 barsHeld := 0 lastAction := "long" else if positionHeld == 0 and barsPaused >= 1 and barstate.isconfirmed if longEnabled and shortEnabled if lastAction != "long" strategy.entry("Long", strategy.long) positionHeld := 1 barsHeld := 0 barsPaused := 0 lastAction := "long" else strategy.entry("Short", strategy.short) positionHeld := -1 barsHeld := 0 barsPaused := 0 lastAction := "short" else if longEnabled strategy.entry("Long", strategy.long) positionHeld := 1 barsHeld := 0 barsPaused := 0 lastAction := "long" else if shortEnabled strategy.entry("Short", strategy.short) positionHeld := -1 barsHeld := 0 barsPaused := 0 lastAction := "short" if positionHeld != 0 barsHeld += 1 if barsHeld >= 3 strategy.close_all() positionHeld := 0 barsHeld := 0 barsPaused := 0 // Reset pause counter when exiting a position else barsPaused += 1 // Plotting active period for visual confirmation plot(inActivePeriod() ? 1 : 0, "Active Period", color=color.new(color.blue, 80), style=plot.style_areabr)