
Strategi ini merancang strategi perdagangan siklus Els yang merampingkan sinyal perdagangan dengan menghitung sinyal harga yang telah diproses secara halus, dikombinasikan dengan teori indikator siklus yang dikemukakan oleh Ehlers. Strategi ini dapat secara efektif menyaring kebisingan pasar dan menghasilkan sinyal perdagangan yang lebih andal.
Sinyal harga awal src diproses dengan smooth kedua, yang menghasilkan sinyal yang halus.
Indikator siklus dihitung berdasarkan sinyal halus. Metode perhitungan adalah: cycle := (1 - .5 alpha) (1 - .5 alpha) (smooth - 2 smooth[1] + smooth[2]) + 2 (1 - alpha) cycle[1] - (1 - alpha) (1 - alpha) * cycle[2]
Dimana α adalah parameter smoothing.
di mana α2 adalah parameter kelancaran satu derajat.
Hal ini dilakukan dengan cara menghaluskan sinyal harga dengan cara kedua, sehingga bisa menyaring suara frekuensi tinggi dan membuat sinyal trading menjadi lebih dapat diandalkan.
Dengan menggunakan teori indikator siklus Els, titik-titik pergeseran tren pasar dapat diukur dengan lebih akurat.
Indeks tingkat pertama dengan halus menyaring sebagian dari kebisingan dalam indikator berputar, menghasilkan sinyal perdagangan yang lebih andal.
Seluruh proses strategi yang masuk akal, ilmiah, parameter optimasi ruang besar, kinerja hard disk yang sangat baik.
Seperti strategi indikator teknis lainnya, strategi ini juga lebih sensitif terhadap risiko sistematis pasar. Jika terjadi peristiwa black swan besar, kemungkinan kerugian yang lebih besar akan terjadi.
Karena proses perhitungan yang lebih rumit, pengaturan parameter yang tidak tepat dapat menyebabkan keterlambatan perhitungan, sehingga mempengaruhi efek hard drive. Perlu tes hati-hati untuk memastikan pengaturan parameter yang ilmiah.
Proses smoothing juga dapat menyebabkan sinyal trading terlambat dan mungkin tidak dapat menangkap titik pivot pasar tepat waktu, sehingga kehilangan peluang. Pengaturan yang diperlukan untuk mempertimbangkan parameter smoothing.
Anda dapat menguji berbagai jenis algoritma smoothing, seperti smoothing indeks, smoothing rata-rata, dan lain-lain, untuk menemukan solusi smoothing yang optimal.
Adaptive parameter adjustment mechanism dapat diperkenalkan untuk menyesuaikan parameter secara dinamis sesuai dengan kondisi pasar, meningkatkan keandalan strategi.
Anda dapat merancang strategi stop loss dan stop loss untuk mengurangi risiko kerugian tunggal dan mengunci keuntungan.
Model pembelajaran mesin dapat digabungkan dengan model lain untuk mengimplementasikan kombinasi model yang dapat digunakan untuk memfilter sinyal perdagangan lainnya.
Strategi ini dirancang untuk memperlancar sinyal perdagangan dengan strategi perdagangan siklus Els. Strategi ini dapat secara efektif memfilter kebisingan dan menghasilkan sinyal perdagangan yang lebih andal. Dengan ruang parameter yang lebih besar, kinerja disk yang baik. Dengan memperkenalkan mekanisme adaptasi, strategi stop loss, dan banyak lagi, Anda dapat meningkatkan stabilitas dan efektivitas strategi.
/*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)