Bài viết này giới thiệu một chiến lược giao dịch định lượng đa đầu dựa trên chỉ số tương đối mạnh (RSI) và dừng lỗ. Chiến lược này sử dụng chỉ số RSI để đánh giá tình trạng quá bán và quá mua của thị trường, mở vị trí đa đầu khi quá bán, giữ vị trí bằng khi quá mua.
Trung tâm của chiến lược này là chỉ số tương đối mạnh yếu (RSI). RSI là một chỉ số dao động động động, được sử dụng để đo lường mức độ thay đổi của giá trong một khoảng thời gian. Công thức tính toán của nó là:
RS = N天内上涨幅度的平均值 / N天内下跌幅度的平均值
RSI = 100 - 100 / (1 + RS)
Trong đó, N là chu kỳ thời gian để tính RSI, thường lấy 14 .
Lập luận của chiến lược là:
Chiến lược này cố gắng để nắm bắt xu hướng tăng trưởng chính trong thị trường bằng cách mở vị trí đầu tiên của thị trường từ gấu sang bò, và giữ vị trí bằng phẳng vào cuối thị trường bò.
Bài viết này giới thiệu một chiến lược giao dịch định lượng đa đầu dựa trên RSI và dừng lỗ. Chiến lược này sử dụng tín hiệu mua bán quá mức RSI để phá vỡ vị trí, đồng thời sử dụng rủi ro kiểm soát dừng phần trăm. Đây là một chiến lược theo dõi xu hướng thực tế đơn giản và phù hợp cho người mới bắt đầu.
/*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")