Pentingnya dan kepentingan backtesting tidak diragukan lagi. Apabila melakukan backtesting kuantitatif, strategi harus diletakkan dalam persekitaran sejarah yang sebenar dan sedekat mungkin. Jika beberapa butiran dalam persekitaran sejarah diabaikan, keseluruhan backtesting kuantitatif mungkin tidak sah.
Backtesting adalah setara dengan pemutaran data. Dengan memainkan semula data K-line sejarah dan melaksanakan peraturan perdagangan pasaran sebenar, seperti nisbah Sharpe, kadar retracement maksimum, kadar pulangan tahunan dan lengkung modal.github.com, yang boleh disesuaikan secara fleksibel.
FMZ Quant sebagai perisian perdagangan kuantitatif komersial, dilengkapi dengan enjin backtest berprestasi tinggi, menggunakan bingkai backtest for-loop (polling), untuk mengukur pengiraan dengan lebih cepat.
Mengambil strategi masa FMZ Quant
Dalam antara muka konfigurasi backtest, anda boleh menyesuaikannya mengikut keperluan sebenar anda. Seperti: menetapkan tempoh backtest, kitaran garisan K, jenis data (data tahap simulasi atau data tahap pasaran sebenar. Sebaliknya, kelajuan backtesting data tahap simulasi lebih cepat, backtesting data tahap pasaran sebenar lebih tepat). Di samping itu, anda juga boleh menetapkan yuran komisen untuk backtest dan dana awal akaun.
Klik pada perpustakaan dagangan
Di samping itu, jika anda mempunyai harga yang lebih rendah daripada harga yang ditetapkan, anda juga boleh menggunakan harga yang lebih rendah daripada harga yang ditetapkan.
Isi
Pilihan perdagangan spot adalah terutamanya untuk perdagangan cryptocurrency, apabila backtesting, simpan dalam tetapan lalai akan baik-baik saja.
Sebelum backtesting, tentukan strategi dagangan anda. Di sini kita mengambil strategi masa
// Calculate CMI indicator to distinguish between Oscillating and trend market
CMI:=ABS(C-REF(C,29))/(HHV(H,30)-LLV(L,30))*100;
// Define key prices
KOD:=(H+L+C)/3;
// In the Oscillating market, the closing price is greater than the key price is suitable for selling market, otherwise it is for buying market
BE:=IFELSE(C>KOD,1,0);
SE:=IFELSE(C<=KOD,1,0);
// Define 10-day ATR indicator
TR:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR10:=MA(TR,10);
// Define the highest and lowest price 3-day moving average
AVG3HI:=MA(H,3);
AVG3LO:=MA(L,3);
// Calculate the entry price of the Oscillating market
LEP:=IFELSE(C>KOD,O+ATR10*0.5,O+ATR10*0.75);
SEP:=IFELSE(C>KOD,O-ATR10*0.75,O-ATR10*0.5);
LEP1:=MAX(LEP,AVG3LO);
SEP1:=MIN(SEP,AVG3HI);
// Calculate the entry price of the trend market
UPBAND:=MA(C,50)+STD(C,50)*2;
DNBAND:=MA(C,50)-STD(C,50)*2;
// Calculate the quit price of the trend market
MA50:=MA(C,50);
// Oscillating strategy logic
CMI<20&&C>=LEP1,BK;
CMI<20&&C<=SEP1,SK;
CMI<20&&C>=AVG3HI,SP;
CMI<20&&C<=AVG3LO,BP;
// Trend strategy logic
CMI>=20&&C>=UPBAND,BK;
CMI>=20&&C<=DNBAND,SK;
CMI>=20&&C<=MA50,SP;
CMI>=20&&C>=MA50,BP;
AUTOFILTER;
Dalam antara muka backtesting simulasi, selepas mengkonfigurasi tetapan backtesting, klik pada butang Start Backtest, dan hasil backtesting akan dipaparkan dengan serta-merta selepas beberapa saat. Dalam log backtest, ia akan menunjukkan berapa banyak saat yang digunakan untuk backtest, log, dan jumlah transaksi. Maklumat akaun mencetak hasil akhir dari backtest strategi: purata keuntungan dan kerugian, keuntungan dan kerugian kedudukan, margin, yuran komisen dan anggaran pulangan.
Bar status merakam pelbagai dagangan, kedudukan, harga kedudukan, harga terkini, jenis isyarat dagangan sebelumnya, harga tertinggi dan terendah kedudukan, bilangan kemas kini serta maklumat modal dan masa. Di samping itu, dalam label keuntungan dan kerugian terapung, kurva dana terperinci akaun dipaparkan, dan penunjuk prestasi yang biasa digunakan juga termasuk: kadar pulangan, kadar pulangan tahunan, nisbah Sharpe, turun naik tahunan, dan kadar retracement maksimum, yang pada dasarnya dapat memenuhi kebanyakan keperluan pengguna.
Antara mereka, penunjuk prestasi yang paling penting adalah: nisbah Sharpe. Ia adalah semasa melaksanakan indeks komprehensif mempertimbangkan manfaat dan risiko, dan ia adalah indeks penting untuk mengukur produk dana. Secara umum, ia adalah berapa banyak risiko yang anda menanggung, setiap kali anda memperoleh keuntungan, jadi nilai nisbah Sharpe yang lebih tinggi, lebih baik.
Volatiliti tahunan, secara ringkasnya, memperkirakan pengamatan dalam jangka masa yang singkat akan berterusan sepanjang setahun. Ia adalah ukuran risiko dana, tetapi ia pasti bukan risiko penuh. Sebagai contoh, Strategi A mempunyai volatiliti yang lebih besar, tetapi ia telah turun naik, keuntungan adalah baik; Strategi B mempunyai volatiliti yang kecil, tetapi ia telah bergerak dengan mantap (() hampir tidak bergerak sama sekali.
Akhirnya, dalam maklumat log, rekod terperinci setiap situasi dagangan yang diperdagangkan semasa backtesting, termasuk masa tertentu dagangan, maklumat pertukaran, jenis kedudukan terbuka dan dekat, mekanisme pemadan pesanan enjin backtest, serta bilangan transaksi dan maklumat cetak.
Banyak kali, dan dalam kebanyakan kes, hasil backtesting akan jauh dari apa yang anda harapkan. Lagipun, strategi jangka panjang, stabil dan menguntungkan tidak begitu mudah untuk mendapatkan, yang memerlukan keupayaan anda untuk memahami pasaran.
Jika keputusan ujian belakang strategi anda kehilangan wang, jangan kecewa. Ini sebenarnya agak normal. periksa sama ada logik strategi salah ditafsirkan oleh kod, sama ada ia menggunakan beberapa parameter yang melampau, sama ada ia menggunakan terlalu banyak keadaan kedudukan pembukaan, dll.
Jika keputusan backtest strategi anda sangat baik, kurva pembiayaan adalah sempurna, dengan nisbah Sharpe lebih tinggi daripada 1. Sila jangan tergesa-gesa, Dalam kes ini, kebanyakan situasi menggunakan fungsi masa depan, mencuri harga, over-fit, atau tidak ada harga slippage ditambah, dll. Anda boleh menggunakan data luar sampel dan perdagangan pasaran sebenar simulasi untuk mengecualikan isu-isu ini.
Di atas adalah keseluruhan proses backtesting strategi dagangan, dapat dikatakan bahawa ia telah khusus untuk setiap butiran. Perlu diperhatikan bahawa backtesting data sejarah adalah persekitaran yang ideal di mana semua risiko diketahui. Oleh itu, yang terbaik adalah melalui pusingan pasar lembu dan beruang untuk masa backtesting strategi. Bilangan perdagangan yang berkesan tidak boleh kurang dari 100 kali, untuk mengelakkan beberapa bias yang terselamat.
Pasaran sentiasa dalam proses perubahan dan evolusi. Strategi backtesting bersejarah tidak bermakna masa depan akan sama. Ia bukan sahaja untuk membiarkan strategi mengatasi risiko yang mungkin diketahui dalam persekitaran backtesting, tetapi juga untuk menangani risiko yang tidak diketahui di masa depan. Oleh itu, sangat perlu untuk meningkatkan ketahanan risiko dan universaliti strategi.
Cuba tiru strategi dalam bahagian ini dan uji balik.
Cuba untuk meningkatkan dan mengoptimumkan strategi dalam bahagian ini berdasarkan pengalaman perdagangan anda.