
Chiến lược này được gọi là chiến lược giao dịch định lượng với chỉ số RSI kết hợp với đường trung bình di chuyển. Chiến lược này sử dụng chỉ số RSI và đường trung bình di chuyển làm tín hiệu giao dịch, thực hiện chiến lược giao dịch định lượng để thực hiện hoạt động đảo ngược trong bối cảnh xu hướng.
Chiến lược này chủ yếu sử dụng chỉ số RSI và đường trung bình di chuyển nhanh để đánh giá xu hướng và thời gian đảo ngược của giá cổ phiếu. Cụ thể, chiến lược này đầu tiên tính toán đường trung bình di chuyển nhanh (SMA) và đường trung bình di chuyển chậm, tạo ra tín hiệu mua khi đi qua đường trung bình di chuyển chậm trên đường trung bình di chuyển nhanh; tạo ra tín hiệu bán khi đi qua đường trung bình di chuyển chậm dưới đường trung bình di chuyển nhanh.
Trong khi đó, chiến lược này tính toán chỉ số RSI để xác định xem giá cổ phiếu có đang quá mua hay quá bán hay không. Trước khi mở vị trí, sẽ đánh giá xem chỉ số RSI có bình thường hay không, nếu RSI vượt quá ngưỡng thấp được thiết lập, hãy tạm dừng mở vị trí và chờ RSI trở lại sau khi mở vị trí. Điều này có thể tránh việc đặt vị trí vào thời điểm bất lợi khi mua quá bán. Mặt khác, sau khi đã giữ vị trí, nếu RSI vượt quá ngưỡng dừng được thiết lập, vị trí sẽ bị đóng cửa. Điều này có thể khóa giao dịch có lợi.
Bằng cách kết hợp các chỉ số RSI và đường trung bình di chuyển, bạn có thể mở vị trí khi giá cổ phiếu tạo ra tín hiệu đảo ngược; và dừng lại khi mua quá mức, thực hiện chiến lược giao dịch định lượng để kiếm lợi nhuận khi hoạt động đảo ngược trong bối cảnh xu hướng giá cổ phiếu.
Chiến lược này có những ưu điểm sau:
Có thể mở vị trí chính xác khi giá cổ phiếu đảo ngược. Sử dụng đường trung bình di chuyển như một tín hiệu mua và đường chết như một tín hiệu bán, có thể nắm bắt chính xác cơ hội đảo ngược xu hướng giá cổ phiếu.
Có thể tránh mở vị trí vào thời điểm bất lợi. Bằng cách đánh giá tình trạng quá mua quá bán thông qua chỉ số RSI, có thể ngăn chặn hiệu quả việc xây dựng vị trí khi giá cổ phiếu dao động quá mức trong thời gian ngắn và tránh thua lỗ không cần thiết.
RSI Stop có thể kiểm soát vị trí trong phạm vi lợi nhuận hợp lý, kiểm soát rủi ro giao dịch hiệu quả.
Dễ dàng điều chỉnh tham số. Chu kỳ SMA, tham số RSI, v.v. có thể được điều chỉnh linh hoạt để thích ứng với môi trường thị trường khác nhau.
Tăng hiệu quả sử dụng vốn. Có thể giao dịch thường xuyên trong giai đoạn biến động của xu hướng và sử dụng vốn hiệu quả.
Chiến lược này cũng có những rủi ro sau:
Rủi ro lỗi theo dõi. Đường trung bình di chuyển là một chỉ số đánh giá xu hướng có độ trễ, có thể dẫn đến thời gian mở vị trí không chính xác.
Rủi ro giao dịch thường xuyên. Trong tình huống bất ổn, có thể dẫn đến việc đặt cược quá thường xuyên.
Rủi ro điều chỉnh tham số. Chu kỳ SMA và tham số RSI cần được thử nghiệm nhiều lần để điều chỉnh để phù hợp với thị trường, thiết lập không đúng có thể ảnh hưởng đến hiệu suất chiến lược.
Rủi ro dừng. RSI dừng thiết lập không chính xác cũng có thể dẫn đến vị trí thoát sớm hoặc tiếp tục tăng sau khi dừng.
Chiến lược này được tối ưu hóa như sau:
Thử sử dụng các chỉ số khác như MACD, đường Brin và kết hợp với RSI để làm cho tín hiệu chính xác và đáng tin cậy hơn.
Thêm thuật toán học máy để các tham số có thể được điều chỉnh tự động dựa trên dữ liệu lịch sử, giảm nguy cơ điều chỉnh tham số.
Thêm cơ chế tối ưu hóa chiến lược ngăn chặn để làm cho ngăn chặn trở nên thông minh hơn và thích ứng với sự thay đổi của thị trường.
Tối ưu hóa chiến lược quản lý vị trí, giảm rủi ro của một giao dịch bằng cách điều chỉnh kích thước vị trí động.
Kết hợp dữ liệu tần số cao, sử dụng dữ liệu thời gian thực ở cấp tick để giao dịch tần số cao, tăng tần số chiến lược.
Nói chung, chiến lược này sử dụng chỉ số RSI và đường trung bình di chuyển để tạo ra tín hiệu giao dịch, thực hiện một chiến lược định lượng để tính toán ngược trong quá trình chạy xu hướng. So với việc sử dụng đường trung bình di chuyển một mình, chiến lược này kết hợp với đánh giá chỉ số RSI có thể ngăn chặn hiệu quả việc mở vị trí vào thời điểm bất lợi và kiểm soát rủi ro giao dịch bằng cách dừng RSI, tăng cường sự ổn định của chiến lược đến một mức độ nhất định. Tất nhiên, chiến lược này cũng có một số không gian cải tiến, trong tương lai có thể được tối ưu hóa từ nhiều chỉ số, tham số tối ưu hóa tự động, quản lý vị trí, v.v., làm cho chiến lược hoạt động xuất sắc hơn.
/*backtest
start: 2023-12-17 00:00:00
end: 2023-12-18 19:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//1. 做多
// a. RSI在超买区间时不开单,直到RSI回落一点再开单
// b. 已经有多仓,如果RSI超买,则平多获利,当RSI回落一点之后,再次开多,直到有交叉信号反转做空
//2. 做空
// a. RSI在超卖区间时不开单,直到RSI回落一点之后再开多单
// b. 已经有空仓,如果RSI超卖,则平空获利,当RSI回落一点之后,再开空单,直到有交叉信号反转做多
//@version=4
strategy("策略_RSI+移动揉搓线_", overlay=true)
// 输入
fastLength = input(11, minval=1)
slowLength = input(82,minval=1)
length = input(title="长度", type=input.integer, defval=14, minval=1, maxval=100)
hight_rsi = input(title="rsi超过上轨平多获利", type=input.integer, defval=80, minval=1, maxval=100)
low_rsi = input(title="rsi超过下轨平空获利", type=input.integer, defval=20, minval=1, maxval=100)
open_long_rsi_threshold = input(title="rsi低于该阈值时才开多", type=input.integer, defval=75, minval=1, maxval=100)
open_short_rsi_threshold = input(title="rsi高于该阈值时才开空仓", type=input.integer, defval=25, minval=1, maxval=100)
// 均线
sma_fast = sma(close, fastLength)
sma_slow = sma(close, slowLength)
// RSI
rsi = rsi(close, length)
//**********变量*start*******//
var long_f = false // 标记是否是均线交叉多头
var short_f = false // 标记是否是均线交叉空头
var long_open_pending = false // 标记开仓时rsi是否处于超买状态
var short_open_pending = false // 标记开仓时rsi是否处于超卖
var long_rsi_over_buy = false // 标记 多仓时 是否发生超买平多获利
var short_rsi_over_sell = false // 标记 空仓时 是否发生超卖平空获利
//**********逻辑*start*******//
// 买入
longCondition = crossover(sma_fast, sma_slow)
if (longCondition)
short_rsi_over_sell := false // 清空该标记,防止再次开空仓
long_f := true
short_f := false
if (rsi < hight_rsi)
// 并且没有超买
strategy.entry("多", long=strategy.long)
if (rsi > hight_rsi)
// 开仓时发生超买,等待rsi小于hight_rsi
long_open_pending := true
// 卖出
shortCondition = crossunder(sma_fast, sma_slow)
if (shortCondition)
long_rsi_over_buy := false //清空该标记,防止再次开多仓
long_f := false
short_f := true
if (rsi > low_rsi)
strategy.entry("空", long=strategy.short)
if (rsi < low_rsi)
// 开仓时发生超卖,等待rsi大于low_rsi
short_open_pending := true
// 等待RSI合理,买入开仓
if (long_f and long_open_pending and strategy.position_size == 0 and rsi < open_long_rsi_threshold)
strategy.entry("多", long=strategy.long)
long_open_pending := false
// 等待RSI合理,卖出开仓
if (short_f and short_open_pending and strategy.position_size == 0 and rsi > open_short_rsi_threshold)
strategy.entry("空", long=strategy.short)
short_open_pending := false
//RSI止盈(RSI超买平多)
if (strategy.position_size > 0 and long_f and rsi > hight_rsi)
strategy.close_all()
long_rsi_over_buy := true
//RSI止盈(RSI超卖平空)
if (strategy.position_size < 0 and short_f and rsi < low_rsi)
strategy.close_all()
short_rsi_over_sell := true
//RSI止盈之后,再次开多
if (long_f and long_rsi_over_buy and strategy.position_size == 0 and rsi < hight_rsi)
long_rsi_over_buy := false
strategy.entry("多", long=strategy.long)
//RSI止盈之后,再次开空
if (short_f and short_rsi_over_sell and strategy.position_size == 0 and rsi > low_rsi)
short_rsi_over_sell := false
strategy.entry("空", long=strategy.short)
//**********绘图*start*******//
p1 = plot(sma_fast, linewidth=2, color=color.green)
p2 = plot(sma_slow, linewidth=2, color=color.red)
fill(p1, p2, color=color.green)
plot(cross(sma_fast, sma_slow) ? sma_fast : na, style = plot.style_circles, linewidth = 4)
// 绘制rsi线
//plot(rsi, color=color.green, editable=true, style=plot.style_circles, linewidth=2)
// 绘制上下轨
//high_ = hline(80, title="上轨")
//low_ = hline(20, title="下轨")
//fill(high_, low_, transp=80, editable=true, title="背景")