Chiến lược đảo ngược xu hướng tiền điện tử dựa trên các điểm cao và thấp

Tác giả:ChaoZhang, Ngày: 2024-01-12 14:13:36
Tags:

img

Tổng quan

Chiến lược này xác định sự đảo ngược xu hướng trong tài sản tiền điện tử dựa trên các điểm cao / thấp và tín hiệu đột phá PIVOT. Nó thuộc thể loại chiến lược đảo ngược đột phá. Chiến lược này đầu tiên tính toán các điểm giá cao nhất và thấp nhất gần đây như các mức PIVOT, sau đó phát hiện xem giá có phá vỡ các mức chính này không, báo hiệu những thay đổi xu hướng lớn.

Chiến lược hoạt động như thế nào

  1. Tính toán các điểm cao / thấp PIVOT

    Sử dụng ta.pivothigh (()) và ta.pivotlow (()) để tìm giá cao nhất và thấp nhất trong một khoảng thời gian truy cập lại thanh tùy chỉnh để vẽ các điểm PIVOT.

  2. Xác định các tín hiệu đột phá

    Nếu giá phá vỡ trên điểm thấp PIVOT, hoặc phá vỡ dưới điểm cao PIVOT, chiến lược coi đó là tín hiệu đảo ngược xu hướng.

  3. Thiết lập điều kiện bộ lọc

    Cần giá để phá vỡ mức PIVOT theo khoảng cách có ý nghĩa, và giá đóng vượt qua giá đóng 150 bar để tránh whipsaws.

  4. Nhập và ra

    Trigger buy signal on long condition, close long position on exit condition. tương tự với các quy tắc thiết lập ngắn.

Ưu điểm

  1. Các điểm PIVOT nhạy cảm với những thay đổi xu hướng lớn
  2. Tránh các whipsaws trong xu hướng củng cố với bộ lọc
  3. Bắt được sự đảo ngược sớm với swing high/low breakouts

Rủi ro

  1. Các chu kỳ lớn hơn có thể khiến chiến lược bị đánh bại
  2. Các điểm và bộ lọc PIVOT cần điều chỉnh cho mỗi tài sản
  3. Phí hối đoái ảnh hưởng đến kết quả, cần cấu trúc phí gần bằng không

Cơ hội gia tăng

  1. Kiểm tra các khoảng thời gian xem lại PIVOT khác nhau
  2. Thêm stop loss di chuyển vào lỗ kiểm soát cho mỗi giao dịch
  3. Kết hợp với các chỉ số khác cho bộ lọc

Kết luận

Chiến lược này tổng thể mạnh mẽ để nắm bắt sự đảo ngược lớn, nhưng cần các tham số tùy chỉnh cho mỗi tài sản và kiểm soát rủi ro.


/*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 Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © nkrastins95

//@version=5
strategy("Swing Hi Lo", overlay=true, margin_long=100, margin_short=100)

//-----------------------------------------------------------------------------------------------------------------------//

tf = input.timeframe(title="Timeframe", defval="")

gr="LENGTH LEFT / RIGHT"
leftLenH = input.int(title="Pivot High", defval=10, minval=1, inline="Pivot High",group=gr)
rightLenH = input.int(title="/", defval=10, minval=1, inline="Pivot High",group=gr)
colorH = input(title="", defval=color.red, inline="Pivot High",group=gr)

leftLenL = input.int(title="Pivot Low", defval=10, minval=1, inline="Pivot Low", group=gr)
rightLenL = input.int(title="/", defval=10, minval=1, inline="Pivot Low",group=gr)
colorL = input(title="", defval=color.blue, inline="Pivot Low",group=gr)

//-----------------------------------------------------------------------------------------------------------------------//

pivotHigh(ll, rl) =>
    maxLen = 1000
    float ph = ta.pivothigh(ll, rl)
    int offset = 0
    while offset < maxLen
        if not na(ph[offset])
            break 
        offset := offset + 1
    ph[offset]

pivotLow(ll, rl) =>
    maxLen = 1000
    float pl = ta.pivotlow(ll, rl)
    int offset = 0
    while offset < maxLen
        if not na(pl[offset])
            break 
        offset := offset + 1
    pl[offset]


//-----------------------------------------------------------------------------------------------------------------------//

ph = request.security(syminfo.tickerid, tf, pivotHigh(leftLenH, rightLenH), barmerge.gaps_off, barmerge.lookahead_on)
pl = request.security(syminfo.tickerid, tf, pivotLow(leftLenL, rightLenL), barmerge.gaps_off, barmerge.lookahead_on)

drawLabel(_offset, _pivot, _style, _color) =>
    if not na(_pivot)
        label.new(bar_index[_offset], _pivot, str.tostring(_pivot, format.mintick), style=_style, color=_color, textcolor=#131722)

//-----------------------------------------------------------------------------------------------------------------------//

VWAP = ta.vwap(ohlc4)

longcondition = ta.crossunder(close,pl) and close > close[150]
exitcondition = close > ph

shortcondition = ta.crossover(close,ph) and close < close[150]
covercondition = close < pl

strategy.entry("long", strategy.long, when = longcondition)
strategy.close("long", when = exitcondition)

strategy.entry("Short", strategy.short, when = shortcondition)
strategy.close("Short", when = covercondition)

Thêm nữa