Chiến lược Pivot SuperTrend trên nhiều khung thời gian

Tác giả:ChaoZhang, Ngày: 2024-01-31 17:29:37
Tags:

img

Tổng quan

Chiến lược này kết hợp chỉ số Pivot Points và Average True Range Bands để thực hiện một hệ thống theo dõi xu hướng trên nhiều khung thời gian. Nó có thể nắm bắt xu hướng trong các chu kỳ trung gian trong khi sử dụng Pivot Points để xác định hỗ trợ và kháng cự dài hạn để vào và ra tốt hơn.

Chiến lược logic

Chiến lược này chủ yếu dựa trên hai chỉ số:

  1. Điểm trục: Tính toán trung bình giá cao nhất, thấp nhất và đóng cửa trong một khoảng thời gian nhất định để xác định điểm trục trên và dưới. Điểm trục có thể phục vụ như các khu vực hỗ trợ và kháng cự chính.

  2. Phạm vi True Range trung bình: Tính toán phạm vi trung bình thực trong một khoảng thời gian nhất định, và di chuyển băng giữa lên và xuống để tạo thành một kênh.

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

Khi giá vượt qua kênh trung bình True Range, hãy có vị trí dài hoặc ngắn dọc theo hướng phá vỡ. Khi giá quay trở lại kênh, đóng các vị trí. Ngoài ra, khi giá vượt qua điểm trục trên, hãy có vị trí dài; khi giá vượt qua điểm trục dưới, hãy có vị trí ngắn.

Chiến lược cũng giới thiệu khái niệm đường trung tâm trục trục. Khi lợi nhuận vượt qua đường trung tâm, có thể đóng một nửa vị trí để khóa một số lợi nhuận và kiểm soát rủi ro.

Phân tích lợi thế

Chiến lược có những lợi thế sau:

  1. Thiết kế nhiều khung thời gian: chu kỳ dài và trung gian xác định xu hướng chính trong khi chu kỳ ngắn xác định mục nhập cụ thể.

  2. Đường trung tâm xoay cung cấp một tùy chọn để đóng một nửa vị trí, khóa trong một số lợi nhuận trong khi đảm bảo thương mại chiến thắng.

  3. Phạm vi True Range trung bình cung cấp mức dừng lỗ rõ ràng.

  4. Chiến lược có ít tham số, dễ dàng tối ưu hóa cho các kết hợp tham số tốt nhất.

  5. Nó tránh được tối đa nguy cơ thoát ra sai.

Phân tích rủi ro

Chiến lược này cũng có một số rủi ro:

  1. Rủi ro dừng lỗ lớn hơn trong thời gian biến động thị trường cao.

  2. Đường giữa có thể thường xuyên kích hoạt dừng lỗ trong quá trình củng cố thị trường.

  3. Lựa chọn tham số không chính xác có thể dẫn đến quá ít hoặc quá thường xuyên giao dịch.

  4. Những đứt đoạn điểm pivot gần đây có thể là đứt đoạn sai.

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

Chiến lược có thể được tối ưu hóa từ các khía cạnh sau:

  1. Kết hợp nhiều bộ lọc như âm lượng và Bollinger Bands để tránh tín hiệu sai.

  2. Tối ưu hóa các khoảng thời gian của Pivot Points và ATR để tìm kết hợp tham số tốt nhất.

  3. Thiết lập một vùng đệm xung quanh đường giữa để tránh các kích hoạt thường xuyên.

  4. Thêm bộ lọc xu hướng thích hợp để đảm bảo hoạt động theo xu hướng chính.

Kết luận

Nói chung, đây là một chiến lược theo dõi xu hướng rất thực tế. Nó giải quyết các khó khăn dừng lỗ phổ biến của các hệ thống xu hướng và đạt được giao dịch xu hướng có khả năng kiểm soát rủi ro. Đây là một chiến lược được khuyến cáo cao. Với tối ưu hóa và cải tiến thích hợp, hiệu suất của nó có thể được tăng thêm.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
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/
// © LonesomeTheBlue

//@version=4
strategy("Pivot Point SuperTrend [Backtest]", overlay = true)
prd = input(defval = 2, title="Pivot Point Period", minval = 1, maxval = 50)
Factor=input(defval = 3, title = "ATR Factor", minval = 1, step = 0.1)
Pd=input(defval = 10, title = "ATR Period", minval=1)
usecenter = input(defval = false, title="Use Center Line to Close Entry for 50%")
showpivot = input(defval = false, title="Show Pivot Points")
showcl = input(defval = false, title="Show PP Center Line")


float ph = na
float pl = na
ph := pivothigh(prd, prd)
pl := pivotlow(prd, prd)

plotshape(ph and showpivot, text="H",  style=shape.labeldown, color=na, textcolor=color.red, location=location.abovebar, transp=0, offset = -prd)
plotshape(pl and showpivot, text="L",  style=shape.labeldown, color=na, textcolor=color.lime, location=location.belowbar, transp=0, offset = -prd)

float center = na
center := center[1]
float lastpp = ph ? ph : pl ? pl : na
if lastpp
    if na(center)
        center := lastpp
    else
        center := (center * 2 + lastpp) / 3

Up = center - (Factor * atr(Pd))
Dn = center + (Factor * atr(Pd))

float TUp = na
float TDown = na
Trend = 0
TUp := close[1] > TUp[1] ? max(Up, TUp[1]) : Up
TDown := close[1] < TDown[1] ? min(Dn, TDown[1]) : Dn
Trend := close > TDown[1] ? 1: close < TUp[1]? -1: nz(Trend[1], 1)
Trailingsl = Trend == 1 ? TUp : TDown

linecolor = Trend == 1 and nz(Trend[1]) == 1 ? color.lime : Trend == -1 and nz(Trend[1]) == -1 ? color.red : na
plot(Trailingsl, color = linecolor ,  linewidth = 2, title = "PP SuperTrend")

plot(showcl ? center : na, color = showcl ? center < hl2 ? color.blue : color.red : na, transp = 0)

bsignal = Trend == 1 and Trend[1] == -1
ssignal = Trend == -1 and Trend[1] == 1

if bsignal
    strategy.entry("Buy", true, 2, comment = "Buy")
if ssignal
    strategy.entry("Sell", false, 2, comment = "Sell")

if strategy.position_size == 2 and center > hl2 and usecenter
    strategy.close("Buy", qty_percent = 50, comment = "close buy entry for 50%")
if strategy.position_size == -2 and center < hl2 and usecenter
    strategy.close("Sell", qty_percent = 50, comment = "close sell entry for 50%")
    
if change(Trend)
    strategy.close_all()

Thêm nữa