Chiến lược giao dịch swing tăng dựa trên các dải Bollinger và RSI

Tác giả:ChaoZhang, Ngày: 2024-03-11 11:51:22
Tags:

img

Tổng quan

Chiến lược này sử dụng hai chỉ số kỹ thuật, Bollinger Bands và Chỉ số sức mạnh tương đối (RSI), để giao dịch swing tăng trong xu hướng tăng.

Nguyên tắc chiến lược

  1. Tính toán chỉ số RSI: Sử dụng Tỷ lệ trung bình động tương đối (RMA) để tính toán kích thước trung bình của giá tăng và giảm riêng biệt, sau đó chia kích thước của sự gia tăng bằng tổng kích thước để có được chỉ số RSI.

  2. Tính toán Bollinger Bands: Sử dụng Simple Moving Average (SMA) để tính toán đường trung bình giá, sau đó cộng và trừ lệch chuẩn để có được các dải trên và dưới.

  3. Mở dài: Khi giá phá vỡ dưới Bollinger Band dưới cùng và chỉ số RSI dưới 35, nó được coi là đã bán quá mức và một vị trí dài được mở.

  4. Đóng dài: Khi chỉ số RSI vượt trên 69, nó được coi là đã mua quá mức và vị trí dài được đóng để khóa lợi nhuận.

  5. Lấy lợi nhuận và dừng lỗ: Sau khi mở một vị trí, giá lấy lợi nhuận và dừng lỗ được tính dựa trên tỷ lệ phần trăm được xác định bởi người dùng.

Phân tích lợi thế

  1. Bollinger Bands có thể phản ánh khách quan phạm vi biến động giá và điều chỉnh đồng bộ với xu hướng giá mà không bị giới hạn bởi các ngưỡng cố định.

  2. Chỉ số RSI có thể trực quan phản ánh sự cân bằng giữa các lực tăng và giảm và cũng tương đối khách quan. Nó thường được sử dụng để xác định điều kiện mua quá mức và bán quá mức.

  3. Khi được sử dụng trong xu hướng tăng, nó phù hợp hơn cho giao dịch dao động. Bằng cách nắm bắt sự phục hồi giá với dải Bollinger thấp hơn và RSI thấp, và đóng đúng thời điểm các vị trí với RSI cao, nó có thể nắm bắt hiệu quả các chuyển động thị trường ngắn hạn.

  4. Việc thiết lập lấy lợi nhuận và dừng lỗ làm cho rủi ro của chiến lược có thể kiểm soát được.

  5. Logic chiến lược và mã tương đối đơn giản, dễ hiểu và thực hiện, và kết quả backtest tương đối ổn định.

Phân tích rủi ro

  1. Trong thị trường hỗn loạn, Bollinger Bands và RSI có thể tạo ra quá nhiều tín hiệu giao dịch, dẫn đến tần suất giao dịch cao và chi phí giao dịch tăng.

  2. Một chỉ số duy nhất như RSI dễ bị ảnh hưởng bởi biến động giá ngắn hạn và có thể tạo ra các tín hiệu gây hiểu nhầm.

  3. Việc lựa chọn các thông số Bollinger Band và RSI có tác động đáng kể đến hiệu suất chiến lược, và các thị trường và công cụ khác nhau có thể yêu cầu các thông số khác nhau.

  4. Trong trường hợp xảy ra các sự kiện bất ngờ hoặc điều kiện thị trường bất thường, Bollinger Bands và RSI có thể trở nên không hiệu quả.

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

  1. Xem xét việc giới thiệu các chỉ số kỹ thuật khác như trung bình động để lọc. ví dụ, chỉ mở các vị trí khi các trung bình động đang trong sự sắp xếp tăng để cải thiện độ tin cậy của tín hiệu.

  2. Tối ưu hóa ngưỡng trên và dưới của RSI, các thông số của Bollinger Bands, v.v., để tìm kết hợp các thông số hiệu suất tốt nhất cho mỗi công cụ và khung thời gian.

  3. Dựa trên backtesting, tiến hành thử nghiệm tương lai và giao dịch mô phỏng thích hợp để xác nhận đầy đủ hiệu quả và sự ổn định của chiến lược trước khi giao dịch trực tiếp.

  4. Tiếp tục kiểm soát chiến lược rút vốn và cải thiện lợi nhuận điều chỉnh rủi ro thông qua kích thước vị trí, lợi nhuận động và dừng lỗ và các phương pháp khác.

  5. Kết hợp chiến lược vào danh mục đầu tư và sử dụng nó kết hợp với các chiến lược khác để phòng ngừa rủi ro, thay vì sử dụng nó một mình, để cải thiện sự ổn định danh mục đầu tư.

Tóm lại

Bài viết này giới thiệu một chiến lược giao dịch swing tăng dựa trên hai chỉ số kỹ thuật, Bollinger Bands và RSI. Chiến lược này phù hợp để nắm bắt các chuyển động thị trường ngắn hạn trong xu hướng tăng, và logic và thực hiện của nó tương đối đơn giản. Nó mở các vị trí dài khi giá phá vỡ dưới Bollinger Band thấp hơn và RSI thấp hơn, đóng các vị trí khi RSI cao hơn, và thiết lập mức lợi nhuận và dừng lỗ. Ưu điểm của chiến lược là nó có thể phản ánh khách quan phạm vi biến động giá và sự cân bằng của các lực tăng và giảm, và rủi ro của nó tương đối có thể kiểm soát được. Tuy nhiên, khi sử dụng nó trong thực tế, người ta cần chú ý đến việc kiểm soát tần suất giao dịch, kết hợp nhiều chỉ số giao dịch để lọc các thông số, tối ưu hóa các chỉ số và quản lý các vị trí. Ngoài ra, chiến lược có thể thất bại trong điều kiện thị trường và các biện pháp kiểm soát rủi ro khác. Bằng cách giới thiệu các chỉ số lọc bất thường, quản lý lợi nhuận và mất mát khác, theo các đặc điểm chung, người đầu tư có thể


/*backtest
start: 2023-03-05 00:00:00
end: 2024-03-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="Bollinger Band with RSI", shorttitle="BB&RSI")
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(69, "Upper Band", color=#C0C0C0)
band0 = hline(31, "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 < 35.58 and src < lower
exit_long = rsi > 69
 
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