Chiến lược giao dịch Bollinger Band và Stoch RSI

Tác giả:ChaoZhang, Ngày: 2023-09-21 21:02:02
Tags:

Tổng quan

Chiến lược này kết hợp các chỉ số Bollinger Bands và Stoch RSI để giao dịch nhiều chỉ số. Nó thuộc về loại chiến lược chỉ số kết hợp điển hình. Bollinger Bands xác định hướng xu hướng và Stoch RSI tối ưu hóa thời gian nhập cảnh cho tín hiệu giao dịch.

Chiến lược logic

Chiến lược dựa trên hai chỉ số chính:

  1. Bollinger Bands

    Tính toán các dải trên, giữa và dưới.

  2. Stoch RSI

    Tính toán chỉ số Stoch RSI. Một tín hiệu mua được tạo ra khi đường K vượt qua đường D.

Lý thuyết giao dịch cụ thể là: mở dài khi cả hai Bollinger Bands phá vỡ thấp hơn và Stoch RSI đường chéo vàng xảy ra cùng một lúc.

Logic exit sử dụng các dải để lấy lợi nhuận và dừng lỗ: đóng cho lợi nhuận khi giá chạm vào dải trên hoặc giữa một lần nữa, đóng cho lỗ khi giá phá vỡ trở lại dưới dải dưới.

Ưu điểm

  • Kết hợp Bollinger Bands và Stoch RSI
  • Các dải đánh giá xu hướng tổng thể, Stoch RSI tối ưu hóa nhập cảnh
  • Stoch RSI lọc các đợt đột phá false band
  • Dải giữa và dưới cung cấp lối ra
  • Nhiều thông số điều chỉnh cho tối ưu hóa

Rủi ro

  • Các chỉ số dựa trên MA chậm trễ, thiếu các mục tốt nhất
  • Chỉ dẫn chỉ dẫn, phản ứng chậm đối với các sự kiện đột ngột
  • Cài đặt băng tần không chính xác sẽ vô hiệu hóa việc dừng
  • Các thông số RSI xấu của Stoch tạo ra tín hiệu sai
  • Cần điều chỉnh tham số riêng biệt cho các sản phẩm khác nhau

Các rủi ro có thể được giảm bằng cách:

  • Tối ưu hóa các tham số để có độ chính xác cao hơn
  • Thêm bộ lọc xác nhận như MACD
  • Sử dụng các điểm dừng phía sau thay vì các điểm dừng băng tần
  • Các thông số thử nghiệm cho các sản phẩm khác nhau
  • Hệ thống điều chỉnh kích thước vị trí

Hướng dẫn cải thiện

Chiến lược có thể được cải thiện bằng cách:

  1. Tối ưu hóa các thông số Bollinger Bands

    Điều chỉnh tỷ lệ tính toán trên/dưới để phù hợp nhất

  2. Tối ưu hóa các thông số Stoch RSI

    Tìm giá trị K và D tối ưu

  3. Thêm các chỉ số xác nhận như MACD

    Tránh các tín hiệu sai dựa trên chỉ số duy nhất

  4. Sử dụng điểm dừng lợi nhuận sau thay vì điểm dừng cố định

    Các điểm dừng dựa trên biến động giá

  5. Các thông số thử nghiệm riêng biệt cho các sản phẩm khác nhau

    Các thông số tối ưu khác nhau giữa các sản phẩm khác nhau

Tóm lại

Chiến lược này sử dụng các băng Bollinger cho hướng xu hướng và Stoch RSI để tối ưu hóa nhập cảnh, tận dụng một cách tiếp cận đa chỉ số. Nhưng những thách thức như tối ưu hóa tham số khó khăn và độ chính xác tín hiệu tồn tại. Kiểm tra kỹ lưỡng cho tối ưu hóa tham số, thêm bộ lọc và điều chỉnh liên tục các quy tắc dựa trên kết quả có thể cải thiện độ chính xác trong khi vẫn giữ được điểm mạnh của một hệ thống kết hợp.


/*backtest
start: 2022-09-14 00:00:00
end: 2023-09-20 00:00:00
period: 2d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3

strategy(title = "BB+RSI v2", overlay = true)

price=close
////////// ///////  BB /////////////////////////

bblength = input(50)
bbupmult =input(2,step=0.1,title="Multiplier for BB Upper Band")
bblowmult = input(2,step=0.1,title="Multiplier for BB Lower Band")

basis =  sma(close,bblength)

devup = bbupmult * stdev(close, bblength)
devlow = bblowmult * stdev(close, bblength)

upper = basis + devup
lower = basis - devlow
plot(basis, color=red)
p1 = plot(upper, color=blue)
p2 = plot(lower, color=blue)
fill(p1, p2)


bbbuy= crossover(price,lower)
bbsell = crossunder(price,upper) or price>upper or crossunder(price,basis)



//////////////////// BB //////////////////////




////////////////////////  S RSI  /////////////////////

lengthrsi = input(6)
overSold = input( 20 )
overBought = input( 70 )
vrsi = rsi(price, lengthrsi)

smoothK = input(3, minval=1)
smoothD = input(3, minval=1)
lengthRSI = input(14, minval=1)
lengthStoch = input(14, minval=1)
src = input(close, title="RSI Source")

rsi1 = rsi(src, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)

SRSIbuy=crossover(k,d)

////////////////////// S  RSI  ///////////////////////

// Conditions



longcond = bbbuy and SRSIbuy
closelong = bbsell


monthfrom =input(6)
monthuntil =input(12)
dayfrom=input(1)
dayuntil=input(31)



if (  longcond ) 
    strategy.entry("BUY", strategy.long, stop=close, oca_name="TREND",  comment="BUY")
    
else
    strategy.cancel(id="BUY")


if ( closelong  ) 

    strategy.close("BUY")







Thêm nữa