Chiến lược theo dõi siêu xu hướng hai khung thời gian

Tác giả:ChaoZhang, Ngày: 2023-09-22 14:27:52
Tags:

Tổng quan

Đây là một chiến lược theo dõi Supertrend hai khung thời gian. Nó áp dụng các chỉ số Supertrend trong hai khoảng thời gian khác nhau, một là khung thời gian chính để xác định hướng xu hướng, và một là khung thời gian phụ để lọc các mục. Nó chỉ đi vào khi Supertrends trong cả hai khung thời gian đều ở cùng một hướng, để nắm bắt chính xác hơn các điểm đảo ngược xu hướng.

Chiến lược logic

Chỉ số cốt lõi của chiến lược này là Supertrend. Supertrend xác định hướng xu hướng tương đối của giá bằng cách tính biến động giá. Chiến lược sử dụng Supertrend trong hai khoảng thời gian, tính toán các đường Supertrend cho khung thời gian chính và phụ.

Logic giao dịch cụ thể là:

  1. Sử dụng hướng của khung thời gian chính Supertrend như là hướng xu hướng tổng thể.

  2. Nhập khi khung thời gian phụ trợ Supertrend phát ra tín hiệu theo cùng hướng.

  3. Đặt điểm dừng lỗ và lấy điểm lợi nhuận.

  4. Rút khi khung thời gian chính Supertrend quay lại.

Bằng cách kết hợp hai chỉ số khung thời gian, một số sự khác biệt có thể được lọc để nhập chính xác hơn.

Phân tích lợi thế

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

  1. Sự kết hợp hai khung thời gian cho phép đánh giá xu hướng chính xác hơn.

  2. Supertrend nhạy cảm với những thay đổi xu hướng, với mục nhập chính xác.

  3. Dừng lỗ và chấp nhận rủi ro kiểm soát lợi nhuận.

  4. Đơn giản và trực tiếp chiến lược logic, dễ hiểu.

  5. Các thông số có thể được tùy chỉnh cho các sản phẩm khác nhau.

Phân tích rủi ro

Những rủi ro chính là:

  1. Sự chậm trễ của siêu xu hướng có thể gây ra các tín hiệu bị đánh giá sai.

  2. Đặt lỗ không đúng và lấy lợi nhuận có thể gây ra xu hướng theo đuổi quá mức hoặc dừng lỗ sớm.

  3. Khung thời gian kép có thể bỏ lỡ một số sự đảo ngược ngắn hơn.

  4. Tối ưu hóa tham số dựa trên dữ liệu lịch sử, rủi ro quá phù hợp tồn tại.

  5. Không tính đến chi phí giao dịch.

Các giải pháp là:

  1. Điều chỉnh các tham số chỉ số, thêm các chỉ số khác để xác minh combo.

  2. Tăng khả năng tối ưu hóa dừng lỗ và lấy lợi nhuận dựa trên kết quả backtest.

  3. Kiểm tra khung thời gian ngắn hơn như là phán đoán phụ trợ.

  4. Mở rộng phạm vi dữ liệu backtest, xác minh backtest đa thị trường.

  5. Thêm chi phí giao dịch như hoa hồng và trượt.

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

Chiến lược có thể được tối ưu hóa thêm bằng cách:

  1. Kiểm tra thêm các kết hợp chỉ số để tìm ra sự kết hợp tối ưu.

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

  3. Tối ưu hóa dừng lỗ và lấy lợi nhuận cho tỷ lệ rủi ro-lợi nhuận tốt hơn.

  4. Cố gắng kết hợp nhiều khung thời gian hơn.

  5. Điều chỉnh phạm vi lấy lợi nhuận và dừng lỗ dựa trên số lượng giao dịch.

  6. Thêm phần thưởng và logic trượt.

  7. Phát triển các công cụ tối ưu hóa tham số đồ họa.

Kết luận

Chiến lược này đạt được đánh giá xu hướng tương đối chính xác và các mục nhập bằng cách sử dụng các chỉ số Supertrend hai khung thời gian. Nó kiểm soát rủi ro bằng cách đặt dừng lỗ và lấy lợi nhuận. Logic chiến lược đơn giản và rõ ràng, dễ mở rộng và tối ưu hóa. Nó có thể được cải thiện hơn nữa bằng cách giới thiệu nhiều chỉ số hơn, tối ưu hóa các tham số năng động, thêm chi phí giao dịch vv để làm cho nó mạnh mẽ hơn. Nhìn chung, chiến lược này cung cấp một ý tưởng theo dõi xu hướng khung thời gian kép hữu ích có giá trị tham chiếu tốt.


/*backtest
start: 2023-08-22 00:00:00
end: 2023-09-21 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//Supertrend Strategy by breizh29 using *rajandran.r* Supertrend Indicator

// strategy("Super Trend 2", overlay=true, default_qty_value=100)
TrendUp = 0.0
TrendDown = 0.0
Trend = 0.0
MTrendUp = 0.0
MTrendDown = 0.0
MTrend = 0.0

res = input(title="Main SuperTrend 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=security(syminfo.tickerid,res,hl2-(Factor*atr(Pd)))
MDn=security(syminfo.tickerid,res,hl2+(Factor*atr(Pd)))

Mclose=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