
Chiến lược này kết hợp hai chỉ số kỹ thuật là đường trung bình di chuyển và chỉ số tương đối yếu ((RSI) để nắm bắt các đặc điểm chu kỳ theo mùa, từ đó tạo ra tín hiệu giao dịch. Ưu điểm của chiến lược này là có thể xác định rõ ràng các hành vi theo mùa, nhưng đồng thời có nguy cơ bị sai lệch bởi tín hiệu sai.
Chiến lược này đầu tiên tính toán đường trung bình di chuyển trong một chu kỳ nhất định n để nắm bắt hướng xu hướng trung hạn của giá. Sau đó tính toán chỉ số RSI của đường trung bình di chuyển này để xác định xem hiện tại có quá mua hay quá bán hay không. RSI đánh giá tâm trạng thị trường hiện tại bằng cách tính toán tỷ lệ tăng và giảm trong một chu kỳ nhất định.
Khi RSI đi qua đường đi xuống, nó tạo ra một tín hiệu mua, cho thấy hiện tại đang ở trạng thái quá bán. Khi RSI đi qua đường đi xuống, nó tạo ra một tín hiệu bán, cho thấy hiện tại đang ở trạng thái quá mua, có thể bán. Ngoài ra, chiến lược cũng đặt phạm vi tháng và ngày, chỉ giao dịch giữa các tháng và ngày được chỉ định để nắm bắt các đặc điểm theo mùa.
Có nguy cơ bị đánh lừa bởi tín hiệu sai. Ví dụ, sự đảo ngược xu hướng do các sự kiện bất ngờ ngoài mùa gây ra có thể dẫn đến tín hiệu giao dịch không phù hợp. Giải pháp là điều chỉnh phạm vi ngày trong tháng để tránh nguy cơ xảy ra sự kiện.
Khi xu hướng đảo ngược, có thể có sự lệch giữa đường trung bình di chuyển và chỉ số RSI, dẫn đến tín hiệu giao dịch không nhất quán. Giải pháp là điều chỉnh các tham số trung bình di chuyển thích hợp, rút ngắn chu kỳ để nắm bắt xu hướng đảo ngược nhanh hơn.
Phạm vi ngày tháng dự đoán có thể bị lệch so với thời gian xuất hiện của các mùa thực tế. Giải pháp là xác định các tham số phạm vi mùa chính xác hơn dựa trên kiểm tra dữ liệu lịch sử.
Các tín hiệu giao dịch có thể bị phá vỡ giả. Giải pháp là thiết lập phạm vi rộng hơn để tránh bị lừa bởi những biến động nhỏ.
Có thể giới thiệu các chỉ số phụ trợ khác, chẳng hạn như chỉ số chứng khoán dao động ((STOCH)), để đặt các điều kiện lọc nghiêm ngặt hơn, giảm tín hiệu sai.
Bạn có thể thử nghiệm nhiều hơn các kết hợp tham số khác nhau để tìm các tham số tối ưu để cải thiện hiệu quả của chiến lược. Ví dụ: điều chỉnh chu kỳ trung bình di chuyển, tham số đường ray lên xuống của RSI, v.v.
Có thể sử dụng phương pháp tối ưu hóa từng bước để tự động tìm kiếm không gian tham số để tìm các tổ hợp tham số tối ưu.
Có thể thu thập nhiều dữ liệu lịch sử hơn, sử dụng phương pháp học máy để đào tạo và tối ưu hóa các quy tắc chiến lược.
Có thể xem xét thêm chiến lược dừng lỗ, tối ưu hóa quản lý tiền.
Chiến lược này sử dụng các chỉ số trung bình di chuyển và RSI, kết hợp với các yếu tố theo mùa để tạo ra một xu hướng hoàn chỉnh hơn và hệ thống nhận dạng mua bán quá mức. Ưu điểm của chiến lược là có thể nhận ra rõ ràng các hoạt động theo mùa, nắm bắt các cơ hội giao dịch như vậy.
/*backtest
start: 2023-09-26 00:00:00
end: 2023-10-26 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(title = " RSI of MA Strategy ",shorttitle="MARSI Strategy",default_qty_type = strategy.percent_of_equity, default_qty_value = 100,commission_type=strategy.commission.percent,commission_value=0.1,initial_capital=1)
lengthofma = input(15,minval=1,title="Length of MA")
len = input(14, minval=1, title="Length")
upperband = input(70,minval=1,title='Upper Band for RSI')
lowerband = input(30,minval=1,title="Lower Band for RSI")
src=sma(close,lengthofma)
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
plot(rsi, color=purple)
band1 = hline(upperband)
band0 = hline(lowerband)
fill(band1, band0, color=purple, transp=90)
longCond = crossover(rsi,lowerband)
shortCond = crossunder(rsi,upperband)
monthfrom =input(1)
monthuntil =input(12)
dayfrom=input(1)
dayuntil=input(31)
if ( longCond )
strategy.entry("LONG", strategy.long, stop=close, oca_name="TREND", comment="LONG")
else
strategy.cancel(id="LONG")
if ( shortCond )
strategy.entry("SHORT", strategy.short,stop=close, oca_name="TREND", comment="SHORT")
else
strategy.cancel(id="SHORT")