Bollinger Bands và RSI Trend Following Strategy

Tác giả:ChaoZhang, Ngày: 2023-12-20 14:32:40
Tags:

img

Tổng quan

Chiến lược này sử dụng Bollinger Bands, chỉ số RSI và đường trung bình động 200 giai đoạn để xác định hướng xu hướng và tham gia vào các giao dịch chống xu hướng gần Bollinger Bands khi hướng xu hướng phù hợp, để kiếm lợi nhuận.

Chiến lược logic

Đầu tiên, đường trung bình động 200 thời kỳ được sử dụng để xác định hướng xu hướng tổng thể. Xu hướng tăng được xác định khi giá trên đường trung bình động, và xu hướng giảm được xác định khi giá dưới. Thứ hai, khi xu hướng tăng, một mục nhập dài được thực hiện nếu chỉ số RSI hiển thị quá bán và đến gần Bollinger Lower Band; khi xu hướng giảm, một mục nhập ngắn được thực hiện nếu chỉ số RSI hiển thị quá mua và đến gần Bollinger Upper Band. Cuối cùng, chỉ số ATR được sử dụng để thiết lập mức dừng lỗ và lấy lợi nhuận được thiết lập là 2 lần mức dừng lỗ.

Phân tích lợi thế

Lợi thế lớn nhất của chiến lược này là nó kết hợp nhiều chỉ số để xác định hướng xu hướng và thời gian đầu vào. Thứ nhất, đường trung bình động 200 ngày có thể xác định hiệu quả xu hướng chính. Thứ hai, Dải Bollinger Upper / Lower chỉ ra các khu vực mà giá có thể đảo ngược. Cuối cùng, chỉ số RSI cho thấy thời gian đảo ngược có thể xảy ra. Việc sử dụng nhiều chỉ số tránh rủi ro đánh giá sai từ một chỉ số duy nhất.

Phân tích rủi ro

Các rủi ro chính của chiến lược này đến từ việc xác định không chính xác các xu hướng chính và tín hiệu đảo ngược. Nếu xu hướng bị đánh giá sai, nó có thể dẫn đến thua lỗ liên tiếp. Nếu tín hiệu đảo ngược là sai, cơ hội dừng lỗ sẽ được kích hoạt cao. Ngoài ra, giao dịch chống xu hướng có rủi ro cao hơn đòi hỏi hoạt động thận trọng.

Để giảm thiểu các rủi ro trên, nên điều chỉnh các tham số của đường trung bình động hoặc thêm các chỉ số khác để xác nhận, để cải thiện độ chính xác.

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

Có nhiều cơ hội để tối ưu hóa chiến lược này: đầu tiên, điều chỉnh các tham số của đường trung bình động để cải thiện độ chính xác xác xác định xu hướng. thứ hai, điều chỉnh các tham số của Bollinger Bands hoặc thêm các kênh Kalman để xác định rõ hơn các vùng đảo ngược. thứ ba, thêm các chỉ số khác như MACD để xác nhận để tránh các tín hiệu sai. thứ tư, tối ưu hóa cài đặt tỷ lệ stop loss để giảm khả năng các sự kiện stop loss thực tế.

Kết luận

Chiến lược này kết hợp Bollinger Bands, RSI và Moving Averages để xác định xu hướng và thời gian, và đã đạt được kết quả tốt. Nhưng việc tối ưu hóa thêm về điều chỉnh tham số và kiểm soát rủi ro là cần thiết để cải thiện sự ổn định lợi nhuận. Nhìn chung, với logic rõ ràng và dễ thực hiện, nó đáng nghiên cứu và áp dụng thêm.


/*backtest
start: 2023-11-19 00:00:00
end: 2023-12-19 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Gab EMA + rsi + bb", overlay=true)
// Custom RSI
RSIlength = input(3, minval=1 , title="lookback length of RSI")
RSIOverBought = input(70, title="RSI OB")
RSIOverSold = input(30, title="RSI OS")
RSIprice = close
vrsi = rsi(RSIprice, RSIlength)


//Bollinger Bands
BBlength = input(20, minval=1,title="Bollinger Period Length")
BBmult = input(2.0, minval=0.001, maxval=50, title="Bollinger Bands Standard Deviation")
BBbasis = sma(close, BBlength)
BBdev = BBmult * stdev(close, BBlength)
BBupper = BBbasis + BBdev
BBlower = BBbasis - BBdev
source = close

//EMA
emaLength=input(200)

//Set TP and SL values
sl_short = high + (syminfo.mintick * 5 * 10)
tp_short = low - (syminfo.mintick * 10 * 10)
sl_long = low - (syminfo.mintick * 5 * 10)
tp_long = high + (syminfo.mintick * 10 * 10)


//Strategy Entry and Exit
strategy.entry("sell", strategy.short, when = low < ema(low, emaLength) and vrsi < RSIOverSold and low < BBlower and barstate.isconfirmed)
strategy.exit("closeshort", from_entry="sell", limit=tp_short, stop=sl_short, when=strategy.position_size != 0)

strategy.entry("buy", strategy.long, when = high > ema(high, emaLength) and vrsi > RSIOverBought and high > BBupper and barstate.isconfirmed)
strategy.exit("closelong", from_entry="buy", limit=tp_long, stop=sl_long, when=strategy.position_size != 0)



  

Thêm nữa