Chiến lược đột phá dao động trung bình di chuyển kép

Tác giả:ChaoZhang, Ngày: 2023-11-27 17:44:49
Tags:

img

Tổng quan

Chiến lược đột phá dao động trung bình động kép tính toán hai trung bình động của các giai đoạn khác nhau để tạo thành một kênh và đánh giá xu hướng dao động của giá. Nó tạo ra tín hiệu giao dịch khi giá vượt qua kênh. Chiến lược này cũng kết hợp phán đoán hướng thị trường chính để tránh đột phá sai.

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

Các bước chính của chiến lược này là:

  1. Tính toán hai đường trung bình động, một với một khoảng thời gian ngắn hơn và một với một khoảng thời gian dài hơn.

  2. Thêm một ATR trên và dưới MA ngắn hơn để tạo thành một kênh.

  3. Một tín hiệu mua được tạo ra khi giá vượt qua kênh lên. Một tín hiệu bán được tạo ra khi giá vượt qua kênh xuống.

  4. Kết hợp đánh giá xu hướng chính. Các tín hiệu giao dịch hợp lệ chỉ được tạo ra khi đột phá ngắn hạn phù hợp với hướng xu hướng chính.

Bằng cách làm theo các bước này, chiến lược này nắm bắt các điểm đột phá trong xu hướng dao động và tránh các tín hiệu sai bằng cách tham khảo xu hướng chính.

Phân tích lợi thế

Những lợi thế của chiến lược này:

  1. Kênh MA kép phản ánh phạm vi dao động giá hiện tại.

  2. Parameter ATR cho phép phạm vi kênh theo dõi biến động thị trường trong thời gian thực.

  3. Việc lọc xu hướng chính thống tránh các tín hiệu sai trong các thị trường dao động.

  4. Các quy tắc rất đơn giản và dễ hiểu, thích hợp để học và nghiên cứu.

Phân tích rủi ro

Những rủi ro:

  1. Những bước đột phá thất bại có thể dẫn đến việc bỏ lỡ những cơ hội tốt.

  2. Phán quyết xu hướng chính thống có thời gian trễ và không thể loại bỏ tất cả các tín hiệu sai.

  3. Dừng lỗ có thể thâm nhập vào thị trường biến động. Có thể điều chỉnh ATR một cách năng động.

Hướng dẫn tối ưu hóa

Cách tối ưu hóa chiến lược này:

  1. Tối ưu hóa các thông số MA cho các sản phẩm khác nhau.

  2. Tối ưu hóa tham số ATR để theo dõi biến động tốt hơn.

  3. Thêm các bộ lọc bổ sung như chỉ số khối lượng và biến động để tránh thêm các tín hiệu sai.

  4. Sử dụng máy học để tự động tối ưu hóa các thông số.

Kết luận

Chiến lược đột phá dao động MA kép này nắm bắt xu hướng dao động thông qua kênh MA kép và lọc chính. Với các quy tắc đơn giản và rõ ràng, nó là một ví dụ tuyệt vời để học các chiến lược giao dịch đột phá.


/*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)



Thêm nữa