Chiến lược giảm xu hướng dựa trên chỉ báo phần trăm Dải Bollinger


Ngày tạo: 2023-12-06 14:43:39 sửa đổi lần cuối: 2023-12-06 14:43:39
sao chép: 0 Số nhấp chuột: 654
1
tập trung vào
1621
Người theo dõi

Chiến lược giảm xu hướng dựa trên chỉ báo phần trăm Dải Bollinger

Tổng quan

Chiến lược này dựa trên chỉ số tỷ lệ phần trăm của Bollinger Bands kết hợp với các chỉ số RSI và MFI, bằng cách phát hiện giá của các sản phẩm tài chính phá vỡ Bollinger Bands và đi xuống đường, kết hợp với tín hiệu RSI oversold và MFI oversold để đưa ra nhiều quyết định giảm giá. Đây là một chiến lược giao dịch theo xu hướng điển hình.

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

  1. Tính tỷ lệ phần trăm của vùng Brin ((BB%) BB% là chênh lệch tiêu chuẩn của giá so với đường trung tâm của vùng Brin, để đánh giá hướng thị trường thông qua các kênh của vùng Brin.
  2. Kết hợp các chỉ số RSI và MFI để đánh giá mua quá mức. RSI đánh giá mua quá mức bằng cách so sánh mức tăng trung bình và mức giảm trung bình trong một khoảng thời gian. MFI đánh giá mua quá mức bằng cách so sánh khối lượng giao dịch tăng và khối lượng giao dịch giảm.
  3. Khi giá từ dưới lên phá vỡ đường dây Bollinger xuống, hãy làm nhiều hơn; Khi giá từ trên xuống phá vỡ đường dây Bollinger lên đường dây, hãy làm trống. Đồng thời, kết hợp các chỉ số RSI và MFI để lọc tín hiệu bán tháo và mua quá mức.

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

  1. Các nhà đầu tư sẽ có thể sử dụng các giao dịch theo xu hướng, tránh thị trường và giảm sự biến động của lợi nhuận.
  2. Kết hợp nhiều chỉ số để lọc các tín hiệu, cải thiện độ chính xác của quyết định.
  3. Cài đặt tham số linh hoạt, có thể điều chỉnh đặc điểm rủi ro lợi nhuận của chiến lược.
  4. Các chỉ số biến động cao như hàng hóa, ngoại hối, tiền điện tử.

Rủi ro và giải pháp

  1. Brin Belt Breach có khả năng tạo ra tín hiệu giả, cần lọc nhiều chỉ số kết hợp.
  2. Các tín hiệu đột phá cần được đánh giá một cách thoải mái để tránh bỏ lỡ những cơ hội tốt.
  3. Điều chỉnh tham số thiết lập để kiểm soát rủi ro, chẳng hạn như điều chỉnh quy mô vị trí, nâng mức dừng lỗ.

Hướng tối ưu hóa

  1. Thêm các cơ chế dừng dựa trên biến động, chẳng hạn như chỉ số ATR.
  2. Giới thiệu mô hình học máy hỗ trợ đánh giá chất lượng tín hiệu đột phá.
  3. Tối ưu hóa cơ chế lựa chọn giống tham gia, điều chỉnh động lực tham gia tiêu chuẩn.
  4. Các yếu tố khác như chỉ số cảm xúc và thông tin sẽ giúp cải thiện hệ thống ra quyết định.

Tóm tắt

Chiến lược này được áp dụng chủ yếu cho các giống không có xu hướng có biến động cao, thông qua kết hợp các kênh và chỉ số của Brin, để thực hiện giao dịch theo xu hướng. Các đặc điểm lợi nhuận rủi ro có thể được kiểm soát bằng cách điều chỉnh các tham số. Tiếp theo, có thể giới thiệu nhiều chỉ số phụ trợ và mô hình để tối ưu hóa chất lượng quyết định, do đó có thể có hiệu suất chiến lược tốt hơn.

Mã nguồn chiến lược
/*backtest
start: 2023-11-05 00:00:00
end: 2023-12-05 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "BB%/MFI/RSI", shorttitle = "BB%/MFI/RSI", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 100)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(false, defval = false, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From Day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To Day")

source = hlc3
length = input(14, minval=1), mult = input(2.0, minval=0.001, maxval=50), bblength = input(50, minval=1, title="BB Period")
DrawRSI_f=input(true, title="Draw RSI?", type=bool)
DrawMFI_f=input(false, title="Draw MFI?", type=bool)
HighlightBreaches=input(true, title="Highlight Oversold/Overbought?", type=bool)

DrawMFI = (not DrawMFI_f) and (not DrawRSI_f) ? true : DrawMFI_f
DrawRSI = (DrawMFI_f and DrawRSI_f) ? false : DrawRSI_f
// RSI
rsi_s = DrawRSI ? rsi(source, length) : na
plot(DrawRSI ? rsi_s : na, color=maroon, linewidth=2)

// MFI
upper_s = DrawMFI ? sum(volume * (change(source) <= 0 ? 0 : source), length) : na
lower_s = DrawMFI ? sum(volume * (change(source) >= 0 ? 0 : source), length) : na
mf = DrawMFI ? rsi(upper_s, lower_s) : na
plot(DrawMFI ? mf : na, color=green, linewidth=2)

// Draw BB on indices
bb_s = DrawRSI ? rsi_s : DrawMFI ? mf : na
basis = sma(bb_s, length)
dev = mult * stdev(bb_s, bblength)
upper = basis + dev
lower = basis - dev
plot(basis, color=red)
p1 = plot(upper, color=blue)
p2 = plot(lower, color=blue)
fill(p1,p2, blue)

b_color = (bb_s > upper) ? red : (bb_s < lower) ? lime : na
bgcolor(HighlightBreaches ? b_color : na, transp = 0)

//Signals
up = bb_s < lower and close < open
dn = bb_s > upper and close > open
size = strategy.position_size
lp = size > 0 and close > open
sp = size < 0 and close < open
exit = (up == false and dn == false) and (lp or sp)

//Trading
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1]
if up
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if dn
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
    strategy.close_all()