Sistem MA Uhl adalah sistem crossover purata bergerak adaptif yang direka untuk mengatasi kekurangan sistem MA tradisional. Ia menggunakan purata bergerak pantas dan perlahan untuk menjana isyarat perdagangan, dengan MA perlahan menjadi MA yang diperbetulkan (CMA) yang pada asalnya dicadangkan oleh Andreas Uhl dan MA pantas menjadi langkah trend yang diperbetulkan (CTS) yang juga berdasarkan MA yang diperbetulkan. Sistem ini menyesuaikan parameter MA secara adaptif untuk mencapai isyarat perdagangan yang lebih boleh dipercayai.
Inti strategi ini terletak pada pengiraan garis Uhl MA dan CTS. Garis Uhl MA adalah peningkatan berbanding SMA tradisional, menggunakan varians (VAR) dan penyimpangan kuadrat sejarah (SECMA) untuk menyesuaikan berat antara SMA dan CMA sebelumnya. Apabila VAR kurang daripada SECMA, lebih banyak berat diberikan kepada SMA, jika tidak lebih berat diberikan kepada CMA. Ini membantu menapis beberapa bunyi bising dan menghasilkan MA yang lebih lancar. Garis CTS menggunakan pengiraan adaptif yang serupa berdasarkan harga SRC.
Logik crossover adalah sama dengan sistem MA tradisional. Isyarat beli dihasilkan apabila CTS melintasi di atas Uhl MA, dan isyarat jual apabila melintasi di bawah. Ini membentuk sistem dagangan MA adaptif.
Perbandingan dengan sistem crossover MA tradisional, kelebihan terbesar strategi ini adalah penggunaan MA adaptif, yang boleh menapis beberapa bunyi bising dan menghasilkan isyarat yang lebih boleh dipercayai di pasaran terhad.
Risiko utama strategi ini berasal dari peningkatan isyarat palsu dalam pasaran julat, kerana MAs adalah penunjuk mengikut trend secara semula jadi. Ini sebahagian besarnya disebabkan oleh pengiraan adaptif CMA, yang konvergen ke julat harga dalam penyatuan, menghasilkan isyarat yang tidak perlu. Penyesuaian parameter yang betul juga merupakan cabaran besar. Parameter yang tidak betul boleh menyebabkan perdagangan yang baik hilang atau peningkatan isyarat palsu.
Pengoptimuman yang berpotensi termasuk:
Meningkatkan pengiraan CMA untuk mengelakkan konvergensi di pasaran yang berbeza, misalnya menggunakan penunjuk lain.
Mengoptimumkan parameter melalui algoritma pengoptimuman pelbagai variasi seperti algoritma genetik.
Memperkenalkan stop loss untuk mengawal kerugian perdagangan tunggal.
Tambah penapis menggunakan penunjuk lain untuk mengelakkan perdagangan berlebihan dalam penyatuan, seperti ukuran turun naik, indeks RFM dll.
Mengoptimumkan pengurusan risiko termasuk saiz kedudukan, metrik risiko untuk mengawal risiko keseluruhan dengan lebih baik.
Sistem Uhl MA adalah strategi persilangan MA yang sangat inovatif. Berbanding dengan strategi tradisional, MA dinamik membantu mengurangkan isyarat palsu dan menangkap trend dengan lebih baik. Tetapi terdapat batasan dalam pasaran yang berbeza. Penambahbaikan lebih lanjut dalam metodologi pengiraan dan menambah penapis mempunyai potensi yang besar. Sementara itu, penyesuaian parameter dan kawalan risiko juga penting. Secara keseluruhan, strategi Uhl MA mempunyai potensi yang baik dan nilai penyelidikan yang bernilai penerokaan 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)