Strategi pembalikan tren kripto berdasarkan titik tinggi dan titik rendah pergeseran pivot

Penulis:ChaoZhang, Tanggal: 2024-01-12 14:13:36
Tag:

img

Gambaran umum

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.

Cara Kerja Strategi

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

  2. Mengidentifikasi Sinyal Penembusan

    Jika harga pecah di atas titik rendah PIVOT, atau pecah di bawah titik tinggi PIVOT, strategi menganggapnya sebagai sinyal pembalikan tren.

  3. Atur Kondisi Filter

    Membutuhkan harga untuk menembus level PIVOT dengan jarak yang berarti, dan harga penutupan melintasi harga penutupan 150 bar untuk menghindari whipsaws.

  4. Masuk dan Keluar

    Trigger sinyal beli pada kondisi panjang, tutup posisi panjang pada kondisi keluar.

Keuntungan

  1. Titik PIVOT sensitif terhadap pergeseran tren utama
  2. Menghindari whipsaws dalam tren konsolidasi dengan filter
  3. Menangkap pembalikan awal dengan swing tinggi/rendah breakout

Risiko

  1. Siklus yang lebih besar dapat menyebabkan strategi untuk mendapatkan cambuk
  2. Titik PIVOT dan filter perlu disetel untuk setiap aset
  3. Biaya pertukaran dampak hasil, perlu struktur biaya hampir nol

Peluang Peningkatan

  1. Uji periode pencarian PIVOT yang berbeda
  2. Tambahkan stop loss bergerak ke kontrol loss per perdagangan
  3. Gabungkan dengan indikator lain untuk filter

Kesimpulan

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)

Lebih banyak