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


Ngày tạo: 2024-01-12 14:13:36 sửa đổi lần cuối: 2024-01-12 14:13:36
sao chép: 0 Số nhấp chuột: 691
1
tập trung vào
1617
Người theo dõi

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

Tổng quan

Chiến lược này dựa trên PIVOT cao thấp và phá vỡ để đánh giá sự đảo ngược xu hướng của tiền điện tử, thuộc loại chiến lược đảo ngược phá vỡ. Chiến lược này đầu tiên tính toán điểm PIVOT giá cao nhất và thấp nhất trong khoảng thời gian gần đây, sau đó đánh giá xem giá có đảo ngược sau khi phá vỡ các điểm quan trọng này để nắm bắt sự thay đổi xu hướng lớn hay không.

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

  1. Tính toán PIVOT

Sử dụng hàm ta.pivothigh () và ta.pivotlow () để tính giá cao nhất và giá thấp nhất của một số thanh nhất định gần đây như điểm PIVOT quan trọng.

  1. Đánh giá đột phá

Nếu giá phá vỡ điểm thấp PIVOT lên hoặc phá vỡ điểm cao PIVOT xuống, thì xu hướng sẽ bị đảo ngược.

  1. Cài đặt điều kiện lọc

Cần giá có một sự phá vỡ nhất định so với điểm PIVOT và phá vỡ giá đóng cửa 150 bar để tránh bị đặt.

  1. Vào và ra sân

Bắt đầu mua và sau đó mua nhiều, và bán ra nhiều khi bắt đầu mua.

Phân tích lợi thế

  1. Sử dụng điểm PIVOT để đánh giá, nhạy cảm hơn với những thay đổi lớn trong xu hướng
  2. Bộ lọc hiệu quả tham gia vào xu hướng chấn động, đảm bảo nhập cảnh sau khi xu hướng đảo ngược
  3. Vì đánh giá cao hoặc thấp điểm PIVOT phá vỡ, có thể nắm bắt cơ hội đảo ngược kịp thời

Phân tích rủi ro

  1. Những biến động lớn có thể gây ra chiến lược
  2. Cần điều chỉnh độ dài điểm PIVOT và điều kiện lọc để phù hợp với các tiêu chuẩn khác nhau
  3. Cần đảm bảo phí giao dịch gần bằng không, nếu không lợi nhuận sẽ bị ảnh hưởng nhiều hơn

Hướng tối ưu hóa

  1. Có thể kiểm tra các kết hợp các tham số PIVOT khác nhau
  2. Có thể thêm lệnh dừng di chuyển để kiểm soát tổn thất đơn lẻ
  3. Có thể kết hợp các chỉ số khác để đánh giá các tín hiệu lọc

Tóm tắt

Chiến lược này khá ổn định và phù hợp để nắm bắt sự đảo ngược lớn. Tuy nhiên, cần phải chú ý kiểm soát rủi ro và điều chỉnh các tham số phù hợp với các loại tiền tệ khác nhau.

Mã nguồn chiến lược
/*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)