Strategi perdagangan kuantitatif berdasarkan tren likuiditas


Tanggal Pembuatan: 2023-12-21 10:19:52 Akhirnya memodifikasi: 2023-12-21 10:19:52
menyalin: 0 Jumlah klik: 701
1
fokus pada
1623
Pengikut

Strategi perdagangan kuantitatif berdasarkan tren likuiditas

Ringkasan

Strategi ini disebut strategi tren yang didorong oleh likuiditas, yang bertujuan untuk mengidentifikasi arah tren harga pada periode waktu yang berbeda dan membuat keputusan membeli atau menjual sesuai dengan itu. Strategi ini menggunakan sistem linier ganda untuk menilai tren, dan menggunakan indeks kekuatan relatif selisih harga pada beberapa frame waktu untuk bereaksi tepat waktu ketika tren berubah.

Prinsip Strategi

Logika inti dari strategi ini didasarkan pada indikator CHOP, di mana sistem rata-rata bergerak menilai arah tren besar. Secara khusus, strategi ini menghitung RSI dari garis cepat (Length = 20) dan garis lambat (Length = 50) pada kerangka waktu periode tinggi, dan menghitung perbedaan keduanya. Ketika RSI melewati garis lambat di atas garis cepat, RSI dinilai sebagai bullish, membentuk sinyal multitasking; sebaliknya, RSI melewati garis lambat di bawah garis cepat, RSI turun, membentuk sinyal kosong.

Strategi ini juga memperkenalkan penilaian multi-frame waktu: menghitung RSI di periode yang lebih tinggi (seperti garis matahari) untuk menilai arah tren keseluruhan; berdasarkan penilaian periode yang lebih tinggi, melakukan pembelian dan penjualan spesifik di periode yang lebih rendah (seperti garis 5 menit). Kombinasi dari kerangka waktu ini, mempertimbangkan penilaian tren periode tinggi dan fleksibilitas untuk operasi periode rendah.

Keunggulan Strategis

  • Menggunakan RSI untuk menilai potensi trend reversal, respon awal, sensitif
  • Menggunakan pemikiran multi-frame waktu, tren penilaian siklus tinggi, pelaksanaan operasi siklus rendah
  • RSI mencerminkan perubahan harga dan volume transaksi yang mencerminkan likuiditas dan kehangatan pasar
  • Pengaturan parameter sederhana, mudah dipahami, dapat ditafsirkan, dan dapat disesuaikan

Risiko Strategis dan Solusi

  • Hal ini dapat menyebabkan terjadinya terobosan palsu pada penilaian dua garis rata.
  • Kegagalan untuk menerobos dapat menyebabkan kerugian yang tidak perlu.

Solusi:

  1. Menyesuaikan parameter garis rata-rata untuk mengurangi probabilitas false breakout
  2. Meningkatkan kondisi penyaringan untuk menghindari masuk yang tidak perlu

Arah optimasi strategi

  • Optimalkan parameter RSI dengan menggunakan Kalman Filter
  • Menambahkan penilaian tambahan dari indikator seperti MACD
  • Tetapkan posisi keluar yang dinamis seiring dengan perubahan volume transaksi

Meringkaskan

Strategi ini menggunakan perbedaan RSI untuk menilai perubahan tren potensial, untuk menangkap titik-titik perubahan yang sensitif. Penggunaan beberapa kerangka waktu memastikan penilaian tren besar, tetapi juga membuat operasi jual beli spesifik lebih fleksibel. Dibandingkan dengan strategi pelacakan tren lainnya, strategi ini lebih sederhana, langsung, parameter Settings intuitif, dan mudah disesuaikan.

Kode Sumber Strategi
/*backtest
start: 2023-11-19 00:00:00
end: 2023-12-19 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Flow Trend Indicator Strategy", "FlowTI", overlay=true, calc_on_every_tick=true)

isTimeFrame(timeFrame) =>
    timeFrame == timeframe.period ? true : false

Htf() =>
    isTimeFrame("12") ? "60" : isTimeFrame("60") ? "300" : isTimeFrame("300") ? "D" : isTimeFrame("D") ? "W" : isTimeFrame("W") ? "M" : isTimeFrame("M") ? "5M" : "D"

TrendIndication() =>
    trendFastLength = 20
    trendSlowLength = 50
    upFastHtf = request.security(syminfo.tickerid, Htf(), rma(max(change(close), 0), trendFastLength), barmerge.gaps_off, barmerge.lookahead_on)
    downFastHtf = request.security(syminfo.tickerid, Htf(), rma(-min(change(close), 0), trendFastLength), barmerge.gaps_off, barmerge.lookahead_on)
    rsiFastHtf = downFastHtf == 0 ? 100 : upFastHtf == 0 ? 0 : 100 - (100 / (1 + upFastHtf / downFastHtf))
    upSlowHtf = request.security(syminfo.tickerid, Htf(), rma(max(change(close), 0), trendSlowLength), barmerge.gaps_off, barmerge.lookahead_on)
    downSlowHtf = request.security(syminfo.tickerid, Htf(), rma(-min(change(close), 0), trendSlowLength), barmerge.gaps_off, barmerge.lookahead_on)
    rsiSlowHtf = downSlowHtf == 0 ? 100 : upSlowHtf == 0 ? 0 : 100 - (100 / (1 + upSlowHtf / downSlowHtf))
    rsiDiff = rsiFastHtf - rsiSlowHtf
    crossover(rsiDiff, 0) ? true : crossunder(rsiDiff, 0) ? false : na

if (TrendIndication() == true)
    strategy.entry("Long", strategy.long)

if (TrendIndication() == false)
    strategy.entry("Short", strategy.short)