Tài nguyên đang được tải lên... tải...

Chiến lược đảo ngược Pivot với Pivot Exit

Tác giả:ChaoZhang, Ngày: 2024-04-30 15:57:54
Tags:

img

Tổng quan

Chiến lược này sử dụng Pivot Points để xác định các điểm đảo ngược thị trường và đưa ra các quyết định giao dịch dựa trên chúng. Khi một Pivot High được hình thành trong vòng 4 nến cuối cùng ở bên trái, chiến lược đi vào vị trí dài; khi một Pivot Low được hình thành trong vòng 4 nến cuối cùng ở bên trái, chiến lược đi vào vị trí ngắn. Stop loss được đặt ở một kích thước tick (syminfo.mintick) trên hoặc dưới giá nhập cảnh. Có hai điều kiện thoát: 1) thoát khi điểm quay ngược tiếp theo xuất hiện; 2) thoát khi lỗ nổi đạt 30%.

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

  1. Sử dụng các hàm ta.pivothigh (() và ta.pivotlow (()) để tính toán Pivot High (swh) và Pivot Low (swl) trong phạm vi 4 nến ở bên trái và 2 nến ở bên phải.
  2. Khi Pivot High tồn tại (swh_second), cập nhật giá cao nhất (hprice), và khi mức cao hiện tại cao hơn mức cao trước đó, bật điều kiện nhập dài (le).
  3. Khi điều kiện nhập dài (le) được đáp ứng, nhập một vị trí dài ở một kích thước tick (syminfo.mintick) trên Pivot High.
  4. Tương tự như vậy, khi Pivot Low tồn tại (swl_cond), cập nhật giá thấp nhất (lprice), và khi mức thấp hiện tại thấp hơn mức thấp trước đó, bật điều kiện nhập ngắn (se).
  5. Khi điều kiện nhập ngắn (se) được đáp ứng, nhập một vị trí ngắn ở kích thước tick (syminfo.mintick) dưới Pivot Low.
  6. Trong hàm exitAtNextPivot(), nếu giữ một vị trí dài, đặt stop loss ở kích thước một dấu chấm dưới Pivot Low tiếp theo; nếu giữ một vị trí ngắn, đặt stop loss ở kích thước một dấu chấm trên Pivot High tiếp theo.
  7. Trong hàm exitIfProfitLessThanThirtyPercent ((), tính tỷ lệ phần trăm lợi nhuận và lỗ cho các vị trí dài và ngắn và đóng vị trí nếu lỗ vượt quá 30%.

Ưu điểm chiến lược

  1. Điểm Pivot có thể phản ánh tốt mức hỗ trợ và kháng cự trên thị trường, và là một chỉ số phân tích kỹ thuật được sử dụng phổ biến với một số công nhận thị trường.
  2. Nhập vào điểm phá vỡ của Pivot Point có thể nắm bắt các cơ hội đảo ngược thị trường.
  3. Hai điều kiện thoát được thiết lập, một dựa trên điểm chuyển tiếp đối diện tiếp theo cho thoát kỹ thuật, và một dựa trên tỷ lệ thua lỗ cho thoát kiểm soát rủi ro, có thể kiểm soát việc rút chiến lược ở một mức độ nhất định.

Rủi ro chiến lược

  1. Chỉ số Pivot Point tự nó có một sự chậm trễ nhất định và các vấn đề tín hiệu thường xuyên, và có thể không hoạt động tốt trong một thị trường biến động.
  2. Các tham số tính toán cố định của 4 nến và 2 nến có thể không áp dụng cho tất cả các điều kiện thị trường, thiếu khả năng thích nghi và linh hoạt nhất định.
  3. Stop loss được thiết lập gần với giá nhập cảnh (một kích thước tick), có thể bị vứt đi trong thời gian biến động thị trường mạnh mẽ.
  4. Cài đặt dừng mất mát 30% có thể quá lỏng lẻo, với chiều rộng rút lớn.

Hướng dẫn tối ưu hóa chiến lược

  1. Cố gắng sử dụng các loại chỉ số Pivot Point khác, chẳng hạn như Factor Pivot Points, Weighted Pivot Points, vv, để cải thiện độ nhạy cảm và kịp thời của các chỉ số.
  2. Số lượng nến bên trái và bên phải có thể được sử dụng làm tham số đầu vào, và các giá trị tối ưu có thể được tìm thấy thông qua tối ưu hóa tham số.
  3. Vị trí dừng lỗ có thể được tối ưu hóa thành ATR hoặc tỷ lệ dừng lỗ phần trăm. Thứ nhất có thể điều chỉnh thích nghi với những thay đổi trong biến động thị trường, trong khi thứ hai có thể hạn chế rủi ro trong phạm vi có thể kiểm soát được.
  4. Điều kiện dừng lỗ 30% có thể được thắt chặt để giảm rút chiến lược. Ngoài ra, điều kiện dừng tỷ lệ lợi nhuận có thể được thêm vào để quản lý cả lợi nhuận và lỗ động.
  5. Các điều kiện lọc khác, chẳng hạn như lọc xu hướng và lọc biến động, có thể được chồng lên nhau dựa trên sự đột phá điểm Pivot để cải thiện chất lượng tín hiệu.

Tóm lại

Chiến lược này xây dựng một hệ thống giao dịch hai chiều dựa trên chỉ số Pivot Point, nắm bắt các cơ hội đảo ngược thị trường bằng cách đi dài ở Pivot Highs và ngắn ở Pivot Lows. Chiến lược có một cơ sở lý thuyết và giá trị thực tế nhất định, nhưng do những hạn chế của chỉ số Pivot Point, chiến lược có thể phải đối mặt với một số rủi ro và thách thức trong hoạt động thực tế. Bằng cách tối ưu hóa loại chỉ số Pivot Point, các tham số, điều kiện lọc, dừng lỗ và lấy lợi nhuận, v.v., dự kiến sẽ tiếp tục cải thiện độ mạnh mẽ và lợi nhuận của chiến lược.


/*backtest
start: 2023-04-24 00:00:00
end: 2024-04-29 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Pivot Reversal Strategy with Pivot Exit", overlay=true)

leftBars = input(4)
rightBars = input(2)

var float dailyEquity = na

// Reset equity to $10,000 at the beginning of each day
isNewDay = ta.change(time("D")) != 0
if (isNewDay)
    dailyEquity := 10000

// Calculate pivot highs and lows
swh = ta.pivothigh(leftBars, rightBars)
swl = ta.pivotlow(leftBars, rightBars)

// Define long entry condition
swh_cond = not na(swh)
hprice = 0.0
hprice := swh_cond ? swh : hprice[1]
le = false
le := swh_cond ? true : (le[1] and high > hprice ? false : le[1])

// Enter long position if long entry condition is met
if (le)
    strategy.entry("PivRevLE", strategy.long, comment="EnterLong", stop=hprice + syminfo.mintick)

// Define short entry condition
swl_cond = not na(swl)
lprice = 0.0
lprice := swl_cond ? swl : lprice[1]
se = false
se := swl_cond ? true : (se[1] and low < lprice ? false : se[1])

// Enter short position if short entry condition is met
if (se)
    strategy.entry("PivRevSE", strategy.short, comment="EnterShort", stop=lprice - syminfo.mintick)

// Exit condition: Exit at the next pivot point
exitAtNextPivot() =>
    if strategy.opentrades > 0
        if strategy.position_size > 0
            // Exiting long position at next pivot low
            if not na(swl)
                strategy.exit("ExitLong", "PivRevLE", stop=swl - syminfo.mintick)
        else
            // Exiting short position at next pivot high
            if not na(swh)
                strategy.exit("ExitShort", "PivRevSE", stop=swh + syminfo.mintick)

// Call exitAtNextPivot function
exitAtNextPivot()

// Exit condition: Exit if profit is less than 30%
exitIfProfitLessThanThirtyPercent() =>
    if strategy.opentrades > 0
        if strategy.position_size > 0
            // Calculate profit percentage for long position
            profit_percentage_long = (close - strategy.position_avg_price) / strategy.position_avg_price * 100
            // Exiting long position if profit is less than 30%
            if profit_percentage_long < -30
                strategy.close("PivRevLE")
        else
            // Calculate profit percentage for short position
            profit_percentage_short = (strategy.position_avg_price - close) / strategy.position_avg_price * 100
            // Exiting short position if profit is less than 30%
            if profit_percentage_short < -30
                strategy.close("PivRevSE")

// Call exitIfProfitLessThanThirtyPercent function
exitIfProfitLessThanThirtyPercent()


Thêm nữa