
Chiến lược này sử dụng sự kết hợp của các chỉ số RSI trong các chu kỳ thời gian khác nhau để xác định thị trường hiện tại đang quá mua hoặc quá bán và kết hợp với mối quan hệ của giá với đường trung bình di chuyển để phát tín hiệu mua và bán. Mục tiêu là mua trong thời gian giảm, bán trong thời gian tăng và đạt được lợi nhuận trong thời gian khôi phục.
Tính RSI 5 phút, 15 phút và 1 giờ, khi RSI 5 phút, 15 phút và 1 giờ cùng lúc thấp hơn 25, được đánh giá là quá bán, tạo ra tín hiệu mua; khi RSI 5 phút, 15 phút và 1 giờ cùng lúc cao hơn 75, được đánh giá là quá mua, tạo ra tín hiệu bán.
Giá vượt qua đường trung bình di chuyển 21 cũng được sử dụng như một tín hiệu giao dịch, nếu giá thấp hơn đường trung bình di chuyển, nó sẽ tạo ra một tín hiệu mua; Nếu giá cao hơn đường trung bình di chuyển, nó sẽ tạo ra một tín hiệu bán.
Tùy thuộc vào tình trạng giữ vị trí, hãy đặt số lượng giao dịch đầu tiên và quy tắc đặt cược: lần đầu tiên mở vị trí là 2 tay, sau đó mỗi lần đặt cược là 1 tay cho đến khi giữ vị trí đạt 2 tay.
Khi lỗ đạt 3%, dừng lỗ. Khi lợi nhuận đạt 1%, dừng lỗ.
Sử dụng các chỉ số RSI trong nhiều khung thời gian để đánh giá quá mua và quá bán, tăng độ tin cậy của tín hiệu.
Kết hợp với đường trung bình di chuyển tạo ra tín hiệu giao dịch ngoại hối, mở rộng cơ hội giao dịch.
Thiết lập kiểm soát vị thế và tỷ lệ lỗ hổng, kiểm soát rủi ro.
Tăng cơ hội lợi nhuận bằng cách gia tăng số lượng.
Chỉ số RSI có nguy cơ điều chỉnh lại, tức là sau khi RSI đạt đến điểm mấu chốt quá mua quá bán, giá có thể tiếp tục hoạt động trong một thời gian mà không có sự đảo ngược. Tại thời điểm này, nếu giao dịch mù quáng theo tín hiệu RSI, có thể dẫn đến tổn thất.
Các tín hiệu giao dịch được tạo ra bởi đường trung bình di chuyển có thể gây hiểu nhầm. Khi giá biến động mạnh, đường trung bình di chuyển không thể theo dõi sự thay đổi giá trong thời gian.
Việc đặt sai quy mô vị trí và tỷ lệ lợi nhuận có thể dẫn đến việc kiểm soát rủi ro không đúng cách.
Cần thiết lập các điều kiện đặt cược hợp lý. Nếu đặt cược quá mở, có thể dẫn đến tổn thất mở rộng.
Điều chỉnh các tham số RSI, thử nghiệm các kết hợp các tham số khác nhau của chu kỳ RSI để tìm tín hiệu mua bán quá mức đáng tin cậy hơn.
Kiểm tra các tham số khác nhau di chuyển đường trung bình như một tín hiệu giao dịch phụ. Các chỉ số kỹ thuật khác cũng có thể được kiểm tra.
Tối ưu hóa các quy tắc kiểm soát vị thế và dừng lỗ, thiết lập các cơ chế kiểm soát rủi ro khoa học hơn.
Tối ưu hóa các điều kiện gia tăng, ngăn chặn gia tăng dẫn đến tăng lỗ. Cũng có thể xem xét phương thức gia tăng thay thế, thay vì gia tăng chỉ số.
Chiến lược này sử dụng nhiều khung thời gian của RSI để đánh giá tiềm năng của xu hướng để có được tỷ lệ thắng cao hơn. Đồng thời, hỗ trợ bằng đường trung bình di chuyển để tạo tín hiệu giao dịch, mở rộng cơ hội giao dịch. Sử dụng các quy tắc kiểm soát vị trí, dừng lỗ, tăng cường định lượng và các quy tắc khác để kiểm soát rủi ro. Nói chung, chiến lược này tích hợp xu hướng, chỉ số đảo ngược, đồng thời theo dõi xu hướng và logic giao dịch hấp thụ thấp, có thể đạt được hiệu quả tốt trong điều kiện thị trường.
/*backtest
start: 2023-09-29 00:00:00
end: 2023-10-29 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("5M_RSI_Strategy", overlay=true, pyramiding = 1)
len =14
Initial_Trade_Size = 2
up = rma(max(change(close), 0), len)
down = rma(-min(change(close), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
RSI_1h = request.security(syminfo.tickerid, "60", rsi)
RSI_3h = request.security(syminfo.tickerid, "180", rsi)
RSI_15m = request.security(syminfo.tickerid, "15", rsi)
RSI_5m = request.security(syminfo.tickerid, "5", rsi)
RSI_1m = request.security(syminfo.tickerid, "1", rsi)
ema21_5 = ema(request.security(syminfo.tickerid, "5", close), 21)
ema21_15 = ema(request.security(syminfo.tickerid, "15", close), 21)
//(RSI_3h<=25) and (RSI_1h<=25) and (RSI_15m<=25) and
Positive = ((RSI_5m<=25) and (RSI_15m<=25) and (RSI_1h<=25))?true:false
//alertcondition(Positive, title='POS', message='POS')
//plotshape(Positive, style=shape.triangleup,location=location.belowbar, color=green,size =size.tiny)
Negative = (( RSI_5m>=75) and ( RSI_15m>=75) and ( RSI_1h>=75))?true:false
//alertcondition(Negative, title='NEG', message='NEG')
//plotshape(Negative, style=shape.triangledown,location=location.abovebar, color=red,size=size.tiny) Positive and Negative and
lastordersize = abs(strategy.position_size)>=Initial_Trade_Size?abs(strategy.position_size):Initial_Trade_Size
//lastordersize =1
// and ((ema21_15-low)/ema21_15) > 0.077
//Adding to position rules
if (abs(strategy.position_size) >= Initial_Trade_Size and (abs(close - strategy.position_avg_price)/abs(strategy.position_avg_price)>0.03))
if(strategy.position_avg_price > close and strategy.position_size > 0)
strategy.entry("Add", strategy.long , qty = lastordersize , when = true)
if(strategy.position_avg_price < close and strategy.position_size < 0)
strategy.entry("Add", strategy.short, qty = lastordersize , when = true)
if (strategy.position_size == 0)
if (Positive or ((ema21_5-low)/ema21_5) > 0.07)
strategy.entry("1St Entry", strategy.long , qty = lastordersize , when = true)
// and ((high-ema21_15)/ema21_15) > 0.077
if (Negative or ((high-ema21_5)/ema21_5) > 0.07)
strategy.entry("1St Entry", strategy.short, qty = lastordersize , when = true)
//lastordersize := lastordersize * 2
//or (strategy.openprofit / abs(strategy.position_size * close))>=0.01
if(cross(ema21_5, high) or cross(ema21_5, low))
strategy.close_all()