
これは,時間周期に基づいたインテリジェントの輪動戦略であり,指定された時間周期で多空の輪動取引を行うことによって利益を得ます. 戦略は,市場環境に応じて取引方向を自動的に調整できる柔軟なポジション管理機構を採用し,リスク制御機能も備えています. この戦略は多空の双方向取引をサポートし,選択的に振動取引モードを起動し,強い適応性を持っています.
戦略は,主に時間周期とポジション保持状態によって取引を制御する. まず,inActivePeriod () 関数を使用して,最近500根のKラインの有効取引区間に含まれているかどうかを決定する.有効区間の内では,戦略は,ポジション保持状態 ((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)