Strategi ini mengidentifikasi pembalikan tren dalam aset crypto berdasarkan titik tinggi / rendah swing PIVOT dan sinyal breakout. Ini termasuk dalam kategori strategi pembalikan breakout. Strategi ini pertama menghitung titik harga tertinggi dan terendah terbaru sebagai tingkat PIVOT, kemudian mendeteksi apakah harga melanggar tingkat kunci ini, menandakan perubahan tren utama.
Menghitung titik tinggi / rendah PIVOT
Menggunakan ta.pivothigh (() dan ta.pivotlow (()) untuk menemukan harga tertinggi tertinggi dan terendah terendah selama periode tampilan bar khusus untuk memetakan titik PIVOT.
Mengidentifikasi Sinyal Penembusan
Jika harga pecah di atas titik rendah PIVOT, atau pecah di bawah titik tinggi PIVOT, strategi menganggapnya sebagai sinyal pembalikan tren.
Atur Kondisi Filter
Membutuhkan harga untuk menembus level PIVOT dengan jarak yang berarti, dan harga penutupan melintasi harga penutupan 150 bar untuk menghindari whipsaws.
Masuk dan Keluar
Trigger sinyal beli pada kondisi panjang, tutup posisi panjang pada kondisi keluar.
Strategi ini secara keseluruhan kuat untuk menangkap pembalikan besar, tetapi membutuhkan parameter yang disesuaikan per aset dan kontrol 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)