Strategi Siklus Cyber Ehlers Penghalusan Sinyal

Penulis:ChaoZhang, Tanggal: 2024-02-19 10:42:34
Tag:

img

Gambaran umum

Strategi ini menghitung sinyal harga halus berdasarkan teori siklus siber yang diusulkan oleh Ehlers untuk merancang strategi perdagangan dengan sinyal perdagangan halus.

Prinsip Strategi

  1. Meluruskan sinyal harga aslinya src dengan meluruskan urutan kedua untuk mendapatkan sinyal meluruskan halus.

  2. Menghitung siklus indikator siklik berdasarkan sinyal yang dihaluskan. Siklus:= (1 - 0,5alpha) (1 - .5 alpha)(lurus - 2halus[1] + halus[2]) + 2(1 - alfa)siklus[1] - (1 - alfa)(1 - alfa) * siklus[2]

    dimana α adalah parameter perataan.

  3. Menghaluskan indikator siklik secara eksponensial dengan penghalusan urutan pertama untuk mendapatkan sinyal sinyal perdagangan akhir. sinyal: = alfa2Siklus + (1 - alfa2)nz ((sinyal[1])

    di mana α2 adalah parameter pelembab urutan pertama.

  4. Panjang ketika sinyal melintasi sinyal[1]; Singkat ketika sinyal melintasi sinyal[1].

Analisis Keuntungan

  1. Penghapusan urutan kedua dari sinyal harga dapat secara efektif menyaring kebisingan frekuensi tinggi dan membuat sinyal perdagangan lebih andal.

  2. Menerapkan teori siklus siber Ehlers dapat menentukan titik balik tren pasar dengan lebih akurat.

  3. Perataan eksponensial orde pertama menyaring sebagian dari kebisingan dalam indikator siklik untuk menghasilkan sinyal perdagangan yang lebih dapat diandalkan.

  4. Seluruh proses strategi masuk akal dan ilmiah, dengan ruang pengoptimalan parameter yang besar dan kinerja aktual yang sangat baik.

Analisis Risiko

  1. Seperti strategi indikator teknis lainnya, strategi ini juga relatif sensitif terhadap risiko pasar sistemik.

  2. Karena proses perhitungan yang kompleks, pengaturan parameter yang tidak tepat dapat menyebabkan keterlambatan perhitungan, sehingga mempengaruhi kinerja aktual. Parameter perlu diuji dengan cermat untuk memastikan pengaturan ilmiah dan wajar.

  3. Pengolahan yang lancar juga menyebabkan sinyal perdagangan yang tertinggal, yang mungkin tidak menangkap titik balik pasar tepat waktu, sehingga kehilangan peluang.

Arahan Optimasi

  1. Berbagai jenis algoritma perataan dapat diuji, seperti perataan eksponensial orde pertama, perataan rata-rata bergerak, dll, untuk menemukan skema perataan yang optimal.

  2. Mekanisme penyesuaian parameter adaptif dapat diperkenalkan untuk menyesuaikan parameter secara dinamis berdasarkan kondisi pasar untuk meningkatkan ketahanan strategi.

  3. Strategi stop loss dan take profit dapat dirancang untuk mengurangi risiko kerugian tunggal dan mengunci keuntungan pada saat yang sama.

  4. Ini dapat dikombinasikan dengan model pembelajaran mesin lainnya untuk mencapai portofolio model dan menggunakan model lain untuk menyaring sinyal perdagangan.

Ringkasan

Strategi ini merancang sinyal trading smoothing Ehlers strategi perdagangan siklus cyber melalui smoothing sinyal harga dan penghitungan indikator siklus cyber Ehlers. Ini dapat secara efektif menyaring kebisingan dan menghasilkan sinyal trading yang lebih dapat diandalkan. Pada saat yang sama, ruang parameter besar dan kinerja aktual baik. Dengan memperkenalkan mekanisme adaptif, strategi stop loss dan optimasi lainnya, stabilitas dan efektivitas strategi dapat ditingkatkan lebih lanjut.


/*backtest
start: 2024-01-19 00:00:00
end: 2024-02-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Ehlers 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

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]

alpha2 = 1 / (lag + 1)
signal = na
signal := alpha2 * cycle + (1 - alpha2) * nz(signal[1])
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)

Lebih banyak