Chiến lược theo dõi thông minh kép-B

Tác giả:ChaoZhang, Ngày: 2024-01-18 15:41:20
Tags:

img

Đây là một chiến lược giao dịch sử dụng Bollinger Bands. Chiến lược nhằm mục đích xác định các cơ hội khi giá dao động mạnh mẽ bằng cách sử dụng Bollinger Bands và đưa ra quyết định mua hoặc bán tương ứng.

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

Chiến lược tính toán dải trên, dải giữa và dải dưới của Bollinger Bands để xác định xem giá hiện tại có nằm trong phạm vi biến động và do đó đưa ra quyết định về việc mở hoặc đóng các vị trí. Khi giá tiếp cận dải trên, nó được coi là điểm cực cho các vị trí dài và chiến lược chọn đóng các vị trí dài. Khi giá rơi gần dải dưới, nó được coi là điểm cực cho các vị trí ngắn và chiến lược chọn mở các vị trí dài.

Ngoài ra, chiến lược cũng giới thiệu các yếu tố đảo ngược xu hướng. Nếu có tín hiệu đảo ngược, nó cũng sẽ kích hoạt các quyết định mua hoặc bán tương ứng. Cụ thể, logic của chiến lược là như sau:

  1. Tính toán Bollinger Bands trên, giữa và dưới
  2. Phán quyết nếu giá phá vỡ các dải và tín hiệu đảo ngược
    1. Bước qua dải giữa như tín hiệu xu hướng
    2. Gần dải trên hoặc dưới như tín hiệu đảo ngược
  3. Gửi lệnh mua, bán hoặc đóng

Điều trên là logic giao dịch cơ bản của chiến lược này. Bằng cách sử dụng các đặc điểm của Bollinger Bands và kết hợp các yếu tố xu hướng và đảo ngược, chiến lược cố gắng nắm bắt các điểm đảo ngược khi biến động tăng lên.

Ưu điểm của Chiến lược

So với các chiến lược trung bình động thông thường, chiến lược này có những lợi thế sau:

  1. Nhận thức hơn, có khả năng nắm bắt các cơ hội khi giá biến động mạnh mẽ
  2. Kết hợp cả các yếu tố xu hướng và đảo ngược để tránh tổn thất do đảo ngược sớm
  3. Có một hiệu ứng FILTER nhất định để tránh mua/bán không cần thiết trong các khu vực không biến động
  4. Đánh giá hướng xu hướng chính thông qua dải giữa để giảm tần suất giao dịch
  5. Tăng điều kiện lọc đảo ngược để giảm các đánh giá sai

Nói chung, chiến lược này kết hợp các dải Bollinger và thanh giá tương đối tốt. Nó giao dịch ở các điểm đảo ngược hợp lý để đảm bảo mức lợi nhuận nhất định trong khi kiểm soát rủi ro.

Rủi ro và tối ưu hóa

Tuy nhiên, vẫn có một số rủi ro với chiến lược này:

  1. Các thông số BB không chính xác không thể nắm bắt đầy đủ biến động giá
  2. Đánh giá tín hiệu đảo ngược không chính xác, đảo ngược bị thiếu hoặc đánh giá sai
  3. Hiệu quả kém của các tín hiệu băng tần giữa khi xu hướng không rõ ràng

Theo đó, tối ưu hóa trong tương lai có thể tập trung vào:

  1. Tối ưu hóa thích nghi các thông số BB dựa trên các sản phẩm khác nhau
  2. Tăng các mô hình học máy để đánh giá xác suất đảo ngược
  3. Chuyển sang các chỉ số khác khi xu hướng không rõ ràng
  4. Kết hợp nhiều mô hình giá hơn để lọc tín hiệu giao dịch

Kết luận

Kết luận, đây là một mẫu chiến lược giao dịch Bollinger Bands điển hình. Nó tránh các giao dịch không hiệu quả quá mức phổ biến cho việc sử dụng Bollinger Bands một mình bằng cách giới thiệu phán đoán đảo ngược xu hướng để lọc tín hiệu, về mặt lý thuyết có thể dẫn đến hiệu suất chiến lược tốt. Nhưng các thông số và lọc tín hiệu vẫn cần tối ưu hóa và cải thiện hơn nữa để vững chắc và giảm các phán đoán sai.


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

//Noro
//2018

//@version=3
strategy("Noro's Bollinger Strategy v1.2", shorttitle = "Bollinger str 1.2", overlay = true )

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")

length = input(20, defval = 20, minval = 1, maxval = 1000, title = "Bollinger Length")
mult = input(2.0, defval = 2.0, minval = 0.001, maxval = 50, title = "Bollinger Mult")
source = input(ohlc4, defval = ohlc4, title = "Bollinger Source")

uset = input(true, defval = true, title = "Use trend entry")
usect = input(true, defval = true, title = "Use counter-trend entry")

fromyear = input(2018, defval = 2018, 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")
showbands = input(true, defval = true, title = "Show Bollinger Bands")

//Bollinger Bands
basis = sma(source, length)
dev = mult * stdev(source, length)
upper = basis + dev
lower = basis - dev

//Lines
col = showbands ? black : na 
plot(upper, linewidth = 1, color = col)
plot(basis, linewidth = 1, color = col)
plot(lower, linewidth = 1, color = col)

//Body
body = abs(close - open)
abody = ema(body, 30)

//Signals
bar = close > open ? 1 : close < open ? -1 : 0 
up1 = bar == -1 and close >= basis and close < upper and (close < strategy.position_avg_price or strategy.position_size == 0) and uset
dn1 = bar == 1 and close <= basis and close > lower and (close > strategy.position_avg_price or strategy.position_size == 0) and uset
up2 = close <= lower and usect
dn2 = close >= upper and usect
exit = (strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open) and body > abody / 2

//Trading
if up1 or up2
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

if dn1 or dn2
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)
    
if exit
    strategy.close_all()

Thêm nữa