Chiến lược lưới theo dõi đường trung bình động kép của Bollinger Bands


Ngày tạo: 2023-12-13 17:12:38 sửa đổi lần cuối: 2023-12-13 17:12:38
sao chép: 0 Số nhấp chuột: 733
1
tập trung vào
1621
Người theo dõi

Chiến lược lưới theo dõi đường trung bình động kép của Bollinger Bands

Tổng quan

Chiến lược này sử dụng chỉ số Brinh Channel để vẽ ra một dải sóng dựa trên ATR và Fibonacci Regression như một dải giá của lưới. Kết hợp với đường trung bình EMA kép để xác định hướng xu hướng tổng thể, thiết lập lưới theo dõi dừng lỗ trên giá dải sóng Brinh theo hướng xu hướng một cách chọn lọc, để thực hiện trọng tài theo dõi xu hướng.

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

  1. Sử dụng trục trong đường Boolean và dựa trên ATR và 4 đường Fibonacci để vẽ các dải sóng giá trên và dưới đường.

  2. Đường EMA nhanh và đường SMA chậm tạo thành hai đường trung bình để xác định hướng xu hướng tổng thể. Đường nhanh phá vỡ đường chậm là thị trường nhiều đầu, ngược lại là thị trường trống.

  3. Trong thị trường đa đầu chỉ làm nhiều, chọn Brin theo đường ray gần giá phá vỡ đường dẫn để mở nhiều vị trí; trong thị trường trống chỉ làm trống, chọn Brin trên đường ray gần giá phá vỡ đường dẫn để mở vị trí.

  4. Thiết lập điều kiện dừng lỗ: Nếu K line đảo ngược mạnh, hãy rút khỏi vị trí hướng hiện tại.

Phân tích lợi thế

  1. Sử dụng đường hai ngang để đánh giá xu hướng cấp độ lớn, tránh giao dịch ngược.

  2. Mạng lưới kênh Brin ATR đã thiết lập nhiều mức giá mở kho, tăng tỷ lệ thành công của các giao dịch mở kho.

  3. Fibonacci quay trở lại các vùng đã thiết lập giá phân tán, với số lượng vị trí khác nhau trong các vùng khác nhau, để thực hiện phân tán vốn.

  4. Điều kiện dừng lỗ trực tiếp giúp dừng lỗ nhanh hơn và giảm lợi nhuận.

Phân tích rủi ro

  1. Sự sai lầm trong việc đánh giá xu hướng cấp độ lớn có thể dẫn đến tổn thất ngược. Các tham số đường trung bình có thể được điều chỉnh thích hợp, hoặc thêm các chỉ số khác để đánh giá hỗ trợ.

  2. Khi biến động quá lớn, giá có thể phá vỡ khu vực lưới trực tiếp, không thể mở vị trí. Bạn có thể điều chỉnh tham số vùng sóng, tăng cơ hội mở vị trí.

  3. Điều kiện dừng lỗ là chủ quan, tiêu chuẩn nhận dạng của các nhà giao dịch khác nhau có thể có lỗi.

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

  1. Thêm phân tích phụ trợ cho chỉ số apo để đánh giá xu hướng hai chiều.

  2. Sử dụng chỉ số biến động thị trường để tối ưu hóa các tham số của Blink để thích ứng tốt hơn với sự thay đổi động lực của thị trường.

  3. Giảm mức độ dừng lỗ và thêm các điều kiện dừng của phương thức OTHER để giảm sai sót.

Tóm tắt

Chiến lược này có ý tưởng tổng thể rõ ràng, sử dụng kênh Brin ATR và hai đường ngang nhau để thực hiện phán đoán toàn diện và tổng hợp về tín hiệu giao dịch chiến lược, giảm tối đa nguy cơ sai lầm. Ưu điểm của chiến lược rõ ràng và có thể áp dụng thực tế; nhưng các chi tiết như cài đặt tham số và điều kiện dừng lỗ vẫn có không gian để tối ưu hóa và cần được hoàn thiện hơn nữa.

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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Aayonga

//@version=5
strategy("fib trend grid@Aa", overlay=true,initial_capital=2000, default_qty_type=strategy.fixed, default_qty_value=1)

//回测时间
useDateFilter=input.bool(true,title = "启用回测时间范围限定(backtest)", group = "回测范围(backtest)")
backtesStarDate=input(timestamp("1 Jan 2015"),title = "开始时间(Start)", group = "回测范围(backtest)")
backtestEndDate=input(timestamp("1 Jan 2040"),title = "结束时间(finish)",group = "回测范围(backtest)")
inTradeWindow=true


