
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.
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.
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.
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.
Bắt đầu mua và sau đó mua nhiều, và bán ra nhiều khi bắt đầu mua.
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.
/*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)