Strategi ini mengenal pasti pembalikan trend dalam aset kripto berdasarkan titik tinggi / rendah swing PIVOT dan isyarat pecah. Ia tergolong dalam kategori strategi pembalikan pecah. Strategi ini mula-mula mengira titik harga tertinggi dan terendah baru-baru ini sebagai tahap PIVOT, kemudian mengesan jika harga memecahkan tahap utama ini, menandakan perubahan trend utama.
Mengira titik tinggi / rendah PIVOT
Menggunakan ta.pivothigh (() dan ta.pivotlow (()) untuk mencari harga tertinggi tertinggi dan harga terendah terendah selama tempoh carian bar tersuai untuk merangka titik PIVOT.
Mengenal pasti Isyarat Penembusan
Jika harga pecah di atas titik rendah PIVOT, atau pecah di bawah titik tinggi PIVOT, strategi menganggapnya sebagai isyarat pembalikan trend.
Tetapkan Keadaan Penapis
Menghendaki harga untuk memecahkan tahap PIVOT dengan jarak yang bermakna, dan harga penutupan melintasi harga penutupan 150 bar untuk mengelakkan whipsaws.
Masuk dan Keluar
Trigger tanda beli pada keadaan panjang, tutup kedudukan panjang pada keadaan keluar.
Strategi ini secara keseluruhan kuat untuk menangkap pembalikan besar, tetapi memerlukan parameter tersuai untuk setiap aset dan kawalan risiko.
/*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)