Chiến lược giao dịch khối lượng dải Bollinger kép


Ngày tạo: 2023-11-16 17:36:00 sửa đổi lần cuối: 2023-11-16 17:36:00
sao chép: 0 Số nhấp chuột: 722
1
tập trung vào
1617
Người theo dõi

Chiến lược giao dịch khối lượng dải Bollinger kép

Tổng quan

Chiến lược này dựa trên khái niệm của Brin Belt, thiết lập đường dẫn giá lên và xuống, và sử dụng nó để đánh giá xu hướng và tạo tín hiệu giao dịch. Cụ thể hơn, tính toán độ lệch tuyệt đối trung bình của giá là băng thông đường dẫn, đường dẫn là giá trung bình di chuyển đơn giản, đường dẫn trên và đường dẫn dưới tăng và giảm 1 hoặc 2 lần băng thông đường dẫn cho đường dẫn giữa.

Nguyên tắc

Chiến lược này bao gồm:

  1. Đường trung đạo của giá, tức là đường trung bình di chuyển đơn giản của giá.

  2. Tính trung bình di chuyển đơn giản của độ lệch tuyệt đối của giá được tính như băng thông kênh.

  3. Xác định đường ray trên và dưới dựa trên đường ray trung tâm và băng thông. Đường ray trên là đường ray trung tâm cộng 1 hoặc 2 lần băng thông, đường ray dưới là đường ray trung tâm trừ 1 hoặc 2 lần băng thông.

  4. Tính toán các chỉ số phán đoán xu hướng đa chiều. Khi giá cao hơn đường ray 2 thì đa chiều, khi giá thấp hơn đường ray 2 thì trống.

  5. Tạo tín hiệu giao dịch. Giá tăng lên khi đi lên đường ray 2, giá giảm khi đi xuống đường ray 2.

  6. Thiết lập đường dừng lỗ: nhiều đường dừng đơn là đường ray dưới 1, đường dừng đơn trống là đường ray trên 1.

  7. Xây dựng vị trí theo yêu cầu quản lý tài chính

Chiến lược này kết hợp các suy nghĩ về xu hướng phán đoán trung bình di chuyển, Bollinger Bands phán đoán quá mua quá bán, phá vỡ và đảo ngược. Bằng cách phân biệt hai đường dẫn, phán đoán xu hướng mạnh yếu, đồng thời sử dụng chức năng của Bollinger Bands quay trở lại trục trung tâm, tạo thành một hệ thống giao dịch ổn định hơn.

Phân tích lợi thế

Chiến lược này có những lợi thế chính như sau:

  1. Sử dụng hệ thống hai đường ray, bạn có thể đánh giá tốt hơn về sức mạnh của xu hướng.

  2. Brin có chức năng quay trở mạnh mẽ, có thể ngăn chặn đột phá giả hiệu quả.

  3. Sự khác biệt giữa hai đường ray hợp tác với trục trung tâm quay trở lại của Brin, tạo ra tín hiệu giao dịch ổn định hơn.

  4. Có logic Exit Stop Loss rõ ràng để kiểm soát rủi ro.

  5. Cài đặt vị trí phù hợp với yêu cầu quản lý tài chính, tránh siêu đòn bẩy.

  6. Các chiến lược được xây dựng rõ ràng, dễ hiểu và tối ưu hóa.

  7. Các tham số có thể được thiết lập linh hoạt để tối ưu hóa cho các thị trường khác nhau.

Phân tích rủi ro

Chiến lược này cũng có một số rủi ro:

  1. Thiết lập không đúng các tham số của vùng Brin có thể gây ra hiệu ứng sông ngập và không theo dõi giá một cách hiệu quả.

  2. Sự khác biệt giữa hai đường ray không hoàn toàn tránh được sự hiểu lầm về xu hướng.

  3. Trong một thị trường bất ổn, có thể có nhiều tín hiệu không hiệu quả hơn.

  4. Những người tham gia có thể bị thiệt hại nếu phá vỡ giả.

  5. Có một khoảng thời gian chậm trễ, có thể bỏ lỡ điểm chuyển đổi chu kỳ.

  6. Lợi nhuận và lỗ hổng bị giới hạn bởi điểm dừng lỗ, không thể theo dõi xu hướng vô hạn.

