Chiến lược đột phá dải Bollinger


Ngày tạo: 2023-09-19 16:06:56 sửa đổi lần cuối: 2023-09-19 16:06:56
sao chép: 2 Số nhấp chuột: 821
1
tập trung vào
1617
Người theo dõi

Tổng quan

Chiến lược này dựa trên các chỉ số Bollinger Bands, làm nhiều khi giá phá vỡ Bollinger Bands xuống đường, khi giá chạm vào Bollinger Bands trên đường. Chiến lược này sử dụng nguyên tắc bao gồm của Bollinger Bands, theo dõi giá phá vỡ bất thường, để đạt được mục đích mua bán thấp.

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

  1. Tính toán đường SMA trung tâm của Binance, lấy trung bình di chuyển đơn giản của giá đóng cửa gần đây.

  2. Điểm chênh lệch chuẩn StdDev, phản ánh phạm vi biến động giá.

  3. Đường SMA trung tâm cộng với độ lệch trên chênh lệch tiêu chuẩn, được Brin đưa lên đường.

  4. Đường SMA trung tâm trừ đi độ lệch dưới tiêu chuẩn, được Brin đưa xuống đường.

  5. Khi giá đóng cửa từ dưới lên phá vỡ đường đi xuống, hãy tham gia thêm.

  6. Khi giá chạm đường ray, coi đó là giá bất thường và rút khỏi vị trí bằng phẳng.

Phân tích lợi thế

Ưu điểm lớn nhất của chiến lược này là sử dụng các đặc tính thống kê của chỉ số Bollinger Bands để theo dõi hiệu quả sự biến động bất thường của thị trường và nắm bắt xu hướng. So với chiến lược trung bình di chuyển thông thường, chiến lược Bollinger Bands có lợi thế hơn:

  1. Brin có thể tự động điều chỉnh các biến động của thị trường.

  2. Bước đột phá là tín hiệu vào cửa đáng tin cậy hơn.

  3. Trở lại trục trung tâm là một tín hiệu dừng hợp lý.

  4. Các tham số được tối ưu hóa rộng rãi, có thể được điều chỉnh cho các thị trường khác nhau.

  5. Có thể bắt được xu hướng đường dài và trung bình, cũng có thể sử dụng đường ngắn.

Phân tích rủi ro

Những rủi ro tiềm ẩn của chiến lược này bao gồm:

  1. Blinklink không có hiệu quả trong thị trường ngang, nên nên tránh nhầm lẫn.

  2. Một tín hiệu đột phá có thể là một sự đột phá giả, nên cần thận trọng.

  3. Vị trí dừng quá lý tưởng, có thể được tối ưu hóa cho thực tế.

  4. Thiết lập tham số không đúng có thể dẫn đến giao dịch quá thường xuyên hoặc thận trọng.

  5. Chu kỳ phản hồi phải đủ dài để tránh cong phù hợp.

Các biện pháp xử lý rủi ro:

  1. Hình ảnh của các tín hiệu lọc kết hợp với chỉ số khối lượng giao dịch.

  2. Tối ưu hóa các tham số, kiểm tra hiệu quả dữ liệu của các thị trường khác nhau.

  3. Thêm thiết bị di động dừng, quay vị trí dừng.

  4. Đánh giá tín hiệu quay lưng, tránh theo đuổi cao và hạ.

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

Chiến lược này có thể được tối ưu hóa bằng cách:

  1. Thử các tham số Brin với kích thước khác nhau để tìm kiếm sự kết hợp tốt nhất.

  2. Tăng đường trung bình, MACD và các chỉ số lọc tín hiệu đột phá.

  3. Ứng dụng thuật toán học máy để tối ưu hóa tham số dải Brin.

  4. Đánh giá điểm mạnh và điểm yếu của nó và điều chỉnh vị trí của nó.

  5. Phản hồi dữ liệu chu kỳ dài hơn, kiểm tra tính ổn định của chiến lược.

  6. Thêm các biện pháp ngăn chặn để kiểm soát rủi ro.

Tóm tắt

Chiến lược Brin là một chiến lược theo dõi xu hướng đáng tin cậy. Nó có thể nắm bắt hiệu quả sự biến động bất thường của giá. Nhưng chúng ta cũng phải chú ý đến sự lệch lạc của nó với thực tế và liên tục tối ưu hóa các tham số.

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

//@version=4

strategy(title="BB training No Repainting (OTS Mode)", overlay=true)


// Strategy Rules:
// 1. Enter trade when price crosses above the lower band
// 2. Exit trade when price touches the upper band
// 

// Chart Properties
testStartYear = input(2010, "Backtest Start Year")
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0)

testStopYear = input(2030, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=input.bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and time >= testPeriodStart and time <= testPeriodStop ? #6c6f6c : na
bgcolor(testPeriodBackgroundColor, transp=97)

// User provided values
smaLength = input(title="SMA Length", type=input.integer, defval=20) // Middle band period length (moving average)
stdLength = input(title="StdDev Length", type=input.integer, defval=20) // Range to apply bands to
ubOffset = input(title="Upper Band Offset", type=input.float, defval=2.0, step=0.5) // Number of standard deviations above MA
lbOffset = input(title="Lower Band Offset", type=input.float, defval=2.0, step=0.5) // Number of standard deviation below MA

testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false

smaValue = sma(close, smaLength) // Middle band
stdDev = stdev(close, stdLength)
upperBand = smaValue + stdDev * ubOffset // Top band
lowerBand = smaValue - stdDev * lbOffset // Bottom band

// Plot bands to chart
plot(series=smaValue, title="SMA", color=color.green)
plot(series=upperBand, title="UB", color=color.blue, linewidth=2)
plot(series=lowerBand, title="LB", color=color.blue, linewidth=2)

longCondition = (crossover(close, lowerBand))
closeLongCondition = (close >= upperBand)

if (longCondition and testPeriod())
    strategy.entry(id="CALL", long=true)

strategy.close(id="CALL", when=closeLongCondition)