Chiến lược theo dõi xu hướng ATR của Bollinger Bands

BB SMA ATR
Ngày tạo: 2024-05-15 10:50:14 sửa đổi lần cuối: 2024-05-15 10:50:14
sao chép: 3 Số nhấp chuột: 721
1
tập trung vào
1617
Người theo dõi

Chiến lược theo dõi xu hướng ATR của Bollinger Bands

Tổng quan

Chiến lược này dựa trên các chỉ số Brin và ATR, lấy phạm vi biến động của giá thông qua Brin, sử dụng giá phá vỡ Brin và xuống đường như một tín hiệu đặt hàng, đồng thời sử dụng ATR như một dừng di chuyển, và cuối cùng với giá phá vỡ đường trung bình di chuyển đơn giản như một tín hiệu đặt hàng. Chiến lược này cố gắng nắm bắt tình trạng xu hướng, đặt hàng theo hướng xu hướng và đồng thời giữ vị trí yên khi xu hướng đảo ngược.

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

  1. Tính toán Burin Band: Sử dụng giá đóng cửa để tính toán đường trung bình di chuyển đơn giản ((SMA) làm đường trung tâm của Burin Band và tính toán đường trên và đường dưới dựa trên tỷ lệ dao động ((SDR)).
  2. Tính ATR: Sử dụng trung bình di chuyển của tần số sóng thực ((TR) để tính ATR, làm cơ sở cho việc dừng di chuyển.
  3. Tạo tín hiệu giao dịch: Tạo tín hiệu nhiều khi giá phá vỡ đường dây Brin xuống, tạo tín hiệu bỏ phiếu khi giá phá vỡ đường dây Brin lên; Tạo tín hiệu nhiều khi giá phá vỡ ATR dừng chân di chuyển, tạo tín hiệu bỏ phiếu khi giá phá vỡ ATR dừng chân di chuyển.
  4. Vị thế ngang: Khi thực hiện nhiều vị thế, nếu giá phá vỡ đường trung bình di chuyển đơn giản lên thì sẽ ngang; Khi thực hiện vị thế ngang, nếu giá phá vỡ đường trung bình di chuyển đơn giản xuống thì sẽ ngang.

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

  1. Theo dõi xu hướng: Ghi nhận xu hướng thông qua Brin và ATR để thích ứng với các môi trường thị trường khác nhau.
  2. Hạn chế kịp thời: Sử dụng ATR như là dừng di chuyển, bạn có thể điều chỉnh vị trí dừng động theo biến động của thị trường, kiểm soát rủi ro.
  3. Dễ sử dụng và đơn giản: logic chiến lược rõ ràng, ít tham số, dễ hiểu và áp dụng.

Rủi ro chiến lược

  1. Thuyết điểm nhạy cảm: Lựa chọn các tham số của Blink và ATR có thể ảnh hưởng đến hiệu suất chiến lược và cần được tối ưu hóa cho các thị trường và giống khác nhau.
  2. Thị trường biến động: Trong môi trường thị trường biến động, các tín hiệu giao dịch thường xuyên có thể dẫn đến quá nhiều giao dịch và chi phí.
  3. Trở lại xu hướng: Chiến lược có thể tạo ra sự rút lui lớn hơn khi xu hướng bị đảo ngược.

Hướng tối ưu hóa chiến lược

  1. Tối ưu hóa tham số: Tối ưu hóa các tham số của Brin và ATR để tìm ra sự kết hợp tham số tốt nhất cho các thị trường và giống khác nhau.
  2. Bộ lọc: Thêm các chỉ số kỹ thuật khác hoặc mô hình hành vi giá làm bộ lọc, giảm sai lầm và cải thiện chất lượng tín hiệu.
  3. Quản lý vị trí: Điều chỉnh vị trí theo biến động của thị trường hoặc rủi ro tài khoản để cải thiện hiệu quả sử dụng vốn và tỷ lệ rủi ro lợi nhuận.

Tóm tắt

Chiến lược theo dõi xu hướng ATR của Brin có lợi thế theo dõi xu hướng, dừng lỗ kịp thời và dễ sử dụng. Tuy nhiên, cũng có rủi ro như nhạy cảm với tham số, thị trường rung động và đảo ngược xu hướng. Hiệu suất của chiến lược có thể được tối ưu hóa hơn nữa bằng cách tối ưu hóa tham số, thêm bộ lọc và quản lý vị trí.

Mã nguồn chiến lược
/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Bollinger Bands and ATR Strategy", overlay=true)

// Veri Çekme
symbol = "AAPL"
timeframe = "D"
src = close

// Bollinger Bantları Hesaplama
len = 20
mult = 2
sum1 = 0.0, sum2 = 0.0
for i = 0 to len - 1
    sum1 += src[i]
basis = sum1 / len
for i = 0 to len - 1
    diff = src[i] - basis
    sum2 += diff * diff
dev = math.sqrt(sum2 / len)
upper_band = basis + dev * mult
lower_band = basis - dev * mult

// ATR Hesaplama
atr_period = input(10, title="ATR Period")
atr_value = 0.0
for i = 0 to atr_period - 1
    atr_value += math.abs(src[i] - src[i + 1])
atr_value /= atr_period
loss = input(1, title="Key Value (Sensitivity)")
atr_trailing_stop = src[1]
if src > atr_trailing_stop[1]
    atr_trailing_stop := math.max(atr_trailing_stop[1], src - loss * atr_value)
else if src < atr_trailing_stop[1]
    atr_trailing_stop := math.min(atr_trailing_stop[1], src + loss * atr_value)
else
    atr_trailing_stop := src - loss * atr_value

// Sinyal Üretme
long_condition  = src < lower_band and src[1] >= lower_band[1]
short_condition = src > upper_band and src[1] <= upper_band[1]
close_long  = src > basis
close_short = src < basis
buy_signal = src > atr_trailing_stop[1] and src[1] <= atr_trailing_stop[1]
sell_signal = src < atr_trailing_stop[1] and src[1] >= atr_trailing_stop[1]

if (long_condition)
    strategy.entry("Long", strategy.long, comment="Long Signal")
if (short_condition)
    strategy.entry("Short", strategy.short, comment="Short Signal")
if (close_long)
    strategy.close("Long", comment="Close Long")
if (close_short)
    strategy.close("Short", comment="Close Short")
if (buy_signal)
    strategy.entry("Long", strategy.long, comment="Buy Signal")
if (sell_signal)
    strategy.entry("Short", strategy.short, comment="Sell Signal")

// Çizim
plot(upper_band, color=#0000FF, linewidth=2, title="Upper Band")
plot(lower_band, color=#0000FF, linewidth=2, title="Lower Band")
plot(basis, color=#808080, linewidth=2, title="SMA")
plot(atr_trailing_stop, color=#FFA500, linewidth=2, title="ATR Trailing Stop")
plot(src, color=#FFA500, linewidth=2, title="Price")

// Sinyal İşaretleri
plotshape(long_condition, style=shape.arrowup, color=#00FF00, location=location.belowbar, size=size.small, title="Long Signal")
plotshape(short_condition, style=shape.arrowdown, color=#FF0000, location=location.abovebar, size=size.small, title="Short Signal")
plotshape(buy_signal, style=shape.diamond, color=#00FF00, location=location.belowbar, size=size.small, title="Buy Signal")
plotshape(sell_signal, style=shape.diamond, color=#FF0000, location=location.abovebar, size=size.small, title="Sell Signal")