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

Tác giả:ChaoZhang, Ngày: 2024-03-28 18:11:08
Tags:

img

Tổng quan

Chiến lược này kết hợp Bollinger Bands và Chỉ số Sức mạnh Tương đối (RSI) để tạo ra tín hiệu mua và bán. Một tín hiệu mua được kích hoạt khi giá phá vỡ dưới Bollinger Band dưới và RSI dưới một mức thấp nhất định. Một tín hiệu bán được kích hoạt khi giá phá vỡ trên Bollinger Band trên và RSI trên một mức cao nhất định. Ngoài ra, chiến lược giới thiệu một tham số khoảng mua để tránh giao dịch thường xuyên, điều này có lợi cho quản lý vị trí kim tự tháp.

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

  1. Tính toán chỉ số RSI để đo điều kiện mua quá mức và bán quá mức.
  2. Tính toán các Bollinger Bands trên và dưới để xác định giá đột phá.
  3. Đặt tín hiệu mua và bán dựa trên chỉ số RSI và Bollinger Bands:
    • Một tín hiệu mua được tạo ra khi giá đóng dưới Bollinger Band dưới và chỉ số RSI dưới mức dưới được chỉ định.
    • Một tín hiệu bán được tạo ra khi giá đóng là trên Bollinger Band trên và chỉ số RSI là trên mức trên được chỉ định.
  4. Thiết lập một thông số khoảng mua để hạn chế tần suất mua liên tiếp, tạo điều kiện dễ dàng cho việc quản lý vị trí kim tự tháp.

Ưu điểm chiến lược

  1. Xác nhận hai lần: Chiến lược sử dụng cả Bollinger Bands và chỉ số RSI, cung cấp phát hiện đảo ngược xu hướng đáng tin cậy hơn và giảm các tín hiệu sai.
  2. Xây dựng vị trí kim tự tháp: Bằng cách đặt tham số khoảng thời gian mua, chiến lược dần dần thêm các vị trí khi xu hướng được thiết lập, giúp kiểm soát rủi ro và tối ưu hóa lợi nhuận.
  3. Các tham số linh hoạt: Người dùng có thể linh hoạt thiết lập các mức RSI trên và dưới và mua các tham số khoảng thời gian theo đặc điểm thị trường và sở thích cá nhân.

Rủi ro chiến lược

  1. Nguy cơ tiếp tục xu hướng: Nếu giá trải qua một sự rút lui ngắn sau khi phá vỡ Bollinger Bands, chiến lược có thể đóng các vị trí sớm và bỏ lỡ xu hướng tiếp theo.
  2. Rủi ro tối ưu hóa tham số: Sự kết hợp các tham số tối ưu có thể khác nhau đáng kể trong các môi trường thị trường khác nhau và chiến lược có thể phải đối mặt với rủi ro quá phù hợp.
  3. Sự kiện thiên nga đen: Chiến lược được xây dựng dựa trên dữ liệu lịch sử và có thể không xử lý hiệu quả các điều kiện thị trường cực đoan.

Hướng dẫn tối ưu hóa chiến lược

  1. Tạo ra lệnh dừng lỗ và lấy lợi nhuận: Thêm lệnh dừng lại hoặc lệnh dừng lỗ cố định và logic lấy lợi nhuận vào chiến lược để kiểm soát thêm rủi ro thương mại cá nhân.
  2. Tối ưu hóa tham số động: Điều chỉnh động các tham số như mức RSI trên và dưới và khoảng thời gian mua dựa trên những thay đổi trong điều kiện thị trường để cải thiện khả năng thích nghi chiến lược.
  3. Kết hợp với các chỉ số kỹ thuật khác: Đưa ra các chỉ số xu hướng hoặc dao động khác làm phán đoán phụ để tăng cường tính vững chắc của chiến lược.

Tóm lại

Chiến lược này kết hợp một cách thông minh hai chỉ số kỹ thuật cổ điển: Bollinger Bands và RSI. Nó sử dụng một cơ chế xác nhận kép để nắm bắt các cơ hội xu hướng. Đồng thời, chiến lược giới thiệu một phương pháp xây dựng vị trí kim tự tháp để kiểm soát rủi ro trong khi tối ưu hóa lợi nhuận. Tuy nhiên, chiến lược cũng phải đối mặt với các rủi ro như rủi ro tiếp tục xu hướng, rủi ro tối ưu hóa tham số và rủi ro sự kiện thiên nga đen. Trong tương lai, chiến lược có thể được tối ưu hóa hơn nữa bằng cách giới thiệu dừng lỗ và lấy lợi nhuận, tối ưu hóa tham số năng động và kết hợp với các chỉ số khác. Nhìn chung, đây là một chiến lược giao dịch định lượng rõ ràng và hợp lý nghiêm ngặt đáng để khám phá và thực hành thêm.


/*backtest
start: 2024-02-01 00:00:00
end: 2024-02-29 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/

//@version=4
strategy(overlay=true, shorttitle="cakes'Strategy For RSI", default_qty_type = strategy.percent_of_equity, initial_capital = 100000, default_qty_value = 100, pyramiding = 0, title="cakes'Strategy", currency = 'USD')

////////// ** Inputs ** //////////

// Stoploss and Profits Inputs

v1 = input(true, title="GoTradePlz")

////////// ** Indicators ** //////////

// RSI

len = 14
src = close
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)



//  Bollinger Bands

length1 = 20
src1 = close
mult1 = 1.0
basis1 = sma(src1, length1)
dev1 = mult1 * stdev(src1, length1)
upper1 = basis1 + dev1
lower1 = basis1 - dev1



////////// ** Triggers and Guards ** //////////


// 输入
RSILowerLevel1 = input(30, title="RSI 下限水平")
RSIUpperLevel1 = input(70, title="RSI 上限水平")

// 购买间隔
buyInterval = input(5, title="购买间隔(K线数量)")

// 跟踪购买间隔
var int lastBuyBar = na
lastBuyBar := na(lastBuyBar[1]) ? bar_index : lastBuyBar

// 策略信号
BBBuyTrigger1 = close < lower1
BBSellTrigger1 = close > upper1
rsiBuyGuard1 = rsi < RSILowerLevel1
rsiSellGuard1 = rsi > RSIUpperLevel1

Buy_1 = BBBuyTrigger1 and rsiBuyGuard1 and (bar_index - lastBuyBar) >= buyInterval
Sell_1 = BBSellTrigger1 and rsiSellGuard1

if (Buy_1)
    lastBuyBar := bar_index

strategy.entry("Long", strategy.long, when = Buy_1, alert_message = "Buy Signal!")
strategy.close("Long", when = Sell_1, alert_message = "Sell Signal!")

Thêm nữa