//入场位 entry
bolllen=input.int(defval=20,minval=1,title="布林长度,(boll length)",group = "入场位(entry)")
sma=ta.sma(close,bolllen)
avg=ta.atr(bolllen)
fib1=input(defval=1.236,title="Fib 1",group = "入场位(entry)")
fib2=input(defval=2.382,title="Fib 2",group = "入场位(entry)")
fib3=input(defval=3.618,title="fib 3",group = "入场位(entry)")
fib4=input(defval=4.236,title="Fib 4",group = "入场位(entry)")
r1=avg*fib1
r2=avg*fib2
r3=avg*fib3
r4=avg*fib4
top4=sma+r4
top3=sma+r3
top2=sma+r2
top1=sma+r1
bott1=sma-r1
bott2=sma-r2
bott3=sma-r3
bott4=sma-r4



//趋势 trend

t4=plot(top4,title="卖 (sell)4",color=color.rgb(244, 9, 9))
t3=plot(top3,title = "卖(sell) 3",color=color.rgb(211, 8, 8))
t2=plot(top2,title="卖 (sell)2",color=color.rgb(146, 13, 13))
t1=plot(top1,title="卖(sell) 1",color=color.rgb(100, 3, 3))

b1=plot(bott1,title="买(buy)1",color=color.rgb(4, 81, 40))
b2=plot(bott2,title="买(buy)2",color=color.rgb(15, 117, 46))
b3=plot(bott3,title = "买(buy)3",color =color.rgb(8, 176, 42) )
b4=plot(bott4,title="买(buy)4",color=color.rgb(15, 226, 103))
plot(sma,style=plot.style_cross,title="SMA",color=color.rgb(47, 16, 225))

//趋势
LengthF=input(defval = 25,title = "快线长度(fastlength)")
LengthS=input(defval=200,title = "慢线长度(slowlength)")
emaF=ta.ema(close,LengthF)
smaS=ta.sma(close,LengthS)
longTrend=emaF>smaS
longb=ta.crossover(emaF,smaS)
bgcolor(longb ? color.new(color.green,40):na,title = "多头强势(bull trend)")
shortTrend=smaS>emaF
shortb=ta.crossunder(emaF,smaS)
bgcolor(shortb ? color.new(#951313, 40):na,title = "空头强势(bear trend)")

//pinbar
bullPinBar = ((close > open) and ((open - low) > 0.6* (high - low))) or ((close < open) and ((close - low) > 0.9 * (high - low)))
//plotshape(bullPinBar  , text ="pinbar", textcolor=color.rgb(9, 168, 144),location=location.belowbar, color=color.rgb(29, 103, 67), size=size.tiny)
bearPinBar = ((close > open) and ((high - close) > 0.7 * (high - low))) or ((close < open) and ((high - open) > 0.7 * (high - low)))
//plotshape(bearPinBar  , text ="pinbar", textcolor=color.rgb(219, 12, 12),location=location.abovebar, color=color.rgb(146, 7, 7), size=size.tiny)

buy1=ta.crossunder(close,bott1) and longTrend and close>ta.ema(close,100)
buy2=ta.crossunder(close,bott2) and longTrend and close>ta.ema(close,80)
buy3=ta.crossunder(close,bott3) and longTrend and close>ta.ema(close,80)
buy4=ta.crossunder(close,bott4) and longTrend and close>ta.ema(close,80)
buyclose=bearPinBar or ta.crossunder(close,smaS)




if buy2 or buy3 or buy4 or buy1 and inTradeWindow
    strategy.order("多(buy)",strategy.long)

if buyclose  and inTradeWindow
    strategy.close("多(buy)")

sell1=ta.crossover(close,top1) and shortTrend and close<ta.ema(close,200)
sell2=ta.crossover(close,top2) and shortTrend and close<ta.ema(close,200)
sell3=ta.crossover(close,top3) and shortTrend and close<ta.ema(close,200)
sell4=ta.crossover(close,top4) and shortTrend and close<ta.ema(close,200)
sellclose=bullPinBar or ta.crossover(close,ta.sma(close,220))

if  sell1 or sell2 or sell3 or sell4 and inTradeWindow
    strategy.order("空(sell)",strategy.short)

if sellclose  and inTradeWindow
    strategy.close("空(sell)")