이 전략은 시장의 연속적인 움직임 특성에 기반한 양적 거래 시스템으로, 연속적인 가격 상승 또는 하락의 주파수를 분석하여 시장 반전 기회를 포착합니다. 전략의 핵심은 연속적인 움직임에 대한 미리 설정된 임계 수준에 도달하면 역행 조치를 취하는 것입니다. 거래 결정을위한 보유 기간 및 촛불 패턴과 같은 여러 차원을 결합합니다.
핵심 논리는 몇 가지 핵심 요소를 포함합니다.
이 전략은 시장 반전 특성을 기반으로 한 양적 거래 시스템으로 지속적인 가격 움직임의 분석을 통해 반전 기회를 포착합니다. 전략 설계는 통제 된 위험과 합리적이지만 시장 조건에 따라 매개 변수 조정이 필요합니다. 지속적인 최적화 및 개선으로이 전략은 실제 거래에서 안정적인 수익을 얻을 수 있습니다. 실제 구현 전에 철저한 역사적 데이터 백테스팅을 수행하고 데모 거래에서 전략의 효과를 확인하는 것이 좋습니다.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-27 08:00:00 period: 2d basePeriod: 2d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Streak-Based Trading Strategy", overlay=true) // User Inputs trade_direction = input.string(title="Trade Direction", defval="Long", options=["Long", "Short"]) // Option to choose Long or Short streak_threshold = input.int(title="Streak Threshold", defval=8, minval=1) // Input for number of streaks before trade hold_duration = input.int(title="Hold Duration (in periods)", defval=7, minval=1) // Input for holding the position doji_threshold = input.float(0.01, title="Doji Threshold (%)", minval=0.001) / 100 // Doji sensitivity // Calculate win or loss streak is_doji = math.abs(close - open) / (high - low) < doji_threshold win = close > close[1] and not is_doji loss = close < close[1] and not is_doji // Initialize variables for streak counting var int win_streak = 0 var int loss_streak = 0 var bool in_position = false var int hold_counter = 0 // Track streaks (only when not in a position) if not in_position if win win_streak += 1 loss_streak := 0 else if loss loss_streak += 1 win_streak := 0 else win_streak := 0 loss_streak := 0 // Logic for closing the position after the holding duration if in_position hold_counter -= 1 if hold_counter <= 0 strategy.close_all() // Close all positions in_position := false // Reset position flag win_streak := 0 // Reset streaks after position is closed loss_streak := 0 // Trade condition (only when no position is open and streak is reached) if not in_position if trade_direction == "Long" and loss_streak >= streak_threshold strategy.entry("Long", strategy.long) // Open a long position in_position := true hold_counter := hold_duration // Set holding period if trade_direction == "Short" and win_streak >= streak_threshold strategy.entry("Short", strategy.short) // Open a short position in_position := true hold_counter := hold_duration // Set holding period // Plotting streaks for visualization plot(win_streak, color=color.green, title="Winning Streak", style=plot.style_histogram, linewidth=2) plot(loss_streak, color=color.red, title="Losing Streak", style=plot.style_histogram, linewidth=2)