Bollinger Band Width Scaling Double Moving Average Trends Filter Strategy (Điều này sẽ được tính đến từ ngày 1 tháng 2 đến ngày 31 tháng 3 của năm 2014)

Tác giả:ChaoZhang, Ngày: 2023-10-25 15:00:20
Tags:

img

Chiến lược này tạo ra các tín hiệu giao dịch dựa trên Bollinger Bands và đường trung bình động kép, với việc lọc xu hướng để nhắm mục tiêu tỷ lệ thắng cao và tỷ lệ lợi nhuận-mất tốt.

Chiến lược logic

  1. Sử dụng Bollinger Band trên, giữa và dưới các dải để tạo tín hiệu dài / ngắn.

  2. Sử dụng trung bình động trung hạn 20 giai đoạn và dài hạn 60 giai đoạn để xác định hướng xu hướng. xu hướng tăng khi MA ngắn vượt qua trên MA dài, xu hướng giảm khi vượt qua dưới.

  3. Điều chỉnh động vị trí dừng lỗ dựa trên chiều rộng Bollinger Band. Khi chiều rộng lớn hơn 0,5%, dừng lỗ ở dải thấp hơn. Khi dưới 0,5%, giảm dừng lỗ xuống một nửa phạm vi dải thấp hơn.

  4. Điều kiện nhập cảnh: Bước qua dải dưới dưới như tín hiệu mua trong xu hướng tăng Bước qua dải trên như tín hiệu bán trong xu hướng giảm

  5. Điều kiện thoát: Lợi nhuận khi chạm vào dải trên hoặc MA ngắn trên dài. Lợi nhuận khi chạm vào dải dưới hoặc MA ngắn trên ngắn.

  6. Điều kiện dừng lỗ: dừng khi giá vượt qua phạm vi động dưới dải dưới trên các giao dịch dài.

Ưu điểm

  1. Sử dụng hai MAs để xác định xu hướng giúp lọc tiếng ồn từ các thị trường không có xu hướng hoặc giới hạn phạm vi.

  2. Dải giữa BB cung cấp hỗ trợ / kháng cự, dải trên / dưới phục vụ như mức dừng lỗ năng động để kiểm soát rủi ro.

  3. Điều chỉnh phạm vi dừng lỗ dựa trên chiều rộng BB làm giảm cơ hội bị dừng lại trong khi giữ dừng hợp lý.

  4. Giao dịch theo hướng xu hướng dẫn đến tỷ lệ thắng cao hơn.

Rủi ro

  1. MAs hai lần có thể tạo ra các đột phá sai thường xuyên, bỏ lỡ các điểm chuyển hướng xu hướng.

  2. BBs có thể bị đánh bại trong các thị trường bất ổn, có thể làm giảm tần suất giao dịch.

  3. Dừng lỗ gần mức hỗ trợ / kháng cự dễ bị rút ra. Có thể cho phép phạm vi dừng lỗ rộng hơn.

  4. Không thể tận dụng các khoản rút ngắn hạn một cách hiệu quả.

Cơ hội gia tăng

  1. Tối ưu hóa thời gian MA để tìm ra điều kiện phù hợp nhất với thị trường.

  2. Tối ưu hóa tham số nhân BB để cân bằng dừng lỗ bị tấn công.

  3. Thêm các chỉ số khác để xác nhận nhiều yếu tố để cải thiện chất lượng tín hiệu.

  4. Bao gồm khối lượng / động lực để xác nhận xu hướng, tránh phân kỳ.

  5. Tối ưu hóa quản lý tiền chẳng hạn như dừng lỗ cố định, cố định để kiểm soát rủi ro giao dịch duy nhất.

  6. Quản lý sốc giá ví dụ như khoảng cách lớn qua đêm.

Tóm lại

Đây là một chiến lược tổng thể mạnh mẽ sử dụng hai MAs cho hướng xu hướng và BBs cho hỗ trợ / kháng cự và dừng động. Có những hạn chế như tín hiệu xu hướng sai và dừng quá gần. Có thể tối ưu hóa thêm trên hệ thống MA, chiến lược dừng lỗ, quản lý tiền vv để tăng độ mạnh mẽ trong các điều kiện thị trường khác nhau. Nhìn chung là một chiến lược tuyệt vời cho người mới bắt đầu với tỷ lệ thắng cao, hồ sơ rủi ro-lợi nhuận tốt và logic đơn giản nhưng hiệu quả.


/*backtest
start: 2022-10-18 00:00:00
end: 2023-10-24 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title="yuthavithi BB Scalper 2 strategy", overlay=true)

len = input(20, minval=1, title="Length")
multiplier = input(4, minval=1, title="multiplier")
trendTimeFrame = input(60, minval=1, title="Trend Time Frame")
useTrendFilter = input(true, type=bool, title = "Use Trend Filter")

src = input(close, title="Source")
out = sma(src, len)
//plot(out, title="SMA", color=blue)

stdOut = stdev(close, len)
bbUpper = out + stdOut * multiplier
bbLower = out - stdOut * multiplier
bbUpper2 = out + stdOut * (multiplier / 2)
bbLower2 = out - stdOut * (multiplier / 2)
bbUpperX2 = out + stdOut * multiplier * 2
bbLowerX2 = out - stdOut * multiplier * 2
bbWidth = (bbUpper - bbLower) / out


closeLongTerm = request.security(syminfo.tickerid, tostring(trendTimeFrame), close)
smaLongTerm = request.security(syminfo.tickerid, tostring(trendTimeFrame), sma(close,20))

//plot(smaLongTerm, color=red)

trendUp = useTrendFilter ? (closeLongTerm > smaLongTerm) : true
trendDown = useTrendFilter? (closeLongTerm < smaLongTerm) : true

bearish = ((cross(close,bbUpper2) == 1) or (cross(close,out) == 1)) and (close[1] > close) and trendDown
bullish = ((cross(close,bbLower2) == 1) or (cross(close,out) == 1)) and (close[1] < close) and trendUp


closeBuy = (high[1] > bbUpper[1]) and (close < bbUpper) and (close < open) and trendUp 
closeSell = (((low[1] < bbLower[1]) and (close > bbLower)) or ((low[2] < bbLower[2]) and (close[1] > bbLower[1]))) and (close > open) and trendDown


cutLossBuy = iff(bbWidth > 0.005, (low < bbLower) and (low[1] > bbLower[1]) and trendUp, (low < bbLowerX2) and (low[1] > bbLowerX2[1]) and trendUp)
cutLossSell = iff(bbWidth > 0.005, (high > bbUpper) and (high[1] < bbUpper[1]) and trendDown, (high > bbUpperX2) and (high[1] < bbUpperX2[1]) and trendDown)


if (bullish)
    strategy.entry("Buy", strategy.long, comment="Buy")

if (bearish)
    strategy.entry("Sell", strategy.short, comment="Sell")
    

strategy.close("Buy", closeBuy or cutLossBuy)
   
strategy.close("Sell", closeSell or cutLossSell)


Thêm nữa