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.
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.
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.
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.
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.
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)