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