
Strategi ini berdasarkan PIVOT tinggi rendah dan pecah untuk menilai trend reversal mata wang kripto, termasuk dalam kategori strategi reversal pecah. Strategi ini pertama kali mengira harga tertinggi dan harga terendah PIVOT item dalam tempoh terkini, dan kemudian menilai sama ada harga pecah selepas titik-titik penting ini berbalik, untuk menangkap perubahan trend yang besar.
Menggunakan fungsi ta.pivothigh ((() dan ta.pivotlow ((() untuk mengira harga tertinggi dan harga terendah bar tertentu sebagai titik PIVOT utama.
Jika harga menembusi titik rendah PIVOT ke atas, atau menembusi titik tinggi PIVOT ke bawah, maka trend ditukar.
Ia memerlukan harga untuk mencapai titik PIVOT dengan ketinggian tertentu, dan untuk mencapai harga penutupan 150 bar, untuk mengelakkan penarikan.
Memicu syarat pembelian untuk membuat lebih banyak masuk, memicu syarat menjual untuk meratakan lebih banyak tiket. Sama seperti menilai tiket kosong masuk dan keluar.
Strategi ini secara keseluruhannya agak kukuh dan sesuai untuk menangkap perubahan besar. Tetapi perlu berhati-hati untuk mengawal risiko dan menyesuaikan parameter untuk menyesuaikan dengan mata wang yang berbeza.
/*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)