Bài viết này giới thiệu một chiến lược giao dịch định lượng để đi dài dựa trên chỉ số sức mạnh tương đối (RSI) và dừng lại. Chiến lược sử dụng chỉ số RSI để xác định điều kiện thị trường mua quá nhiều và bán quá nhiều, nhập các vị trí dài khi thị trường bán quá nhiều và đóng các vị trí khi nó bị mua quá nhiều. Đồng thời, chiến lược sử dụng một lệnh dừng lại dựa trên tỷ lệ phần trăm để kiểm soát rủi ro. Đây là một chiến lược theo xu hướng cổ điển được thiết kế để nắm bắt xu hướng tăng trong các thị trường mạnh.
Cốt lõi của chiến lược này là chỉ số sức mạnh tương đối (RSI). RSI là một bộ dao động động được sử dụng để đo cường độ thay đổi giá trong một khoảng thời gian. Công thức tính toán là:
RS = Average gain over N days / Average loss over N days
RSI = 100 - 100 / (1 + RS)
nơi N là khoảng thời gian để tính RSI, thường được đặt thành 14.
Lý thuyết chiến lược là như sau:
Chiến lược này cố gắng vào các vị trí vào đầu của một quá trình chuyển đổi thị trường từ giảm sang tăng, và thoát ra vào cuối thị trường tăng, để nắm bắt xu hướng tăng chính.
Bài viết này trình bày một chiến lược giao dịch định lượng để đi dài dựa trên chỉ số RSI và trailing stops. Chiến lược sử dụng tín hiệu mua quá mức và bán quá mức RSI để vào và ra khỏi các vị trí, trong khi sử dụng chỉ số trailing stop dựa trên tỷ lệ phần trăm để kiểm soát rủi ro. Đây là một chiến lược theo xu hướng đơn giản và thực tế phù hợp cho người mới bắt đầu học. Tuy nhiên, nó cũng có một số hạn chế, chẳng hạn như hiệu suất kém trong các thị trường giới hạn phạm vi và thiếu sự linh hoạt trong quản lý dừng lỗ và vị trí. Để giải quyết những thiếu sót này, chúng ta có thể tối ưu hóa chiến lược trong các khía cạnh như lọc xu hướng, dừng lỗ năng động, quản lý vị trí và phòng hộ ngắn dài, để có được lợi nhuận mạnh mẽ hơn.
/*backtest start: 2023-03-02 00:00:00 end: 2024-03-07 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("RSI Strategy (Long)", overlay=true, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100) length = input( 14 ) overSold = input( 30 ) overBought = input( 70 ) price = close vrsi = ta.rsi(price, length) co = ta.crossover(vrsi, overSold) cu = ta.crossunder(vrsi, overBought) // *** Signals *** enter_long = ta.crossover(vrsi, overSold) enter_short = ta.crossunder(vrsi, overBought) close_long = ta.crossunder(vrsi, overBought) close_short = ta.crossunder(vrsi, overBought) // *** Risk management *** entry_price = close percent_diff = input(5) stop_loss_price_long = (1 - percent_diff / 100.) * entry_price stop_loss_price_short = (1 + percent_diff / 100.) * entry_price // *** Positions *** if enter_long and strategy.position_size == 0 strategy.entry("Long", strategy.long) strategy.exit("SL Long", "Long", stop = stop_loss_price_long) if enter_short and strategy.position_size == 0 strategy.entry("Short", strategy.short, qty=.001) strategy.exit("SL short", "Short", stop = stop_loss_price_short) if close_long strategy.close("Long", "Exit Long") if close_short strategy.close("Short", "Exit Short")