Chiến lược điều chỉnh băng Bollinger

Tác giả:ChaoZhang, Ngày: 2023-10-24 16:52:52
Tags:

img

Tổng quan

Chiến lược này sử dụng chỉ số Bollinger Bands để đánh giá xu hướng, kết hợp với chỉ số RSI để tránh mua quá mức, cũng như các bộ lọc thân nến và bộ lọc màu để xác nhận thêm các tín hiệu giao dịch.

Nguyên tắc

Chiến lược này đầu tiên sử dụng dải dưới của chỉ số Bollinger Bands. Khi giá dưới dải dưới, nó được coi là một cơ hội để mở một vị trí. Để tránh mua quá mức, chiến lược cũng giới thiệu chỉ số RSI, yêu cầu RSI dưới 30 để tạo ra tín hiệu mua. Ngoài ra, chiến lược đặt bộ lọc thân nến yêu cầu thân của nến hiện tại lớn hơn một nửa thân trung bình của nến trong 10 giai đoạn qua để kích hoạt mua. Cuối cùng, bộ lọc màu yêu cầu nến phải màu xanh lá cây (khép cao hơn) để xác nhận thêm thời gian mua.

Khi giá vượt qua dải dưới của Bollinger Bands, chỉ số RSI dưới 30, cơ thể đủ lớn và nến màu xanh lá cây, một tín hiệu mua được tạo ra. Khi giá đóng cao hơn giá mở và cơ thể lớn hơn một nửa cơ thể trung bình, đó là tín hiệu đảo ngược xu hướng chỉ ra việc đóng vị trí.

Phân tích lợi thế

Ưu điểm lớn nhất của chiến lược này là nó có thể xác định thành công sự khởi đầu của một xu hướng và bước vào thị trường, và thoát ra trước khi xu hướng đảo ngược, do đó tiềm năng lợi nhuận là lớn.

  1. Chỉ số Bollinger Bands đánh giá chính xác hướng xu hướng. Nó sử dụng phạm vi biến động giá để xác định biến động giá, vì vậy sử dụng chỉ số này có thể xác định hiệu quả sự khởi đầu và kết thúc của xu hướng.

  2. Chỉ số RSI tránh mua quá mức. RSI có thể đo lường các điều kiện mua quá mức và bán quá mức. Sử dụng nó tránh mua sai trong các điều chỉnh giá tạm thời.

  3. Bộ lọc thực thể làm tăng độ tin cậy tín hiệu. Một thân nến lớn hơn đại diện cho một bước đột phá mạnh mẽ hơn. Bộ lọc thực thể đảm bảo mua bước đột phá mạnh mẽ.

  4. Việc lọc màu sắc xác nhận thời gian. Chỉ mua nến xanh mới xác nhận thêm thời gian thích hợp.

  5. Nến chuyển sang màu xanh lá cây cho thấy xu hướng đảo ngược sau khi mua. Các nhà giao dịch nói rằng xu hướng thay thế, và nến chuyển sang màu xanh lá cây có thể đánh giá thời gian đảo ngược.

Phân tích rủi ro

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

  1. Khả năng tín hiệu sai từ Bollinger Bands. Nó cũng có thể tạo ra tín hiệu đột phá sai khi thị trường dao động.

  2. Loss tăng lên nếu không có stop loss.

  3. Điều kiện lọc quá nghiêm ngặt sẽ bỏ lỡ cơ hội mua hàng.

  4. Tùy thuộc vào các kết quả backtesting tối ưu. Các thiết lập tham số và bộ lọc cần tối ưu hóa và xác minh, kết quả giao dịch thực tế cũng cần xác minh.

  5. Nến chuyển sang màu xanh lá cây không đáng tin cậy để xác định sự đảo ngược. Nó không xác nhận hoàn toàn sự đảo ngược xu hướng.

Đối với các rủi ro, dừng lỗ có thể kiểm soát lỗ, tối ưu hóa bộ lọc làm giảm việc mua bỏ lỡ, sử dụng nhiều chỉ số xác minh tín hiệu và xác minh kết quả trong giao dịch trực tiếp.

Hướng dẫn cải thiện

Chiến lược có thể được tối ưu hóa trong một số khía cạnh:

  1. Tối ưu hóa các thông số Bollinger Band để cài đặt tốt nhất. Kiểm tra các khoảng thời gian khác nhau, số lần lệch chuẩn, vv

  2. Kiểm tra các dao động khác thay vì RSI. ví dụ: KDJ, Williams % R, v.v.

  3. Thêm trailing stop loss để kiểm soát rủi ro. Đặt dừng hợp lý dựa trên dữ liệu backtest.

  4. Tối ưu hóa các thông số điều kiện bộ lọc. Kiểm tra kích thước và thời gian bộ lọc cơ thể khác nhau.

  5. Bao gồm các chỉ số khác để xác nhận tín hiệu. ví dụ: chỉ số xác nhận khối lượng-giá.

  6. Kiểm tra các tín hiệu đảo ngược khác nhau. ví dụ như đường chéo trung bình động để xác định sự đảo ngược xu hướng.

  7. Kiểm tra trên các sản phẩm và khung thời gian khác nhau. Đánh giá chiến lược trên các thị trường khác nhau.

Kết luận

Nhìn chung, chiến lược có xu hướng tương đối mạnh theo khả năng và khả năng thích nghi. Các điểm mạnh cốt lõi là sử dụng Bollinger Bands để xác định hướng xu hướng và sử dụng RSI và bộ lọc để đảm bảo thời gian. Nhưng cũng có một số rủi ro cần tối ưu hóa và thử nghiệm có mục tiêu. Nếu các thông số và quy tắc có thể được xác minh, nó có thể đạt được kết quả tốt trong giao dịch trực tiếp.


/*backtest
start: 2023-09-23 00:00:00
end: 2023-10-23 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//Donate: 3BMEXvKkuJLobJrcpMm12bKTZoCnojZTjh

//@version=2
strategy(title = "Noro's Wizard Strategy v1.1", shorttitle = "Wizard str 1.1", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 10)

//Settings
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
length = input(40, defval = 40, minval = 1, maxval = 200, title = "BB Period")
usebod = input(false, defval = false, title = "Use Body-Filter")
usecol = input(false, defval = false, title = "Use Color-Filter")
usersi = input(true, defval = true, title = "Use RSI-Filter")
showar = input(false, defval = false, title = "Show Arrows")
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")

//Bollinger
src = low
mult = 2
basis = sma(src, length)
dev = mult * stdev(src, length)
lower = basis - dev
plot(lower, color = lime, linewidth = 3, title="Bottom Line")

//Fast RSI Filter
fastup = rma(max(change(close), 0), 7)
fastdown = rma(-min(change(close), 0), 7)
rsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))
rsif = rsi < 30 or usersi == false

//Body Filter
nbody = abs(close - open)
abody = sma(nbody, 10)
body = nbody > abody / 2 or usebod == false

//Signals
up1 = low < lower and (close < open or usecol == false) and body and rsif
exit = close > open and nbody > abody / 2

//Arrows
needar = up1 and showar
plotarrow(needar ? 1 : na)

//Trading
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1]

if up1
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Long", strategy.long, 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()

Thêm nữa