Chiến lược này kết hợp nhận dạng nến lớn và chênh lệch RSI như là các tín hiệu chính, kết hợp cả các điểm dừng cố định ban đầu và các điểm dừng theo dõi động để tạo thành một hệ thống giao dịch theo xu hướng hoàn chỉnh. Chiến lược xác định các biến động giá đáng kể bằng cách so sánh thân nến hiện tại với năm nến trước đó, xác nhận những thay đổi động lực bằng cách sử dụng chênh lệch RSI nhanh và chậm và sử dụng một cơ chế dừng kép để quản lý rủi ro và bảo vệ lợi nhuận.
Chiến lược bao gồm bốn thành phần cốt lõi: 1) Xác định nến lớn - xác định đà tăng giá đáng kể bằng cách so sánh thân nến hiện tại với năm nến trước đó; 2) Phân tích khác biệt RSI - đo lường sự thay đổi đà tăng bằng cách sử dụng sự khác biệt giữa RSI nhanh 5 giai đoạn và RSI chậm 14 giai đoạn; 3) Bắt đầu bắt đầu - thiết lập một lỗ dừng cố định 200 điểm khi vào để kiểm soát rủi ro ban đầu; 4) Bắt đầu bắt đầu - kích hoạt sau 200 điểm lợi nhuận, duy trì một khoảng cách sau 150 điểm năng động. Chiến lược cũng sử dụng EMA 21 giai đoạn như một bộ lọc xu hướng để giúp xác định hướng thị trường tổng thể.
Chiến lược này xây dựng một hệ thống theo xu hướng hoàn chỉnh bằng cách kết hợp các nến lớn và sự khác biệt RSI, đạt được quản lý rủi ro toàn diện thông qua một cơ chế dừng kép. Nó phù hợp với các thị trường có xu hướng rõ ràng và biến động cao hơn, nhưng đòi hỏi điều chỉnh tham số dựa trên các đặc điểm thị trường cụ thể. Thông qua các hướng tối ưu hóa được đề xuất, sự ổn định và lợi nhuận của chiến lược có thể được tăng thêm.
/*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")