Chiến lược Bollinger Bands Crossover trung bình động duy nhất

Tác giả:ChaoZhang, Ngày: 2023-12-22 14:10:14
Tags:

img

Tổng quan

Chiến lược này dựa trên chỉ số Bollinger Bands. Nó tạo ra tín hiệu mua và bán khi giá vượt qua dải trên hoặc dưới của Bollinger Bands. Nó cũng kết hợp hướng của đường trung bình để xác định xu hướng, chỉ mất thời gian dài khi MA tăng và ngắn khi MA giảm.

Chiến lược logic

Chiến lược chủ yếu sử dụng các chỉ số sau đây để đánh giá:

  1. Trung bình động (SMA): Trung bình động đơn giản của giá CLOSE, đại diện cho xu hướng giá.
  2. Dải Bollinger phía trên: đại diện cho mức kháng cự, đột phá cho thấy một động lực mạnh.
  3. Dải Bollinger thấp hơn: đại diện cho mức hỗ trợ, sự phân chia cho thấy một sự đảo ngược xu hướng có thể xảy ra.

Các tín hiệu giao dịch cụ thể là:

  1. Buy Signal: Khi giá đóng phá vỡ dải trên và MA đang tăng.
  2. Tín hiệu bán: Khi giá đóng phá vỡ dải dưới và MA đang giảm.

Bằng cách kết hợp xu hướng và đột phá, tín hiệu giao dịch trở nên đáng tin cậy hơn và tránh đột phá sai.

Ưu điểm

  1. Quy tắc đơn giản và rõ ràng, dễ hiểu và thực hiện.
  2. MA đánh giá xu hướng chung để tránh thị trường bò ngắn và thị trường gấu dài.
  3. Bollinger Bands dải trên và dưới xác định chính xác các điểm đột phá địa phương.
  4. Tỷ lệ rút tương đối nhỏ, phù hợp với sở thích rủi ro của hầu hết mọi người.

Rủi ro

  1. Chỉ số đơn có xu hướng tạo ra tín hiệu sai, có thể được cải thiện bằng cách điều chỉnh tham số.
  2. Không thể đối phó với biến động thị trường lớn, có thể điều chỉnh dừng lỗ phù hợp.
  3. Không thể kiếm được nhiều lợi nhuận từ các xu hướng lớn, có thể xem xét kích thước vị trí lớn hơn.

Cải tiến

  1. Tối ưu hóa thời gian MA để phù hợp với nhiều sản phẩm hơn.
  2. Thêm các bộ lọc khác như MACD để giảm tín hiệu sai.
  3. Điều chỉnh động stop loss để giới hạn mức rút tối đa.
  4. Đưa ra quản lý tiền để ổn định hiệu suất PnL.

Kết luận

Nói chung, đây là một chiến lược đơn giản nhưng thực tế phù hợp với hầu hết mọi người. Với một số điều chỉnh và tối ưu hóa, nó có thể mạnh mẽ hơn và thích nghi với nhiều tình huống thị trường hơn.


/*backtest
start: 2023-12-14 00:00:00
end: 2023-12-18 19:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title="single sma cross", shorttitle="single sma cross",default_qty_type = strategy.percent_of_equity, default_qty_value = 100,overlay=true,currency="USD")
s=input(title="s",defval=90)
p=input(title="p",type=float,defval=.9,step=.1)

sa=sma(close,s)
plot(sa,color=red,linewidth=3)
band=stdev(close,s)*p
plot(band+sa,color=lime,title="")
plot(-band+sa,color=lime,title="")

// ===Strategy Orders============================================= ========
inpTakeProfit = input(defval = 0, title = "Take Profit", minval = 0)
inpStopLoss = input(defval = 0, title = "Stop Loss", minval = 0)
inpTrailStop = input(defval = 0, title = "Trailing Stop Loss", minval = 0)
inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0)
useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na
useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na
useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na
useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na

longCondition = crossover(close,sa+band) and rising(sa,5)
shortCondition = crossunder(close,sa-band) and falling(sa,5)
crossmid = cross(close,sa)


strategy.entry(id = "Long", long=true, when = longCondition)
strategy.close(id = "Long", when = shortCondition)
strategy.entry(id = "Short", long=false, when = shortCondition)
strategy.close(id = "Short", when = longCondition)
strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=crossmid)
strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=crossmid)

Thêm nữa