
Chiến lược này được phát triển dựa trên chỉ số StochRSI. Chiến lược này chủ yếu sử dụng chỉ số StochRSI để xác định tình trạng quá mua quá bán, kết hợp với chỉ số RSI để lọc một số tín hiệu giả, làm trống khi chỉ số StochRSI hiển thị khu vực quá bán và làm thêm khi hiển thị khu vực quá bán, để đạt được lợi nhuận.
Chiến lược này chủ yếu sử dụng chỉ số StochRSI để xác định khu vực quá mua quá bán của thị trường. Chỉ số StochRSI bao gồm các đường K và đường D, trong đó đường K phản ánh vị trí của giá trị RSI hiện tại trong phạm vi giá RSI trong khoảng thời gian gần đây, đường D là đường trung bình di chuyển của đường K. Khi K đi qua đường D, khu vực quá bán có thể được thực hiện; khi K đi qua đường D, khu vực quá bán có thể được thực hiện.
Cụ thể, chiến lược này đầu tiên tính giá trị của chỉ số RSI có chiều dài 14, sau đó áp dụng chỉ số StochRSI trên chỉ số RSI. Các tham số của chỉ số StochRSI được thiết lập với chiều dài 14, chu kỳ trơn K là 3, và D là 3. Khi K trên đường đi qua khu vực bán tháo được thiết lập bởi người dùng (bằng mặc định 1), hãy làm nhiều hơn; Khi K dưới đường đi qua khu vực bán tháo được thiết lập bởi người dùng (bằng mặc định 99), hãy làm trống.
Ngoài ra, chiến lược cũng đặt các tham số dừng và dừng. tham số dừng mặc định là 10000; dừng theo tham số được đặt thành đường cong trailing stop, số điểm theo dõi mặc định là 300 và độ lệch là 0.
Đối với các rủi ro trên, bạn có thể đặt chu kỳ tham số dài hơn hoặc xem xét sử dụng với các chỉ số khác để lọc tín hiệu, điều chỉnh tham số mua quá mức cho phù hợp với các thị trường khác nhau và kiểm tra các tham số dừng lỗ khác nhau.
Chiến lược này dựa trên chỉ số StochRSI để đánh giá khu vực quá mua quá bán để giao dịch. So với chỉ số RSI đơn lẻ, StochRSI kết hợp với suy nghĩ của KDJ, có thể đánh giá chính xác hơn về điểm biến đổi. Đồng thời kết hợp với RSI để lọc tín hiệu giả và thiết lập rủi ro kiểm soát dừng lỗ.
/*backtest
start: 2023-11-06 00:00:00
end: 2023-12-06 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version= 2
strategy("STOCHRSI JURE", overlay=false)
lengthrsi = input(10)
overSold = input( 1 )
overBought = input(99)
call_trail_stop = input(300)
call_trail_offset = input(0)
call_sl = input(10000)
price = ohlc4
vrsi = rsi(price, lengthrsi)
smoothK = input(3, minval=1)
smoothD = input(3, minval=1)
lengthRSI = input(14, minval=1)
lengthStoch = input(14, minval=1)
src = input(close, title="RSI Source")
rsi1 = rsi(src, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)
plot( k, color=blue, linewidth=1, title="K")
plot( d, color=red, linewidth=1, title="D")
if (crossover(k, overSold) )
strategy.entry("BUY", strategy.long, stop=close, oca_name="TREND", comment="BUY")
strategy.exit("BUY EXIT", "BUY", trail_points=call_trail_stop, trail_offset=call_trail_offset, loss = call_sl)
if (crossunder(k, overBought) )
strategy.entry("SELL", strategy.short,stop=close, oca_name="TREND", comment="SELL")
strategy.exit("SELL EXIT", "SELL", trail_points=call_trail_stop, trail_offset=call_trail_offset, loss = call_sl)
//if ( ( crossover(k,d)) and ( (vrsi<overSold) or crossover(vrsi,overSold) ) and year >= yearfrom and year <= yearuntil and month>=monthfrom and month <=monthuntil and dayofmonth>=dayfrom and dayofmonth < dayuntil)
// strategy.entry("BUY", strategy.long, stop=close, oca_name="TREND", oca_type=strategy.oca.cancel, comment="BUY")
//else
// strategy.cancel(id="BUY")
//if ( ( crossunder(k,d) ) and ( (vrsi >overBought) or crossunder(vrsi,overBought) ) and year >= yearfrom and year <= yearuntil and month>=monthfrom and month <=monthuntil and dayofmonth>=dayfrom and dayofmonth < dayuntil )
// strategy.entry("SELL", strategy.short,stop=close, oca_name="TREND", oca_type=strategy.oca.cancel, comment="SELL")
//else
// strategy.cancel(id="SELL")