Strategi Dagangan Kuantitatif Kitaran Stokastik Ehlers


Tarikh penciptaan: 2024-01-17 16:03:30 Akhirnya diubah suai: 2024-01-17 16:03:30
Salin: 0 Bilangan klik: 793
1
fokus pada
1617
Pengikut

Strategi Dagangan Kuantitatif Kitaran Stokastik Ehlers

Gambaran keseluruhan

Strategi kitaran rawak Ells adalah strategi perdagangan kuantitatif yang menggunakan indikator kitaran rawak Ells untuk menghasilkan isyarat perdagangan. Strategi ini menggabungkan kelebihan indikator rawak dan indikator kitaran untuk merebut peluang kitaran di pasaran.

Prinsip Strategi

Strategi ini mula-mula membina indikator kitaran yang diluruskan, dan kemudian membina nilai indikator rawak berdasarkan indikator tersebut. Penciptaan isyarat perdagangan ditentukan berdasarkan persilangan purata bergerak nilai indikator rawak ini.

Khususnya, kaedah pengiraan indikator kitaran halus adalah:

smooth = (src + 2 * src[1] + 2 * src[2] + src[3]) / 6

Di mana src adalah data harga input, seperti harga penutupan. Indikator ini menggabungkan harga semasa dan harga 3 tempoh masa sebelumnya untuk membina isyarat kitaran yang lancar.

Berdasarkan indikator yang diluruskan, kitaran indikator rawak dapat dikira:

cycle := (1 - .5 * alpha) * (1 - .5 * alpha) * 
           (smooth - 2 * smooth[1] + smooth[2]) + 
           2 * (1 - alpha) * cycle[1] - 
           (1 - alpha) * (1 - alpha) * cycle[2]

Rumus pengiraan ini merangkumi pembahagian dua-kelas untuk isyarat kitaran selepas kelancaran, dan nilai dua kitaran sebelumnya. α adalah faktor kelancaran, yang menyesuaikan berat nilai kitaran baru dan lama.

Akhirnya, berdasarkan indikator kitaran ini, nilai 1 yang berjumlah 0-100 dikira secara rawak dan berdasarkan purata bergerak 10 hari nilai 1 membina nilai isyarat. Isyarat perdagangan dikeluarkan apabila isyarat melintasi atau melintasi purata bergerak isyarat.

Kelebihan Strategik

Strategi ini menggabungkan penunjuk rawak dan penunjuk kitaran, menggabungkan kelebihan kedua-duanya. Strategi ini dapat menangkap peluang berkala dengan lebih baik dan dengan itu mendapat kesan yang lebih baik daripada strategi trend seperti purata bergerak yang mudah.

Kelebihan utama:

  1. Penunjuk kitaran dapat mengenal pasti corak kitaran, penunjuk rawak menyediakan masa perdagangan xFB
  2. Reka bentuk penunjuk ganda yang berkesan menapis isyarat palsu
  3. Parameter yang boleh disesuaikan untuk persekitaran pasaran yang berbeza

Risiko Strategik

Strategi ini mempunyai risiko utama:

  1. Tetapan parameter yang tidak betul boleh menyebabkan transaksi yang kerap, meningkatkan yuran transaksi dan kos slippage
  2. Tidak dapat menangani pasaran dengan harga yang berfluktuasi secara berkesan, yang boleh menyebabkan kerugian yang besar
  3. Penunjuk kitaran sangat bergantung pada penyesuaian kurva, penyesuaian yang tidak betul boleh menghasilkan isyarat yang salah

Risiko boleh dikawal dengan cara seperti menetapkan parameter yang dioptimumkan, menetapkan titik henti, dan menggabungkan dengan penapis lain.

Arah pengoptimuman strategi

Strategi ini juga boleh dioptimumkan dalam beberapa arah:

  1. Penapisan isyarat digabungkan dengan petunjuk teknikal lain, seperti Brinks, RSI, dan lain-lain, untuk mengurangkan isyarat salah
  2. Menyertai mekanisme penarikan diri yang beradaptasi, dengan penyesuaian stop loss secara dinamik mengikut tahap turun naik pasaran
  3. Menggunakan kaedah pembelajaran mesin untuk mengoptimumkan parameter secara automatik untuk menyesuaikan diri dengan pasaran secara dinamik
  4. Mengoptimumkan penggunaan dana, meningkatkan kecekapan penggunaan dana melalui cara seperti leverage, keuntungan

ringkaskan

Strategi kitaran rawak Ells menggabungkan kelebihan indikator rawak dan indikator kitaran, mengawal risiko dengan berkesan melalui reka bentuk isyarat ganda, dan dapat memperoleh hasil yang lebih baik di pasaran yang lebih berkitar-kitar. Dengan pengoptimuman lanjut, strategi ini boleh menjadi strategi perdagangan kuantitatif yang disyorkan.

Kod sumber strategi
/*backtest
start: 2024-01-09 00:00:00
end: 2024-01-16 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Ehlers Stochastic Cyber Cycle Strategy",overlay=false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 1, commission_type = strategy.commission.percent, commission_value = 0.1)
src = input(hl2, title = "Source") 
alpha = input(.07, title = "Alpha")
lag = input(9, title = "Lag")
smooth = (src + 2 * src[1] + 2 * src[2] + src[3]) / 6
len = input(8, title = "Stochastic len")
cycle = na
if na(cycle[7])
    cycle := (src - 2 * src[1] + src[2]) / 4
else
    cycle := (1 - .5 * alpha) * (1 - .5 * alpha) * (smooth - 2 * smooth[1] + smooth[2]) + 2 * (1 - alpha) * cycle[1] - (1 - alpha) * (1 - alpha) * cycle[2]

value1 = stoch(cycle, cycle, cycle, len) / 100
value2 = 2 * ((4 * value1 + 3 * value1[1] + 2 * value1[2] + value1[3]) / 10 - 0.5)

signal = value2
oppositeTrade = input(true)
barsSinceEntry = 0
barsSinceEntry := nz(barsSinceEntry[1]) + 1
if strategy.position_size == 0
    barsSinceEntry := 0
if (crossover(signal, signal[1]) and not oppositeTrade) or (oppositeTrade and crossunder(signal, signal[1]))
    strategy.entry("Long", strategy.long)
    barsSinceEntry := 0
if (crossunder(signal, signal[1]) and not oppositeTrade) or (oppositeTrade and crossover(signal, signal[1]))
    strategy.entry("Short", strategy.short)
    barsSinceEntry := 0
if strategy.openprofit < 0 and barsSinceEntry > 8
    strategy.close_all()
    barsSinceEntry := 0
    
    
plot(0, title="ZeroLine", color=gray) 
plotSrc = signal
cyclePlot = plot(plotSrc, title = "CyberCycle", color = blue)
triggerPlot = plot(plotSrc[1], title = "Trigger", color = green)
fill(cyclePlot, triggerPlot, color = plotSrc < plotSrc[1] ? red : lime, transp = 50)