Strategi perdagangan kuantitatif berdasarkan aliran kecairan


Tarikh penciptaan: 2023-12-21 10:19:52 Akhirnya diubah suai: 2023-12-21 10:19:52
Salin: 0 Bilangan klik: 701
1
fokus pada
1623
Pengikut

Strategi perdagangan kuantitatif berdasarkan aliran kecairan

Gambaran keseluruhan

Strategi ini dinamakan Strategi Trend Didorong Kecairan (Liquidity Driven Trend Strategy), bertujuan untuk mengenal pasti arah trend harga dalam tempoh masa yang berbeza, dan membuat keputusan membeli atau menjual dengan sewajarnya. Strategi ini menggunakan sistem dua garis sejajar untuk menilai trend, dan menggunakan indeks kekuatan relatif perbezaan harga (RSI) pada pelbagai bingkai masa untuk bereaksi tepat pada masanya apabila trend berubah.

Prinsip Strategi

Logik teras strategi ini adalah berdasarkan pada indikator CHOP, di mana sistem purata berubah menentukan arah trend besar. Secara khusus, strategi ini mengira nilai RSI garis cepat (Length = 20) dan garis perlahan (Length = 50) pada jangka masa yang berkala tinggi, dan mengira perbezaan antara keduanya. Apabila RSI garis perlahan melintasi RSI garis cepat, ia dianggap sebagai bullish, membentuk sinyal ganda; sebaliknya, RSI garis cepat melintasi RSI garis perlahan melintasi RSI, membentuk sinyal kosong.

Strategi ini juga memperkenalkan penilaian bingkai masa berbilang: mengira perbezaan RSI pada kitaran yang lebih tinggi (seperti garis matahari) untuk menentukan arah trend keseluruhan; melakukan pembelian dan penjualan tertentu pada kitaran yang lebih rendah (seperti garis 5 minit) berdasarkan keputusan kitaran yang lebih tinggi. Kombinasi bingkai masa berbilang ini mempertimbangkan penilaian trend kitaran tinggi dan fleksibiliti operasi kitaran rendah.

Kelebihan Strategik

  • Menggunakan perbezaan RSI untuk menilai potensi trend berbalik, bertindak balas lebih awal, sensitif
  • Menggunakan pemikiran pelbagai kerangka masa, trend penilaian kitaran tinggi, pelaksanaan operasi kitaran rendah
  • Penunjuk RSI mencerminkan perubahan harga dan jumlah transaksi, yang mencerminkan kelembapan pasaran dan kehangatan penyertaan
  • Tetapan parameter mudah, mudah difahami, diterangkan dan disesuaikan

Risiko dan penyelesaian strategi

  • Penilaian dua garis rata mungkin menyebabkan penembusan palsu
  • Kegagalan penembusan boleh menyebabkan kerugian yang tidak perlu

Penyelesaian:

  1. Menyesuaikan parameter garis purata untuk mengurangkan kemungkinan penembusan palsu
  2. Meningkatkan penapisan untuk mengelakkan kemasukan yang tidak perlu

Arah pengoptimuman strategi

  • Mengoptimumkan parameter RSI menggunakan Kalman Filter
  • Menambah penilaian tambahan seperti MACD
  • Tetapan kedudukan keluar dinamik yang digabungkan dengan perubahan jumlah dagangan

ringkaskan

Strategi ini menggunakan perbezaan RSI untuk menilai perubahan trend yang berpotensi, untuk menangkap titik perubahan yang sensitif. Penggunaan pelbagai bingkai masa memastikan penghakiman terhadap trend besar, tetapi juga menjadikan operasi pembelian dan penjualan yang lebih fleksibel. Berbanding dengan strategi pengesanan trend lain, strategi ini lebih mudah, lebih langsung, parameter Settings intuitif, mudah disesuaikan dan dioptimumkan.

Kod 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)