Các biện pháp quản lý rủi ro:

  1. Các tham số được tối ưu hóa để cho phép Burin có thể thích ứng với các chu kỳ khác nhau.

  2. Các chỉ số khác cũng cần được kiểm tra để tránh sai lầm.

  3. Giảm vị thế, kiểm soát tổn thất đơn.

  4. Tối ưu hóa điểm dừng lỗ, đảm bảo tỷ lệ lợi nhuận.

  5. Giảm thời gian, giảm sự chậm trễ.

  6. Không có gì có thể ngăn cản được việc kiểm soát gió.

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

Chiến lược này có thể được tối ưu hóa theo các hướng sau:

  1. Tối ưu hóa tham số Brin để có thể theo dõi giá tốt hơn. Các tham số thích ứng có thể được giới thiệu.

  2. Thử các đường trung bình di chuyển khác nhau, như EMA, DWMA, v.v.

  3. Thêm bộ lọc xu hướng, tránh giao dịch sai lầm trong thị trường chấn động.

  4. Thêm Exit để có thêm lợi nhuận theo xu hướng. Bạn có thể xem xét dừng nhỏ, dừng di chuyển, chỉ số xuất cảnh, v.v.

  5. Giới thiệu nhiều chu kỳ thời gian để kết hợp, các chu kỳ khác nhau phù hợp với các tình huống thị trường khác nhau.

  6. Thêm logic điều kiện bổ sung, chẳng hạn như đột phá khối lượng giao dịch, để tránh đột phá giả.

  7. Bạn có thể xem xét việc chuyển đổi vòng đai, bán lên đường ray, mua xuống đường ray.

  8. Thực hiện thử nghiệm tối ưu hóa tham số để tìm kiếm sự kết hợp tham số tối ưu nhất.

Tóm tắt

Chiến lược này có ý tưởng tổng thể rõ ràng, có tính ổn định mạnh mẽ. Đồng thời, có một số không gian cải tiến, có thể được hoàn thiện hơn nữa thông qua các khía cạnh tối ưu hóa tham số, tối ưu hóa logic, quản lý rủi ro, và có thể trở thành một chiến lược giao dịch định lượng rất thực tế. Chiến lược này cung cấp một tài liệu tham khảo ý tưởng tốt cho chiến lược nhập cảnh của giao dịch định lượng.

Mã nguồn chiến lược
/*backtest
start: 2022-11-09 00:00:00
end: 2023-11-15 00:00:00
period: 1d
basePeriod: 1h
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/
// © noro

//@version=4
strategy(title = "Noro's Bands Strategy", shorttitle = "Bands", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0, commission_value = 0.1)

//Sattings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
lotsize = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
len = input(20, defval = 20, minval = 1, maxval = 1000, title = "Length")
src = input(ohlc4, title = "Source")
showbb = input(true, title = "Show Bands")
showof = input(true, title = "Show Offset")
showbg = input(false, title = "Show Background")
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")

//PriceChannel
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2

//Distance
dist = abs(src - center)
distsma = sma(dist, len)
hd = center + distsma
ld = center - distsma
hd2 = center + distsma * 2
ld2 = center - distsma * 2

//Trend
trend = 0
trend := high > hd2 ? 1 : low < ld2 ? -1 : trend[1]
bgcol = showbg == false ? na : trend == 1 ? color.lime : color.red
bgcolor(bgcol, transp = 70)

//Lines
colo = showbb == false ? na : color.black
offset = showof ? 1 : 0
plot(hd2, color = colo, linewidth = 1, transp = 0, offset = offset, title = "High band 2")
plot(hd, color = colo, linewidth = 1, transp = 0, offset = offset, title = "High band 1")
plot(center, color = colo, linewidth = 1, transp = 0, offset = offset, title = "center")
plot(ld, color = colo, linewidth = 1, transp = 0, offset = offset, title = "Low band 1")
plot(ld2, color = colo, linewidth = 1, transp = 0, offset = offset, title = "Low band 2")

//Trading
size = strategy.position_size
needstop = needlong == false or needshort == false
truetime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)
lot = 0.0
lot := size != size[1] ? strategy.equity / close * lotsize / 100 : lot[1]
if distsma > 0
    strategy.entry("Long", strategy.long, lot, stop = hd2, when = truetime and needlong)
    strategy.entry("Short", strategy.short, lot, stop = ld2, when = truetime and needshort)
sl = size > 0 ? ld2 : size < 0 ? hd2 : na
if size > 0 and needstop
    strategy.exit("Stop Long", "Long", stop = sl)
if size < 0 and needstop
    strategy.exit("Stop Short", "Short", stop = sl)
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    strategy.cancel("Long")
    strategy.cancel("Short")