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


Ngày tạo: 2024-03-28 18:11:08 sửa đổi lần cuối: 2024-03-28 18:11:08
sao chép: 0 Số nhấp chuột: 665
1
tập trung vào
1617
Người theo dõi

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

Tổng quan

Chiến lược này kết hợp các đường dây Brin và các chỉ số tương đối mạnh (RSI) để đánh giá tín hiệu mua và bán. Nó tạo ra tín hiệu mua khi giá phá vỡ đường dây Brin và RSI thấp hơn giới hạn thấp; nó tạo ra tín hiệu bán khi giá phá vỡ đường dây Brin và RSI cao hơn giới hạn cao.

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

  1. Tính toán chỉ số RSI để đo lường tình trạng quá mua quá bán của giá.
  2. Tính toán đường băng Brin lên xuống để đánh giá sự đột phá của giá.
  3. Các tín hiệu mua và bán được thiết lập kết hợp với RSI và BRI:
    • Một tín hiệu mua được tạo ra khi giá đóng cửa dưới đường đi xuống của Bollinger Bands và RSI dưới mức giới hạn thấp nhất được thiết lập.
    • Một tín hiệu bán được tạo ra khi giá đóng cửa cao hơn đường dây Bollinger và RSI cao hơn mức giới hạn được đặt.
  4. Các tham số mua vào khoảng thời gian giới hạn tần suất mua liên tục, để thực hiện quản lý vị trí kim tự tháp.

Lợi thế chiến lược

  1. Xác nhận kép: Chiến lược sử dụng cả hai chỉ số Brin và RSI cùng một lúc, có thể nắm bắt các điểm biến động xu hướng một cách đáng tin cậy hơn và giảm nguy cơ tín hiệu sai.
  2. Xây dựng vị trí theo kiểu kim tự tháp: Bằng cách thiết lập tham số mua vào, chiến lược có thể tăng vị trí dần dần sau khi xu hướng được thiết lập, có lợi cho việc kiểm soát rủi ro và tối ưu hóa lợi nhuận.
  3. Tính linh hoạt: Người dùng có thể tùy chỉnh các tham số như RSI up/down và buy/sell interval tùy thuộc vào đặc điểm thị trường và sở thích cá nhân.

Rủi ro chiến lược

  1. Rủi ro tiếp tục xu hướng: Nếu giá có một sự rút lui ngắn sau khi phá vỡ vùng Burin, có thể dẫn đến chiến lược thanh toán sớm và bỏ lỡ xu hướng tiếp theo.
  2. Rủi ro tối ưu hóa tham số: Trong các môi trường thị trường khác nhau, sự kết hợp tham số tối ưu có thể khác nhau rất nhiều, và chiến lược có thể gặp rủi ro quá phù hợp.
  3. Black Swan: Chiến lược được xây dựng dựa trên dữ liệu lịch sử và có thể không có hiệu quả trong việc đối phó với các tình huống cực đoan.

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

  1. Tiếp tục sử dụng lệnh dừng lỗ: Thêm logic dừng lỗ di động hoặc dừng lỗ cố định vào chiến lược để kiểm soát thêm rủi ro giao dịch đơn lẻ.
  2. Tối ưu hóa tham số động: Đổi ứng các tham số như RSI up/down và buy/sell interval theo tình trạng thị trường thay đổi để cải thiện khả năng thích ứng của chiến lược.
  3. Kết hợp với các chỉ số kỹ thuật khác: giới thiệu các chỉ số khác về xu hướng hoặc dao động như một phán đoán phụ trợ, tăng cường sự ổn định của chiến lược.

Tóm tắt

Chiến lược này khéo léo kết hợp hai chỉ số kỹ thuật cổ điển là Brin và RSI để nắm bắt cơ hội xu hướng thông qua cơ chế xác nhận kép. Đồng thời, chiến lược này giới thiệu phương pháp xây dựng vị thế hình kim tự tháp, tìm cách tối ưu hóa lợi nhuận trong khi kiểm soát rủi ro. Nhưng chiến lược cũng có 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 bạch đen, có thể được tối ưu hóa hơn nữa trong tương lai bằng cách giới thiệu các phương thức như dừng lỗ, tối ưu hóa tham số động và kết hợp với các chỉ số khác.

Mã nguồn chiến lược
/*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!")