Chiến lược giao dịch RSI

Tác giả:ChaoZhang, Ngày: 2023-09-18 14:07:51
Tags:

Tổng quan

Chiến lược này kết hợp Bollinger Bands và chỉ số RSI để dự đoán biến động giá và xác định các điểm nhập khẩu tối ưu. Lý luận rất đơn giản - chúng ta theo dõi giá đóng chạm vào dải Bollinger dưới, sau đó có hai kịch bản có thể xảy ra: giá sẽ bật trở lại từ dải Bollinger dưới hoặc nó tiếp tục giảm. Để xác nhận chuyển động giá, chúng ta sử dụng chỉ số RSI thứ hai để điều tra thêm xu hướng. Ví dụ, nếu giá đạt đến dải Bollinger dưới nhưng giá trị RSI không ở vùng bán quá mức, chúng ta có thể kết luận giá sẽ tiếp tục giảm. Nếu giá trị RSI bán quá mức, chúng ta có thể sử dụng khu vực này làm điểm nhập khẩu của chúng tôi.

Một mức dừng lỗ là cần thiết để tránh mất quá nhiều vốn nếu chỉ số RSI kéo dài quá lâu trong lãnh thổ quá bán.

Khu vực lấy lợi nhuận tốt nhất là khi giá phục hồi trở lại trên dải giữa / dải trên Bollinger hoặc khi RSI đạt mức mua quá mức, tùy thuộc vào điều nào xảy ra trước.

Bài viết dài:

RSI < 30 và giá đóng < Bollinger lower band

Lối ra xa:

RSI > 70

Chiến lược logic

Chiến lược này đầu tiên tính toán chỉ số RSI và thiết lập ranh giới trên / dưới để xác định mức mua quá mức / bán quá mức. Sau đó nó tính toán các dải trung, trên và dưới Bollinger. Khi giá đóng chạm vào dải dưới và RSI dưới 30, đi dài. Khi RSI trên 70, đóng vị trí.

Khi nhập dài, đặt điểm dừng lỗ và lấy lợi nhuận. Lợi nhuận lấy được đặt ở mức giá nhập * (1 + tỷ lệ phần trăm cố định), dừng lỗ được đặt ở mức giá nhập * (1 - tỷ lệ phần trăm cố định).

Điều này cho phép chúng tôi mua ở dải Bollinger thấp hơn khi RSI thấp và bán khi RSI cao, lợi nhuận từ sự đảo ngược.

Phân tích lợi thế

  • Bollinger Bands xác định điểm đảo ngược chính xác
  • RSI lọc ra các sự đột phá sai, đảm bảo nhập độ đáng tin cậy
  • Dừng lỗ và lấy lợi nhuận quản lý rủi ro giao dịch hiệu quả
  • Kiểm tra hậu quả rộng rãi và tối ưu hóa tham số đảm bảo lợi nhuận ổn định

Phân tích rủi ro

  • Bollinger Bands không dự đoán hoàn hảo sự đảo ngược, một số thất bại xảy ra
  • RSI cũng có thể cung cấp tín hiệu sai
  • Stop loss quá gần không thể giữ vị trí, quá lỏng lẻo làm tăng rủi ro

Rủi ro có thể được giảm thiểu bằng cách điều chỉnh các thông số Bollinger, sử dụng các chỉ số khác và mở rộng mức dừng lỗ một cách thích hợp.

Hướng dẫn tối ưu hóa

  • Xem xét kết hợp với các chỉ số khác như KD, MACD để lọc các mục
  • Điều chỉnh năng động tỷ lệ phần trăm dừng lỗ / lấy lợi nhuận
  • Tối ưu hóa các thông số Bollinger
  • Kiểm tra độ bền trên các sản phẩm khác nhau

Kết luận

Khái niệm giao dịch đảo ngược dựa trên Bollinger Bands là đơn giản và đáng tin cậy, đảm bảo nghiên cứu và tinh chỉnh thêm.

[/trans]


/*backtest
start: 2023-09-10 00:00:00
end: 2023-09-17 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//strategy(title="Bollinger Band with RSI", shorttitle="BB&RSI", format=format.price, precision=2, pyramiding=50, initial_capital=10000, calc_on_order_fills=false, calc_on_every_tick=true, default_qty_type=strategy.cash, default_qty_value=1000, currency="USD")
len = input(14, minval=1, title="Length")
src = input(close, "Source", type = input.source)
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, "RSI", color=#8E1599)
band1 = hline(70, "Upper Band", color=#C0C0C0)
band0 = hline(30, "Lower Band", color=#C0C0C0)
fill(band1, band0, color=#9915FF, transp=90, title="Background")

length_bb = input(20,title="BB Length", minval=1)
mult = input(2.0, minval=0.001, maxval=50, title="BB StdDev")
basis = sma(src, length_bb)
dev = mult * stdev(src, length_bb)
upper = basis + dev
lower = basis - dev
offset = input(0, "BB Offset", type = input.integer, minval = -500, maxval = 500)


Plot_PnL = input(title="Plot Cummulative PnL", type=input.bool, defval=false)
Plot_Pos = input(title="Plot Current Position Size", type=input.bool, defval=false)

long_tp_inp = input(10, title='Long Take Profit %', step=0.1)/100
long_sl_inp = input(25, title='Long Stop Loss %', step=0.1)/100
// Take profit/stop loss
long_take_level = strategy.position_avg_price * (1 + long_tp_inp)
long_stop_level = strategy.position_avg_price * (1 - long_sl_inp)

entry_long = rsi < 30 and src < lower
exit_long = rsi > 70

plotshape(entry_long, style=shape.labelup, color=color.green,  location=location.bottom, text="L", textcolor=color.white, title="LONG_ORDER")
plotshape(exit_long, style=shape.labeldown, color=color.red,  location=location.top, text="S", textcolor=color.white, title="SHORT_ORDER")

strategy.entry("Long",true,when=entry_long)    
strategy.exit("TP/SL","Long", limit=long_take_level, stop=long_stop_level)
strategy.close("Long", when=exit_long, comment="Exit")
plot(Plot_PnL ? strategy.equity-strategy.initial_capital : na, title="PnL", color=color.red)
plot(Plot_Pos ? strategy.position_size : na, title="open_position", color=color.fuchsia)


Thêm nữa