
Chiến lược này chủ yếu sử dụng chỉ số RSI tương đối mạnh để đánh giá tình trạng quá mua quá bán của thị trường, kết hợp với giá trên đường trung bình di chuyển đơn giản 200 ngày (SMA) làm điều kiện lọc xu hướng, để quyết định có giao dịch hay không. Chiến lược này sử dụng ba chỉ số RSI để cùng nhau xây dựng điều kiện mở vị trí, chỉ khi RSI ngắn hạn nhỏ hơn 35 và có xu hướng giảm trong ba chu kỳ liên tiếp, trong khi RSI chu kỳ thứ ba nhỏ hơn 60 và đóng cửa hiện tại trên đường SMA 200 ngày.
Chiến lược này xây dựng điều kiện mở vị trí bằng cách sử dụng RSI ba, kết hợp với giá trên đường trung bình dài hạn làm bộ lọc xu hướng, để nắm bắt tình huống bán tháo quá mức. Logic của chiến lược đơn giản, dễ thực hiện và tối ưu hóa. Tuy nhiên, chiến lược cũng có rủi ro và thiếu sót như trễ tín hiệu, tần suất giao dịch thấp, chỉ có thể nắm bắt tình huống một bên, cần phải được điều chỉnh và cải thiện liên tục trong ứng dụng thực tế. Bằng cách giới thiệu vị trí dừng lỗ, quản lý, kết hợp với các chỉ số khác, các phương pháp có thể tiếp tục nâng cao tính ổn định và lợi nhuận của chiến lược.
/*backtest
start: 2023-05-15 00:00:00
end: 2024-05-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
//@author Honestcowboy
//
strategy("Triple RSI [Honestcowboy]" )
// $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >>
// ---------> User Inputs <----------- >>
// $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >>
rsiLengthInput = input.int(5, minval=1, title="RSI Length", group="RSI Settings")
rsiSourceInput = input.source(close, "Source", group="RSI Settings")
// $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >>
// ---------> VARIABLE CALCULATIONS <----------- >>
// $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >>
up = ta.rma(math.max(ta.change(rsiSourceInput), 0), rsiLengthInput)
down = ta.rma(-math.min(ta.change(rsiSourceInput), 0), rsiLengthInput)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
// $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >>
// ---------> CONDITIONALS <----------- >>
// $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >>
rule1 = rsi<35
rule2 = rsi<rsi[1] and rsi[1]<rsi[2] and rsi[2]<rsi[3]
rule3 = rsi[3]<60
rule4 = close>ta.sma(close, 200)
longCondition = rule1 and rule2 and rule3 and rule4
closeCondition = rsi>50
// $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >>
// ---------> GRAPHICAL DISPLAY <----------- >>
// $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >>
hline(30, title="Long Condition Line")
hline(50, title="Exit Condition Line")
plot(rsi)
plotshape(longCondition ? rsi-3 : na, title="Long Condition", style=shape.triangleup, color=color.lime, location=location.absolute)
plotshape(closeCondition and rsi[1]<50? rsi+3 : na, title="Exit Condition", style=shape.triangledown, color=#e60000, location=location.absolute)
// $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >>
// ---------> AUTOMATION AND BACKTESTING <----------- >>
// $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >>
if longCondition and strategy.position_size==0
strategy.entry("LONG", strategy.long)
if closeCondition
strategy.close("LONG")