Adaptive Moving Average Crossover Strategy Berdasarkan Uhl MA

Penulis:ChaoZhang, Tanggal: 2023-09-19 22:06:42
Tag:

Gambaran umum

Sistem MA Uhl adalah sistem crossover rata-rata bergerak adaptif yang dirancang untuk mengatasi kekurangan sistem MA tradisional. Sistem ini menggunakan rata-rata bergerak cepat dan lambat untuk menghasilkan sinyal perdagangan, dengan MA lambat adalah MA yang dikoreksi (CMA) yang awalnya diusulkan oleh Andreas Uhl dan MA cepat adalah langkah tren yang dikoreksi (CTS) yang juga didasarkan pada MA yang dikoreksi.

Analisis Prinsip

Inti dari strategi ini terletak pada perhitungan garis Uhl MA dan CTS. Garis Uhl MA adalah peningkatan dari SMA tradisional, menggunakan varians (VAR) dan penyimpangan kuadrat historis (SECMA) untuk menyesuaikan secara adaptif bobot antara SMA dan CMA sebelumnya. Ketika VAR kurang dari SECMA, lebih banyak bobot ditempatkan pada SMA, jika tidak lebih banyak bobot ditempatkan pada CMA. Ini membantu menyaring beberapa kebisingan dan menghasilkan MA yang lebih halus. Garis CTS menggunakan perhitungan adaptif serupa berdasarkan harga SRC.

Logika crossover adalah sama dengan sistem MA tradisional. Sinyal beli dihasilkan ketika CTS melintasi di atas Uhl MA, dan sinyal jual ketika melintasi di bawahnya. Ini membentuk sistem perdagangan MA adaptif.

Analisis Keuntungan

Jika dibandingkan dengan sistem crossover MA tradisional, keuntungan terbesar dari strategi ini adalah penggunaan adaptif MA, yang dapat menyaring beberapa kebisingan dan menghasilkan sinyal yang lebih dapat diandalkan di pasar yang terikat jangkauan.

Analisis Risiko

Risiko utama dari strategi ini berasal dari peningkatan sinyal palsu di pasar kisaran, karena MAs adalah indikator trend-mengikuti alam. Hal ini sebagian besar disebabkan oleh perhitungan adaptif dari CMA, yang konvergen ke kisaran harga dalam konsolidasi, menghasilkan sinyal yang tidak perlu. penyesuaian parameter yang tepat juga merupakan tantangan besar. parameter yang tidak tepat dapat menyebabkan hilangnya perdagangan yang baik atau peningkatan sinyal palsu.

Saran Optimalisasi

Optimasi potensial meliputi:

  1. Meningkatkan perhitungan CMA untuk menghindari konvergensi di pasar yang berbeda, misalnya menggunakan indikator lain.

  2. Mengoptimalkan parameter melalui algoritma optimasi multi-varian seperti algoritma genetik.

  3. Memperkenalkan stop loss untuk mengendalikan kerugian perdagangan tunggal.

  4. Tambahkan filter menggunakan indikator lain untuk menghindari perdagangan berlebihan dalam konsolidasi, seperti ukuran volatilitas, indeks RFM dll.

  5. Mengoptimalkan manajemen risiko termasuk ukuran posisi, metrik risiko untuk mengontrol risiko secara keseluruhan dengan lebih baik.

Kesimpulan

Sistem Uhl MA adalah strategi crossover MA yang sangat inovatif. Dibandingkan dengan strategi tradisional, MA dinamis membantu mengurangi sinyal palsu dan menangkap tren dengan lebih baik. Tetapi keterbatasan ada di berbagai pasar. Perbaikan lebih lanjut dalam metodologi perhitungan dan menambahkan filter memiliki potensi besar. Sementara itu, penyesuaian parameter dan kontrol risiko juga penting. Secara keseluruhan, strategi Uhl MA memiliki potensi yang baik dan nilai penelitian yang layak dieksplorasi lebih lanjut.

[/trans]


/*backtest
start: 2023-01-01 00:00:00
end: 2023-06-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © alexgrover

//@version=4
strategy("Uhl MA System - Strategy Analysis")
length = input(100),mult = input(1.),src = input(close)
//----
out = 0., cma = 0., cts = 0.
Var = variance(src,length)           ,sma = sma(src,length)
secma = pow(nz(sma - cma[1]),2)      ,sects = pow(nz(src - cts[1]),2) 
ka = Var < secma ? 1 - Var/secma : 0 ,kb = Var < sects ? 1 - Var/sects : 0
cma := ka*sma+(1-ka)*nz(cma[1],src)  ,cts := kb*src+(1-kb)*nz(cts[1],src)
//----
if crossover(cts,cma)
    strategy.entry("Buy", strategy.long)
if crossunder(cts,cma)
    strategy.entry("Sell", strategy.short)
//----
cap = 50000
eq = strategy.equity
rmax = 0.
rmax := max(eq,nz(rmax[1]))
//----
css = eq > cap ? #0cb51a : #e65100
a = plot(eq,"Equity",#2196f3,2,transp=0)
b = plot(rmax,"Maximum",css,2,transp=0)
fill(a,b,css,80)

Lebih banyak