Это интеллектуальная стратегия ротации, основанная на периодах времени, которая стремится генерировать доходы за счет длинной короткой ротации торговли в течение определенного периода времени. Стратегия использует гибкий механизм управления позицией, который может автоматически регулировать направление торговли в соответствии с рыночными условиями, включая функции контроля рисков. Она поддерживает двунаправленную торговлю и опционный режим свинг-трейдинга, демонстрируя сильную адаптивность.
Стратегия в первую очередь контролирует торговлю через временные периоды и статус позиции. Во-первых, функция inActivePeriod() определяет, находится ли торговля в пределах эффективного торгового интервала последних 500 бар. В пределах эффективного интервала стратегия решает торговые действия на основе переменных, таких как статус позиции (positionHeld), время удержания (barsHeld) и время паузы (barsPaused).
Эта стратегия достигает рыночной доходности за счет контроля временных периодов и длинно-короткой ротации, демонстрируя сильную гибкость и адаптивность. Хотя существуют определенные риски, стабильность и рентабельность стратегии могут быть значительно улучшены с помощью разумных мер оптимизации и контроля рисков. Основное преимущество заключается в ее простой, но эффективной логике торговли, что делает ее подходящей в качестве основной стратегии для дальнейшей оптимизации и расширения.
/*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)