
Chiến lược phá vỡ biến động hai đường bằng cách tính toán đường trung bình của hai chu kỳ khác nhau, tạo ra một kênh và đánh giá xu hướng biến động giá. Khi giá phá vỡ kênh, tạo ra tín hiệu giao dịch. Chiến lược này đồng thời kết hợp với phán đoán về chuyển động chính thống của thị trường, tránh phá vỡ sai.
Chiến lược này chủ yếu hình thành kênh lên xuống bằng hai đường trung bình di chuyển, phạm vi kênh được xác định bởi phạm vi biến động thực trung bình của ATR. Cụ thể, chiến lược chủ yếu bao gồm các bước sau:
Tính hai đường trung bình, đường trung bình 1 có chu kỳ ngắn, đường trung bình 2 có chu kỳ dài. đường trung bình 1 phản ánh xu hướng giá hiện tại, đường trung bình 2 phản ánh xu hướng giá chính thống.
Trên đường trung bình 1, mỗi bên cộng thêm một ATR để tạo ra một kênh, ATR có thể phản ánh sự biến động của thị trường hiện tại.
Một tín hiệu mua được tạo ra khi giá phá vỡ kênh từ dưới lên; một tín hiệu bán được tạo ra khi giá phá vỡ kênh từ trên xuống.
Kết hợp với xu hướng giá chính thống, tín hiệu giao dịch thực sự chỉ được tạo ra khi hướng đột phá của chu kỳ ngắn phù hợp với xu hướng của chu kỳ dài.
Bằng cách thực hiện các bước trên, chiến lược này có thể nắm bắt các điểm đột phá trong xu hướng biến động giá, đồng thời tránh các tín hiệu sai lệch khi kết hợp với xu hướng chính thống.
Chiến lược này có những ưu điểm sau:
Sử dụng đường hai chiều để tạo ra các kênh, có thể phản ánh phạm vi biến động giá hiện tại.
Việc giới thiệu tham số ATR cho phép phạm vi kênh theo dõi biến động thị trường trong thời gian thực.
Kết hợp với xu hướng giá chính thống để tránh tín hiệu sai trong thị trường biến động.
Các quy tắc phán đoán chiến lược rõ ràng, đơn giản, dễ hiểu và phù hợp để học và nghiên cứu.
Chiến lược này cũng có những rủi ro sau:
Rủi ro này có thể được giảm bớt bằng cách di chuyển vị trí sau khi đạt được lợi nhuận.
Các thông tin chính thống cho rằng có sự chậm trễ về thời gian, không thể hoàn toàn tránh được tín hiệu sai. Bạn có thể điều chỉnh thông số đường trung bình để giảm.
Trong thị trường có nhiều biến động, điểm dừng lỗ dễ bị phá vỡ. Bạn có thể điều chỉnh ATR để đối phó với sự biến động của thị trường bằng cách điều chỉnh ATR trong thời gian thực.
Chiến lược này có thể được tối ưu hóa bằng cách:
Các tham số được tính theo đường trung bình có thể được tối ưu hóa để tìm ra sự kết hợp tham số tối ưu cho các giống khác nhau.
Các tham số ATR cũng có thể được tối ưu hóa để các kênh có thể theo dõi tốt hơn sự biến động hiện tại.
Thêm các điều kiện lọc bổ sung, chẳng hạn như chỉ số năng lượng, chỉ số dao động, v.v., để tránh thêm tín hiệu sai.
Thông qua công nghệ học máy, các tham số được tối ưu hóa tự động, điều chỉnh động theo tham số.
Chiến lược phá vỡ chấn động hai chiều bằng cách đánh giá các kênh hai chiều và định hướng chính thống, để nắm bắt xu hướng chấn động. Quy tắc đánh giá chiến lược đơn giản, rõ ràng, dễ hiểu và thực hiện, là một ví dụ tuyệt vời để hiểu và học chiến lược phá vỡ. Bằng cách liên tục tối ưu hóa cài đặt tham số và lọc tín hiệu, chiến lược này có thể tăng thêm sự ổn định và lợi nhuận.
/*backtest
start: 2022-11-20 00:00:00
end: 2023-11-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Anuj4912
//@version=4
strategy("Anuj4912", overlay=true)
res = input(title="Time Frame", defval="120")
Factor=input(1, minval=1,maxval = 100)
Pd=input(1, minval=1,maxval = 100)
tp = input(500,title="Take Profit")
sl = input(400,title="Stop Loss")
Up=hl2-(Factor*atr(Pd))
Dn=hl2+(Factor*atr(Pd))
MUp=request.security(syminfo.tickerid,res,hl2-(Factor*atr(Pd)))
MDn=request.security(syminfo.tickerid,res,hl2+(Factor*atr(Pd)))
Mclose=request.security(syminfo.tickerid,res,close)
TrendUp=close[1]>TrendUp[1]? max(Up,TrendUp[1]) : Up
TrendDown=close[1]<TrendDown[1]? min(Dn,TrendDown[1]) : Dn
MTrendUp=Mclose[1]>MTrendUp[1]? max(MUp,MTrendUp[1]) : MUp
MTrendDown=Mclose[1]<MTrendDown[1]? min(MDn,MTrendDown[1]) : MDn
Trend = close > TrendDown[1] ? 1: close< TrendUp[1]? -1: nz(Trend[1],1)
Tsl = Trend==1? TrendUp: TrendDown
MTrend = Mclose > MTrendDown[1] ? 1: Mclose< MTrendUp[1]? -1: nz(MTrend[1],1)
MTsl = MTrend==1? MTrendUp: MTrendDown
linecolor = Trend == 1 ? green : red
plot(Tsl, color = linecolor , style = line , linewidth = 2,title = "SuperTrend")
Mlinecolor = MTrend == 1 ? blue : orange
plot(MTsl, color = Mlinecolor , style = line , linewidth = 2,title = "Main SuperTrend")
plotshape(cross(close,Tsl) and close>Tsl , "Up Arrow", shape.triangleup,location.belowbar,green,0,0)
plotshape(cross(Tsl,close) and close<Tsl , "Down Arrow", shape.triangledown , location.abovebar, red,0,0)
up = Trend == 1 and Trend[1] == -1 and MTrend == 1
down = Trend == -1 and Trend[1] == 1 and MTrend == -1
plotarrow(up ? Trend : na, title="Up Entry Arrow", colorup=lime, maxheight=60, minheight=50, transp=0)
plotarrow(down ? Trend : na, title="Down Entry Arrow", colordown=red, maxheight=60, minheight=50, transp=0)
golong = Trend == 1 and Trend[1] == -1 and MTrend == 1
goshort = Trend == -1 and Trend[1] == 1 and MTrend == -1
strategy.entry("Buy", strategy.long,when=golong)
strategy.exit("Close Buy","Buy",profit=tp,loss=sl)
strategy.entry("Sell", strategy.short,when=goshort)
strategy.exit("Close Sell","Sell",profit=tp,loss=sl)