この戦略は,特定の期間内に長短回転取引を通じて収益を生むことを目指す,時間期間に基づくインテリジェントな回転戦略である.この戦略は,リスク制御機能を組み込むと同時に,市場状況に応じて自動に取引方向を調整できる柔軟なポジション管理メカニズムを使用している.双方向取引とオプションのスウィング取引モードをサポートし,強力な適応性を示している.
この戦略は主に時間間隔とポジションの状態を通じて取引を制御する.まず,inActivePeriod ((() 関数は,取引が最後の500バーの有効取引間隔内にあるかどうかを決定する.有効間隔内に,戦略はポジションの状態 (positionHeld),保持時間 (barsHeld),一時停止時間 (barsPaused) などの変数に基づいて取引行動を決定する.スウィング取引モードが有効になったとき,戦略は長方向と短方向の間に迅速に回転する.無効になった場合,ポジションは3期後に閉鎖され,新しい取引機会を待つ.
この戦略は,時間周期制御と長短回転によって市場収益を達成し,強い柔軟性と適応性を実証する.特定のリスクが存在するが,合理的な最適化およびリスク管理措置によって戦略の安定性と収益性が著しく向上することができる.主な利点は,シンプルで効果的な取引論理にあり,さらなる最適化と拡大のための基礎戦略として適している.
/*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)