이 전략은 큰 촛불 식별과 RSI 분리를 주요 신호로 결합하여 초기 고정 스톱과 동적 트레일링 스톱을 통합하여 완전한 트렌드 다음 거래 시스템을 형성합니다. 이 전략은 현재의 촛불 몸체를 이전 다섯 개의 촛불과 비교하여 중요한 가격 움직임을 식별하고, 빠르고 느린 RSI 분리를 사용하여 모멘텀 변화를 확인하며, 위험 관리 및 이익 보호를 위해 듀얼 스톱 메커니즘을 사용합니다.
이 전략은 네 가지 핵심 구성 요소로 구성됩니다: 1) 큰 촛불 식별 - 이전 다섯 개의 촛불과 현재의 촛불 몸체를 비교하여 중요한 가격 동력을 결정합니다. 2) RSI 분산 분석 - 5 기간 빠른 RSI와 14 기간 느린 RSI 사이의 차이를 사용하여 동력 변화를 측정합니다. 3) 초기 중지 - 초기 위험을 제어하기 위해 입구에서 200 지점 고정 스톱 손실을 설정합니다. 4) 트레일링 중지 - 200 지점 이익 후에 활성화하여 동적 인 150 지점을 유지합니다. 전략은 또한 21 기간 EMA를 트렌드 필터로 사용하여 전반적인 시장 방향을 결정합니다.
이 전략은 큰 촛불과 RSI 분리를 결합하여 전체적인 트렌드 추적 시스템을 구축하여 듀얼 스톱 메커니즘을 통해 포괄적인 리스크 관리를 달성합니다. 명확한 트렌드와 높은 변동성을 가진 시장에 적합하지만 특정 시장 특성에 따라 매개 변수 조정이 필요합니다. 제안된 최적화 방향을 통해 전략의 안정성과 수익성이 더욱 향상 될 수 있습니다.
/*backtest start: 2024-12-17 00:00:00 end: 2025-01-16 00:00:00 period: 3h basePeriod: 3h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}] */ //@version=6 strategy('[F][IND] - Big Candle Identifier with RSI Divergence and Advanced Stops', shorttitle = '[F][IND] Big Candle RSI Trail', overlay = true) // Inputs for the trailing stop and stop loss trail_start_ticks = input.int(200, "Trailing Start Ticks", tooltip="The number of ticks the price must move in the profitable direction before the trailing stop starts.") trail_distance_ticks = input.int(150, "Trailing Distance Ticks", tooltip="The distance in ticks between the trailing stop and the price once the trailing stop starts.") initial_stop_loss_points = input.int(200, "Initial Stop Loss Points", tooltip="The fixed stop loss applied immediately after entering a trade.") // Tick size based on instrument tick_size = syminfo.mintick // Calculate trailing start and distance in price trail_start_price = trail_start_ticks * tick_size trail_distance_price = trail_distance_ticks * tick_size initial_stop_loss_price = initial_stop_loss_points * tick_size // Identify big candles body0 = math.abs(close[0] - open[0]) body1 = math.abs(close[1] - open[1]) body2 = math.abs(close[2] - open[2]) body3 = math.abs(close[3] - open[3]) body4 = math.abs(close[4] - open[4]) body5 = math.abs(close[5] - open[5]) bullishBigCandle = body0 > body1 and body0 > body2 and body0 > body3 and body0 > body4 and body0 > body5 and open < close bearishBigCandle = body0 > body1 and body0 > body2 and body0 > body3 and body0 > body4 and body0 > body5 and open > close // RSI Divergence rsi_fast = ta.rsi(close, 5) rsi_slow = ta.rsi(close, 14) divergence = rsi_fast - rsi_slow // Trade Entry Logic if bullishBigCandle strategy.entry('Long', strategy.long, stop=low - initial_stop_loss_price) if bearishBigCandle strategy.entry('Short', strategy.short, stop=high + initial_stop_loss_price) // Trailing Stop Logic var float trail_stop = na if strategy.position_size > 0 // Long Position entry_price = strategy.position_avg_price current_profit = close - entry_price if current_profit >= trail_start_price trail_stop := math.max(trail_stop, close - trail_distance_price) strategy.exit("Trailing Stop Long", "Long", stop=trail_stop) if strategy.position_size < 0 // Short Position entry_price = strategy.position_avg_price current_profit = entry_price - close if current_profit >= trail_start_price trail_stop := math.min(trail_stop, close + trail_distance_price) strategy.exit("Trailing Stop Short", "Short", stop=trail_stop) // Plotting Trailing Stop plot(strategy.position_size > 0 ? trail_stop : na, color=color.green, title="Trailing Stop (Long)") plot(strategy.position_size < 0 ? trail_stop : na, color=color.red, title="Trailing Stop (Short)") // Plotting RSI Divergence plot(divergence, color=divergence > 0 ? color.lime : color.red, linewidth=2, title="RSI Divergence") hline(0) // Plotting EMA ema21 = ta.ema(close, 21) plot(ema21, color=color.blue, title="21 EMA")