Mukadimah
Mengapa belajar kursus ini?
Apakah yang anda perolehi daripada mempelajari kursus ini? Pertama sekali, kursus ini adalah berdasarkan bahasa pengaturcaraan JavaScript dan Python Bahasa hanyalah teknologi, dan akhirnya kita masih perlu menggunakan teknologi ini kepada industri. Perdagangan kuantitatif ialah industri baru muncul yang kini berada dalam tahap pembangunan pesat dan mempunyai permintaan yang besar untuk bakat.
Melalui kajian sistematik kursus ini, anda boleh mempunyai pemahaman yang lebih mendalam tentang bidang perdagangan kuantitatif Jika anda seorang pelajar yang sedang membuat persediaan untuk memasuki bidang perdagangan kuantitatif, ia juga akan membantu anda Jika anda seorang atau peminat pelaburan niaga hadapan, maka Dagangan kuantitatif boleh membantu sepenuhnya perdagangan subjektif anda Dengan membangunkan strategi dagangan, anda boleh membuat keuntungan dalam pasaran kewangan dan mengembangkan saluran dan platform pelaburan dan pengurusan kewangan anda.
Sebelum itu, izinkan saya bercakap tentang pengalaman perdagangan peribadi saya. Saya bukan jurusan kewangan, tetapi jurusan statistik. Dia mula melibatkan diri dalam perdagangan saham subjektif ketika dia seorang pelajar Kemudian, secara kebetulan, dia menjadi pengamal perdagangan kuantitatif dana ekuiti swasta domestik, terutamanya terlibat dalam penyelidikan dan pembangunan strategi.
Saya telah berada dalam bulatan perdagangan selama lebih daripada sepuluh tahun dan telah membangunkan pelbagai jenis strategi. Falsafah pelaburan saya ialah: kawalan risiko di atas segalanya, fokus pada pulangan mutlak. Tajuk kursus kami ialah: Dari perdagangan kuantitatif kepada pengurusan aset – pembangunan strategi CTA untuk pulangan mutlak.
1. Logik membuat wang dengan strategi CTA niaga hadapan
1.1 Memahami CTA Niaga Hadapan
Sesetengah orang mungkin bertanya apa itu CTA Apakah sebenarnya CTA? CTA dipanggil penasihat perdagangan komoditi di luar negara dan biasanya dipanggil pengurus pelaburan di negara ini. CTA tradisional mengumpulkan dana sejumlah besar pelabur, kemudian mempercayakan mereka kepada institusi pelaburan profesional, dan akhirnya melabur dalam niaga hadapan indeks saham, niaga hadapan komoditi dan niaga hadapan bon perbendaharaan melalui penasihat dagangan (iaitu, CTA).
Tetapi sebenarnya, apabila pasaran niaga hadapan global terus berkembang dan berkembang, konsep CTA juga sentiasa berkembang, dan skopnya jauh melebihi niaga hadapan tradisional. Ia bukan sahaja boleh melabur dalam pasaran niaga hadapan, tetapi juga melabur dalam pasaran kadar faedah, pasaran saham, pasaran pertukaran asing, pasaran pilihan, dll. Selagi produk ini mempunyai jumlah data sejarah tertentu, strategi CTA yang sepadan boleh dibangunkan berdasarkan data sejarah ini.
Sebelum tahun 1980-an, teknologi perdagangan elektronik tidak begitu matang Pada masa itu, kebanyakan pedagang menilai trend masa depan komoditi niaga hadapan dengan melukis penunjuk teknikal secara manual seperti penunjuk Williams, KDJ, RSI, MACD, CCI, dll. Kemudian, beberapa peniaga menyediakan dana CTA khas untuk membantu pelanggan mengurus aset. Sehinggalah popularisasi perdagangan elektronik pada tahun 1980-an barulah dana CTA dalam erti kata sebenar mula muncul.
Perubahan dalam Skala Pengurusan Dana CTA

Unit: Berbilion dolar AS
Jika kita melihat carta di atas, terutamanya dengan peningkatan dagangan kuantitatif, saiz dana CTA global telah meningkat daripada AS$130.6 bilion pada tahun 2005 kepada lebih daripada AS$300 bilion pada tahun 2015. Selain itu, strategi CTA juga telah menjadi salah satu strategi pelaburan arus perdana dana lindung nilai global.
Prestasi dana CTA juga telah meningkat bersama-sama dengan skalanya Mari kita lihat Indeks CTA Barlake dalam rajah di bawah Indeks CTA Barlake ialah penanda aras industri untuk penasihat perdagangan komoditi global. Dari akhir tahun 1979 hingga akhir tahun 2016, pulangan terkumpul Indeks Dana CTA Barlake adalah setinggi 28.95 kali, dengan pulangan tahunan sebanyak 9.59%, nisbah Sharpe 0.37 dan pengeluaran maksimum sebanyak 15.66%.
Kerana dalam portfolio peruntukan aset, strategi CTA biasanya mengekalkan korelasi yang sangat rendah dengan strategi lain. Seperti yang ditunjukkan dalam bulatan merah dalam rajah di bawah, semasa pasaran menanggung saham global dari tahun 2000 hingga 2002 dan krisis gadai janji subprima global pada tahun 2008, Indeks Dana CTA Barlake bukan sahaja tidak jatuh tetapi juga mencapai pulangan positif Apabila krisis berlaku dalam pasaran saham dan bon, CTA boleh memberikan pendapatan yang kukuh. Di samping itu, kita juga dapat melihat bahawa tahap keuntungan Indeks CTA Komoditi Barclays sejak 1980 sentiasa lebih tinggi daripada S&P 500, dan pengeluarannya juga jauh lebih rendah daripada S&P 500.
Perkembangan CTA di negara saya hanya berlaku dalam dekad yang lalu, tetapi momentumnya sangat kuat Ini kebanyakannya disebabkan oleh persekitaran dagangan niaga hadapan komoditi domestik yang agak terbuka, ambang modal dagangan yang rendah, sistem margin yang membolehkan panjang dan pendek dua. perdagangan cara, dan yuran transaksi yang rendah , seni bina teknikal bursa adalah lebih maju daripada saham dan lebih mudah untuk berdagang dalam sistem, dsb.
Sejak 2010, dana CTA telah wujud terutamanya dalam bentuk dana ekuiti persendirian. Memandangkan dasar domestik secara beransur-ansur membuka skop pelaburan akaun khas dana, dana CTA mula wujud dalam bentuk akaun khas dana Kaedah operasinya yang lebih telus dan terbuka juga telah menjadi alat yang diperlukan untuk peruntukan aset untuk lebih ramai pelabur.
Seperti yang ditunjukkan dalam rajah di atas, sama ada dari segi kesukaran untuk memulakan, ambang modal, kaedah pelaksanaan strategi dagangan, dan dok API, strategi CTA juga lebih sesuai untuk pedagang individu berbanding strategi dagangan lain. Kontrak niaga hadapan domestik adalah sangat kecil Sebagai contoh, satu lot jagung atau makanan kacang soya boleh diniagakan untuk beberapa ribu yuan, dengan hampir tiada ambang modal Selain itu, kerana beberapa strategi CTA datang daripada analisis teknikal tradisional, ia agak mudah digunakan berbanding dengan strategi lain.
Proses reka bentuk strategi CTA juga agak mudah Pertama, data sejarah diproses secara awal dan kemudian dimasukkan ke dalam model kuantitatif Model kuantitatif merangkumi strategi perdagangan yang dibentuk oleh pemodelan matematik, reka bentuk pengaturcaraan dan alat lain, dan menjana isyarat dagangan dengan mengira. dan menganalisis data ini. Sudah tentu, dalam pembangunan sebenar, ia tidak semudah yang ditunjukkan dalam gambar di atas Ini hanya untuk memberi semua orang konsep keseluruhan.
1.2 Jenis Strategi CTA Niaga Hadapan
Dari perspektif strategi perdagangan, strategi CTA juga dipelbagaikan: ia boleh menjadi strategi trend atau strategi arbitraj ia boleh menjadi strategi jangka sederhana dan panjang dalam kitaran besar atau strategi jangka pendek dalam masa sehari boleh berdasarkan; analisis teknikal atau analisis asas ia boleh menjadi perdagangan subjektif atau perdagangan sistematik.
Terdapat kaedah klasifikasi yang berbeza untuk strategi CTA Menurut kaedah perdagangan, ia boleh dibahagikan kepada: perdagangan subjektif dan perdagangan sistematik Pembangunan strategi CTA di luar negara agak maju, dan strategi CTA perdagangan sistematik telah mencapai hampir 100%. Mengikut kaedah analisis, ia boleh dibahagikan kepada: analisis asas dan analisis teknikal. Mengikut sumber pendapatan, ia boleh dibahagikan kepada: perdagangan trend dan perdagangan swing.
Secara amnya, dalam keseluruhan pasaran dagangan, strategi aliran menyumbang kira-kira 70% daripada strategi CTA, min strategi pengembalian menyumbang kira-kira 25% dan strategi balas arah aliran atau pembalikan arah aliran menyumbang kira-kira 5%. Antaranya, strategi trend, yang menyumbang bahagian terbesar, boleh dibahagikan kepada: perdagangan frekuensi tinggi, perdagangan intrahari, perdagangan jangka sederhana pendek, dan perdagangan jangka sederhana panjang mengikut tempoh pegangan.
Strategi pembuatan pasaran frekuensi tinggi
Pada masa ini terdapat dua strategi perdagangan frekuensi tinggi arus perdana di pasaran, satu ialah strategi membuat pasaran frekuensi tinggi, dan satu lagi ialah strategi arbitraj frekuensi tinggi. Strategi membuat pasaran adalah untuk menyediakan kecairan dalam pasaran dagangan Maksudnya, dalam pasaran dagangan dengan pembuat pasaran, jika seseorang ingin membeli atau menjual, pembuat pasaran mesti memastikan pesanannya dapat dilaksanakan. Jika kecairan tidak mencukupi dalam pasaran dan pesanan tidak dapat dilaksanakan, pembuat pasaran mesti membeli dan menjual rakan niaga orang lain.
Strategi arbitraj frekuensi tinggi
Arbitraj frekuensi tinggi ialah perdagangan dua saham berkorelasi tinggi atau gabungan ETF dan ETF. Berdasarkan kaedah pengiraan ETF, kaedah yang sama boleh digunakan untuk mengira harga jangkaan ETF. Harga indeks ETF boleh ditolak daripada harga jangkaan ETF untuk mendapatkan perbezaan harga Biasanya, perbezaan harga ini akan beroperasi dalam saluran harga Jika perbezaan harga menembusi saluran atas dan bawah, anda boleh menukar perbezaan harga ini dan menunggu untuk perbezaan harga kembali untuk mendapatkan keuntungan daripadanya.
Strategi dalam sehari
Kalau ikut maksud literal, selagi jawatan itu tidak dipegang semalaman, ia boleh dipanggil strategi dagangan hari. Memandangkan tempoh pegangan dagangan intraday agak pendek, biasanya selepas memasuki pasaran, seseorang tidak boleh membuat keuntungan serta-merta dan akan keluar dari pasaran dengan cepat. Oleh itu, kaedah perdagangan ini membawa risiko pasaran yang lebih rendah. Walau bagaimanapun, kerana pasaran berubah dengan cepat dalam tempoh yang singkat, strategi intraday biasanya mempunyai keperluan yang lebih tinggi untuk pedagang.
Strategi jangka sederhana dan panjang
Secara teori, semakin lama tempoh pegangan, semakin besar kapasiti strategi dan semakin rendah nisbah pulangan risiko. Terutama dalam urus niaga institusi, kerana kapasiti strategi jangka pendek adalah terhad dan dana besar tidak boleh masuk dan keluar pasaran dalam tempoh yang singkat, lebih banyak strategi jangka sederhana dan panjang akan diperuntukkan. Biasanya tempoh pegangan adalah beberapa hari, bulan, atau lebih lama lagi.
Data Strategi CTA
Secara umumnya, strategi CTA menggunakan data minit, jam dan harian sebagai objek penyelidikan, termasuk harga pembukaan, harga tertinggi, harga terendah, harga penutup, volum dagangan, dsb. Hanya sebilangan kecil strategi CTA yang menggunakan data tandakan. data kedalaman seperti harga belian, harga jualan, volum belian, volum jualan, dan lain-lain dalam data L2.
Apabila bercakap tentang idea asas strategi CTA, perkara pertama yang kita fikirkan ialah penunjuk teknikal tradisional, kerana terdapat lebih banyak bahan rujukan awam dalam hal ini, logiknya biasanya lebih mudah, dan kebanyakannya adalah berdasarkan prinsip statistik. Contohnya, pelbagai penunjuk teknikal yang semua orang biasa ketahui: MA, SMA, EMA, MACD, KDJ, RSI, BOLL, W&R, DMI, ATR, SAR, BIAS, OBV dan sebagainya.
Terdapat juga beberapa model dagangan klasik di pasaran yang boleh digunakan sebagai rujukan dan dipertingkatkan, termasuk: gabungan purata berbilang bergerak, DualThrust, R-Breaker, Kaedah Dagangan Penyu, Kaedah Dagangan Grid, dsb.
Semua di atas adalah strategi dagangan berdasarkan analisis teknikal tradisional Prosesnya adalah untuk mengekstrak faktor atau keadaan jual beli dengan kelebihan kebarangkalian berdasarkan data sejarah dan konsep dagangan yang betul, dan menganggap bahawa pasaran akan terus mempunyai corak ini pada masa hadapan. Akhir sekali, gunakan kod Laksanakan strategi dagangan dan automatik sepenuhnya perdagangan anda. Membuka kedudukan, mengambil untung, menghentikan kerugian, menambah kedudukan, mengurangkan kedudukan, dll., ini secara amnya tidak memerlukan campur tangan manusia. Malah, ia adalah strategi membeli tinggi dan menjual rendah dengan mengambil kesempatan daripada pekali autokorelasi positif siri masa harga.
Kelebihan terbesar strategi CTA ialah ia boleh memperoleh pulangan mutlak tanpa mengira sama ada pasaran semasa meningkat atau menurun, terutamanya apabila pasaran berubah dengan pantas antara pasaran kenaikkan dan menurun, atau apabila arah aliran pasaran jelas Kebaikan daripada strategi ini sangat besar Pendek kata, ada trend Dalam keuntungan ada. Walau bagaimanapun, jika pasaran berada dalam keadaan tidak menentu atau arah aliran tidak jelas, strategi ini boleh mengakibatkan pembelian pada tahap tinggi dan jualan pada tahap rendah, sentiasa bergerak ke sana ke mari untuk menghentikan kerugian.
1.3 Prinsip Keuntungan Strategi CTA Niaga Hadapan
Sebab mengapa strategi CTA niaga hadapan boleh menghasilkan wang adalah disebabkan oleh sebab berikut:
- Pergerakan harga adalah refleksif dan sentiasa berterusan dalam bentuk arah aliran. Apabila pelabur melihat harga meningkat, mereka membeli masuk, menyebabkan harga meningkat lebih jauh. Perkara yang sama berlaku untuk kejatuhan harga. Memandangkan pelabur cenderung untuk berkelakuan lebih tidak rasional, kadangkala kita melihat bahawa harga naik ke tahap tidak normal apabila ia naik dan turun ke tahap tidak normal apabila ia jatuh.
- Setiap pelabur mempunyai toleransi yang tidak simetri untuk nisbah untung dan rugi, dan mempunyai toleransi risiko yang berbeza. Bagi kebanyakan pelabur runcit, mereka lebih suka memilih kaedah dagangan mengikut arah aliran yang lebih konservatif, dan pasaran lebih cenderung untuk bergerak dalam arah aliran.
- Pembentukan harga ditentukan oleh urus niaga, dan urus niaga didorong oleh orang Walau bagaimanapun, sifat manusia sukar untuk diubah, itulah sebabnya corak tetap muncul berulang kali. Ini menunjukkan bahawa ia mungkin berkesan pada masa hadapan.
Satu lagi ciri perdagangan mengikut arah aliran ialah anda kehilangan sejumlah kecil wang apabila tiada pasaran, dan membuat banyak wang apabila pasaran datang Walau bagaimanapun, setiap orang yang telah melakukan dagangan tahu bahawa pasaran berada dalam keadaan yang tidak menentu pada masa itu, dan hanya dalam masa yang kecil ia menjadi trend. Oleh itu, strategi mengikut arah aliran mempunyai kadar kemenangan yang lebih rendah apabila berdagang, tetapi secara keseluruhan keuntungan dan kerugian setiap transaksi adalah agak besar.
Memandangkan strategi mengikut arah aliran mempunyai pulangan yang tidak stabil, banyak institusi pelaburan akan membina portfolio pelaburan menggunakan pelbagai jenis dan pelbagai strategi, yang juga akan merangkumi sejumlah strategi pembalikan. Strategi pembalikan ialah siri masa harga mempunyai pekali autokorelasi negatif, yang bermaksud menjual tinggi dan membeli rendah.
Korelasi antara CTA dan aset tradisional

Jika kita melihat carta di atas, secara teori, apabila berhadapan dengan pelbagai perubahan harga pasaran pada masa yang sama, pelbagai strategi dengan gaya yang berbeza atau korelasi yang rendah akan menghasilkan isyarat dagangan yang kadangkala sama dan kadangkala berbeza. Apabila keluk hasil berbilang bertindih, pulangan keseluruhan saling melengkapi, dan keluk hasil menjadi lebih rata, dengan itu mengurangkan turun naik pulangan.
Dari sudut pandangan di atas, boleh disimpulkan bahawa daripada membangunkan strategi peringkat induk, adalah lebih baik untuk membangunkan beberapa sub-strategi biasa-biasa Jadi bagaimana untuk mengawal strategi ini? Di sini kita boleh merujuk kepada algoritma hutan rawak dalam pembelajaran mesin Hutan rawak bukan algoritma bebas, ia adalah rangka kerja membuat keputusan yang merangkumi pelbagai pokok keputusan. Ia bersamaan dengan strategi induk di atas sub-strategi pepohon keputusan. Atur dan kawal kelompok dasar kanak-kanak melalui dasar ibu bapa.
Seterusnya, kita perlu merangka strategi induk Kita boleh menilai kecairan, keuntungan dan kestabilan pelbagai komoditi dalam keseluruhan pasaran niaga hadapan komoditi, menapis kombinasi niaga hadapan komoditi dengan turun naik yang rendah, dan kemudian menjalankan pemilihan yang berkecuali industri, turun naik keseluruhan boleh dikurangkan lagi Akhirnya, portfolio pelbagai jenis niaga hadapan komoditi sebenar dibina melalui pemadanan nilai pasaran untuk dagangan.
Setiap produk juga boleh dikonfigurasikan dengan berbilang strategi parameter Anda boleh memilih gabungan parameter yang berprestasi baik dalam ujian belakang Apabila arah aliran pasaran jelas, strategi berbilang parameter biasanya berfungsi secara konsisten, yang bersamaan dengan menambah kedudukan pasaran yang tidak menentu, strategi berbilang parameter boleh digunakan untuk melaraskan prestasi strategi. Ini boleh mengurangkan lagi kadar pulangan maksimum portfolio sambil mengekalkan kadar pulangan keseluruhan tidak berubah.
2. Kes Strategi CTA Niaga Hadapan Klasik
Newton pernah berkata: Jika saya dapat melihat lebih jauh daripada yang lain, itu kerana saya berdiri di atas bahu gergasi.
Strategi CTA yang tersedia secara umum di pasaran termasuk strategi purata bergerak, strategi Bollinger Band, Kaedah Dagangan Penyu, strategi momentum, strategi arbitraj, dsb. Strategi perdagangan kuantitatif semuanya mempunyai satu ciri, iaitu mereka akan mati dalam keadaan terang Apabila strategi itu diumumkan, secara beransur-ansur akan menjadi tidak berkesan. Tetapi ini tidak menjejaskan pembelajaran kita tentang strategi ini dan menggunakan intipatinya, supaya kita boleh melihat masalah dari perspektif berdiri di atas bahu gergasi.
2.1 Analisis asas niaga hadapan (inventori, asas, harga)
Analisis asas tidak perlu bimbang tentang arah aliran harga jangka pendek. Ia percaya bahawa nilai akhirnya akan dicerminkan dalam harga. Ia lebih kepada menganalisis faktor di sebalik harga dan menilai berapa nilai variasi ini. Secara umumnya, kaedah analisis atas ke bawah diguna pakai: daripada faktor makro, faktor pelbagai dan faktor lain.
Jika dilihat pada gambar di atas, terdapat banyak faktor yang mempengaruhi harga komoditi, sebanyak berpuluh-puluh barang kesemuanya Jika dipecahkan lagi, terdapat berpuluh-puluh lagi, dan data ini sentiasa berubah. Ia adalah di luar kemampuan pelabur runcit individu untuk mendapatkan jumlah data yang begitu besar, apatah lagi menjalankan analisis objektif.
Sebenarnya, analisis asas niaga hadapan komoditi tidak bermakna menganalisis semua faktor Kita hanya perlu memahami elemen teras analisis asas untuk mencari corak daripada maklumat yang kompleks.
Faktor makro
Data makroekonomi adalah kompleks dan boleh diubah Setiap hari dan setiap saat, banyak data ekonomi dikeluarkan oleh ahli politik, bank pusat, dan bank pelaburan di pelbagai negara, sama ada rasmi dan tidak rasmi. Selain daripada krisis politik dan ekonomi, analisis makro adalah bahan yang baik untuk perbualan tetapi tidak begitu praktikal. Peter Lynch, pakar pengurusan dana terkenal Amerika, pernah menyatakan pendapatnya: "Saya menghabiskan tidak lebih daripada lima belas minit setiap tahun untuk menganalisis arah aliran ekonomi."
Faktor Kepelbagaian
Dalam analisis asas, analisis produk terutamanya menganalisis premium dan diskaun, hubungan penawaran dan permintaan, inventori komoditi, keuntungan industri, dll. Boleh dikatakan bahawa menguasai analisis faktor produk niaga hadapan komoditi pada asasnya boleh menentukan kebanyakan trend pasaran.
Rakan-rakan yang telah melakukan perdagangan niaga hadapan tahu bahawa niaga hadapan komoditi domestik boleh dibahagikan kepada: produk perindustrian dan produk pertanian. Kaedah analisis untuk produk perindustrian dan produk pertanian adalah berbeza Kami akan menerangkan dari dua aspek penawaran dan permintaan Bagi produk perindustrian, bekalan adalah agak stabil Melainkan terdapat kejayaan teknologi yang besar, tidak mungkin kapasiti pengeluaran akan peningkatan dalam jangka pendek Terdapat perubahan besar dari semasa ke semasa, jadi faktor yang mempengaruhi harga produk industri terutamanya permintaan. Permintaan produk pertanian secara relatifnya stabil Dalam jangka masa panjang, terdapat perubahan dalam permintaan produk pertanian, tetapi dalam jangka pendek, permintaan terhadap hasil pertanian cenderung stabil terutamanya bekalan.
Oleh itu, mengikut undang-undang ekonomi, hubungan penawaran dan permintaanlah yang akhirnya menentukan harga sesuatu komoditi Secara teori, selagi kita boleh mendapatkan data penawaran dan permintaan, kita boleh menilai harga komoditi itu pada masa hadapan. Bagi produk industri, data bekalan agak mudah diperoleh, tetapi data permintaan sukar diperolehi Bagi hasil pertanian, data permintaan agak mudah diperolehi, tetapi data bekalan sukar diperoleh.
Malah, kita boleh pergi lebih jauh dan melakukan penolakan Hasil bersama penawaran dan permintaan dalam pasaran ekonomi adalah inventori Kita boleh menggunakan data inventori untuk menilai kekuatan hubungan antara penawaran dan permintaan pasaran. Jika inventori komoditi tertentu sangat tinggi, ini bermakna kuasa bekalan pasaran lebih besar daripada permintaan, dan harga komoditi itu akan jatuh jika keadaan luaran kekal tidak berubah. Jika inventori komoditi tertentu adalah sangat rendah, ini bermakna kuasa permintaan pasaran lebih besar daripada penawaran, dan harga komoditi itu tidak lama lagi akan meningkat jika keadaan luaran kekal tidak berubah.
Di samping menganalisis inventori komoditi, ia juga perlu untuk menganalisis perbezaan harga antara pasaran spot dan pasaran hadapan, yang merupakan asas yang dipanggil. Jika harga niaga hadapan lebih besar daripada harga spot, kami memanggilnya sebagai premium jika harga niaga hadapan kurang daripada harga spot, kami memanggilnya diskaun. Menurut sistem penghantaran niaga hadapan, pada tarikh penghantaran niaga hadapan, harga niaga hadapan harus sama dengan harga spot.
Tidak kira sama ada ia premium atau diskaun, disebabkan oleh kekangan sistem penghantaran niaga hadapan, secara teori harga niaga hadapan pada tarikh penghantaran harus sama dengan harga spot. Apabila tarikh penghantaran menghampiri, harga spot dan harga niaga hadapan akan cenderung untuk konsisten, satu ialah pulangan niaga hadapan ke tempat, satu lagi ialah pulangan lani kepada niaga hadapan.
Berdasarkan prinsip di atas, kita boleh menggunakan inventori dan asas untuk menentukan harga niaga hadapan masa hadapan secara serentak. Jika inventori sesuatu komoditi adalah rendah, dan jika harga hadapan adalah jauh lebih rendah daripada harga spot, maka kita boleh membuat kesimpulan bahawa permintaan dalam pasaran spot adalah lebih besar daripada penawaran, dan kebarangkalian kenaikan harga spot masa depan adalah tinggi. Apabila tarikh penghantaran semakin hampir, harga niaga hadapan akan meningkat untuk sepadan dengan harga semerta, dan kebarangkalian harga niaga hadapan meningkat pada masa hadapan adalah lebih besar.
Akhir sekali, kami telah menentukan hala tuju harga masa hadapan yang paling mungkin melalui inventori dan asas, tetapi tiada titik belian dan jualan yang lebih tepat, jadi analisis teknikal diperlukan untuk memberikan isyarat keluar masuk yang jelas. Keseluruhan rangka kerja analisis asas ialah: inventori rendah + diskaun mendalam + isyarat kenaikan harga analisis teknikal = panjang inventori tinggi + premium besar + isyarat penurunan harga analisis teknikal = pendek;
2.2 Peraturan Perdagangan Penyu
Apabila bercakap tentang strategi perdagangan, kita perlu bercakap tentang Peraturan Perdagangan Penyu yang mewakili. Peraturan Dagangan Penyu datang daripada salah satu eksperimen yang paling terkenal dalam sejarah perdagangan, apabila spekulator komoditi Richard Dennis ingin mengetahui sama ada pedagang yang hebat dilahirkan atau dibuat. Untuk tujuan ini, pada tahun 1983 beliau merekrut 13 orang dan mengajar mereka konsep asas perdagangan niaga hadapan, serta kaedah dan prinsip dagangannya sendiri. Pelajar-pelajar ini dipanggil "penyu laut".
Dalam tempoh empat tahun akan datang, Penyu mencapai pulangan kompaun tahunan purata sebanyak 80%. Dennis juga menunjukkan bahawa menggunakan sistem dan peraturan yang mudah, orang yang mempunyai sedikit atau tiada pengalaman perdagangan boleh menjadi pedagang yang cemerlang. Walau bagaimanapun, beberapa Penyu menjual Peraturan Perdagangan Penyu di laman web untuk keuntungan. Untuk menghentikan tingkah laku ini, dua Penyu asal, Curtis Faith dan Arthur Maddock, memutuskan untuk menjadikan Peraturan Perdagangan Penyu tersedia kepada orang ramai secara percuma di tapak web.
Selepas kebenaran terbongkar, orang ramai mendapati bahawa Peraturan Perdagangan Penyu menggunakan Saluran Donchian yang dioptimumkan dan menggunakan penunjuk ATR untuk pengurusan kedudukan. Selepas berdekad-dekad ujian sejarah, ia telah menjadi kaedah perdagangan yang boleh digunakan oleh pelabur runcit biasa untuk membuat wang dengan mudah, dan ia masih berkesan untuk produk tertentu.
Prinsip Teras Penyu
- Dapatkan kelebihan: Cari strategi dagangan yang mempunyai nilai jangkaan positif kerana ia akan menjana pulangan positif dalam jangka masa panjang.
- Urus risiko: Kawal risiko dan berpegang teguh pada pendirian anda, jika tidak, anda mungkin tidak dapat melihat hari apabila anda mencipta hasil.
- Komitmen yang tidak berbelah bahagi: Hanya dengan melaksanakan strategi anda yang tidak berbelah bahagi anda boleh benar-benar mencapai hasil yang sistematik.
- Kesederhanaan dan kejelasan: Dalam jangka panjang, sistem ringkas lebih berdaya maju daripada sistem yang kompleks.
Jadi seterusnya, mari kita lihat apa sebenarnya yang dikatakan oleh Peraturan Perdagangan Penyu?
- Pasaran - perkara yang hendak dibeli dan dijual, pada asasnya, di mana pasaran untuk berdagang The Turtles adalah peniaga niaga hadapan, dan mereka hanya memilih pasaran dengan volum dagangan yang besar dan kecairan yang tinggi, kerana memilih pasaran dengan volum dagangan yang rendah akan meningkatkan risiko kerugian. wang. Kegelinciran tambahan apabila keluar dari pasaran juga akan menyebabkan anda terlepas banyak peluang trend.
- Saiz kedudukan - Berapa banyak untuk membeli atau menjual adalah bahagian yang sangat penting dalam keseluruhan strategi, tetapi kebanyakan orang biasanya mengabaikan atau memperlakukannya secara tidak betul. Peraturan Perdagangan Penyu menggunakan ATR, atau penunjuk Average True Range, untuk mengira kedudukan pembukaan, menambah isyarat dan isyarat henti rugi. Ini adalah reka bentuk yang sangat bijak, yang bertujuan untuk menyesuaikan saiz kedudukan mengikut turun naik mutlak pasaran Apabila turun naik pasaran kuat, saiz kedudukan berkurangan, dan apabila turun naik pasaran lemah, saiz kedudukan meningkat. . Ia mula-mula mentakrifkan unit, formula unit ini ialah: (jumlah aset*1%)/ATR. Kedudukan awal ialah 1 unit Walaupun penurunan produk pada hari tersebut mencapai tahap ATR, kerugian pada hari tersebut boleh dikawal dalam 1% daripada jumlah aset. Jika harga naik sebanyak 0.5 unit, kedudukan beli akan dinaikkan sebanyak 1 unit, sehingga maksimum 4 unit.
- Memasuki pasaran - Kemasukan Penyu ke dalam pasaran menarik di Saluran Donchian Apabila harga naik di atas harga tertinggi 20 atau 55 K-line sebelumnya, ia memasuki pasaran untuk melakukan longs harga terendah daripada 20 atau 55 K-lines sebelumnya, ia memasuki pasaran untuk melakukan long , hanya memasuki pasaran dan pendek. Masukkan dagangan apabila isyarat muncul, tanpa menunggu penutupan atau K-line seterusnya.
- Stop loss - Dalam jangka masa panjang, urus niaga tanpa stop loss tidak akan berjaya, tetapi kebanyakan pedagang berpegang pada posisi kehilangan dengan harapan pasaran akan berbalik. The Turtles mempunyai peraturan yang ketat tentang masa untuk keluar dari posisi rugi Jika posisi beli dipegang dan harga jatuh sebanyak 2 unit, posisi beli akan ditutup dengan stop loss. Jika anda memegang posisi jual dan harga naik sebanyak 2 unit, kedudukan jual akan ditutup dengan stop loss.
- Ambil untung - Ambil untung Penyu bermakna kehilangan banyak keuntungan terapung, yang juga merupakan bahagian yang sukar diterima oleh ramai peniaga. Jika anda sedang memegang kedudukan beli dan harga jatuh di bawah landasan bawah Saluran Donchian 10 hari, tutup semua kedudukan beli jika anda sedang memegang kedudukan jual dan harga naik di atas landasan atas 10 hari; Saluran Donchian, tutup semua kedudukan jual .
Daripada ini kita dapat melihat bahawa walaupun Peraturan Perdagangan Penyu kelihatan mudah, sebenarnya, mereka telah membentuk prototaip sistem perdagangan sebenar Ia merangkumi semua aspek sistem perdagangan yang lengkap dan tidak meninggalkan ruang untuk imaginasi subjektif dan membuat keputusan, yang memungkinkan untuk mengeluarkan kelebihan operasi sistem yang diprogramkan. Termasuk: peraturan masuk dan keluar, pengurusan dana dan kawalan risiko, dsb.
Kelebihan terbesar Kaedah Perdagangan Penyu ialah ia membantu kami mewujudkan kaedah dagangan yang berkesan Ia adalah strategi yang menggabungkan pembukaan kelompok, henti untung dan henti rugi dinamik, dan mengikuti trend pasaran, terutamanya penggunaan nilai dan kedudukan ATR. pengurusan. Konsep ini patut dipelajari. Sudah tentu, ia juga mempunyai masalah biasa dengan strategi mengikut arah aliran, iaitu mengambil keuntungan yang tidak direalisasikan. Keuntungan terapung yang diperoleh daripada mengejar kenaikan berkemungkinan besar akan hilang disebabkan kejatuhan mendadak berikutnya. Ia sangat kukuh dalam arah aliran besar, tetapi berprestasi rendah dalam pasaran yang tidak menentu.
3. Pembangunan praktikal strategi CTA niaga hadapan
3.1 Pembangunan strategi aliran CTA berdasarkan bahasa Mai
Pada akhir abad yang lalu, kaedah perdagangan ajaib mula menjadi popular dalam bidang pelaburan kewangan di Amerika Syarikat Selepas beribu-ribu orang mengamalkannya, orang ramai mendapati bahawa kaedah ini berkesan dan mempunyai nilai praktikal yang besar , ia diiktiraf oleh ramai pakar pelaburan Ia diiktiraf oleh peniaga profesional dan masih boleh digunakan dengan sempurna untuk hampir semua bidang pelaburan kewangan, sama ada pertukaran asing, emas, saham, niaga hadapan, minyak mentah, atau indeks dan bon kaedah operasi huru-hara.
Perkataan huru-hara pada asalnya merujuk kepada perihalan keadaan alam semesta yang kacau-bilau. Ideanya adalah bahawa hasilnya tidak dapat dielakkan, tetapi ia tidak dapat dikira kerana pengetahuan sedia ada, kerana pengiraan itu sendiri juga mengubah hasilnya, dan maksimum atau minimum. keputusan mungkin muncul pada akhirnya, tetapi tidak ada hasil yang tidak dapat dielakkan. Ini hampir sama dengan berdagang pasaran, di mana peserta menukar pasaran semasa mereka menganalisis pasaran dan membeli dan menjual dagangan. Pasaran berubah-ubah selama-lamanya Apabila peserta mengetahui tentang bentuk pasaran baharu, pasaran juga mengetahui bahawa ia diiktiraf oleh peserta, dan kemudian mutasi berlaku. Dan ia pasti akan cenderung untuk bermutasi ke arah yang tidak diketahui oleh peserta. Ia mempunyai kebijaksanaan yang mencukupi untuk menghalang peserta daripada menangkap coraknya yang berubah Dengan kata lain, pasaran tidak stabil, dan pemahaman tentang masa lalu pasaran tidak boleh mewakili masa depan.
Kaedah pengendalian Chaos ialah satu set lengkap idea pelaburan, strategi perdagangan dan isyarat masuk dan keluar yang dicipta oleh Bill Williams. Pada masa ini, ramai pelabur antarabangsa menggunakan kaedah operasi huru-hara untuk mengambil bahagian dalam urus niaga pasaran Disebabkan perkembangan pasaran kewangan negara saya yang ketinggalan dan fakta bahawa teori huru-hara adalah idea yang agak baru, terdapat beberapa orang di China yang mempelajari kaedah operasi huru-hara. Memandangkan Kaedah Operasi Chaos ialah strategi dagangan yang sangat universal yang boleh digunakan untuk hampir semua bidang pelaburan kewangan, termasuk saham, bon, niaga hadapan, pertukaran asing dan mata wang digital, kursus ini menggunakan versi ringkas Strategi Chaos sebagai titik permulaan. . Meningkatkan minat dan pulangan pelaburan semua orang.
Seperti namanya, asas teori kaedah operasi huru-hara adalah teori huru-hara, yang dicadangkan oleh ahli meteorologi Edward Lorenz dan merupakan salah satu penemuan saintifik yang paling hebat pada akhir abad ke-20. Dialah yang mencadangkan "kesan rama-rama" yang terkenal. Bill Williams secara kreatif menggunakan teori huru-hara dalam bidang pelaburan kewangan, dan menggabungkannya dengan geometri fraktal, dinamik tak linear dan disiplin lain untuk mencipta satu siri penunjuk analisis teknikal yang sangat berkesan.
Keseluruhan kaedah operasi huru-hara terdiri daripada lima dimensi (penunjuk teknikal):
Mari lihat gambar di atas. The Alligator Line ialah satu set garis imbangan yang menggunakan geometri fraktal dan dinamik tak linear. daripada purata bergerak biasa. Seterusnya, mari lihat cara untuk mentakrifkan baris Alligator dalam bahasa Mai:
// 参数
N1:=11;
N2:=21;
// 定义价格中线
N3:=N1+N2;
N4:=N2+N3;
HL:=(H+L)/2;
// 鳄鱼线
Y^^SMA(REF(HL,N3),N4,1);
R:=SMA(REF(HL,N2),N3,1);
G:=SMA(REF(HL,N1),N2,1);
Pertama, kami menentukan dua parameter luaran N1 dan N2, dan kemudian mengira purata HL harga tertinggi dan harga terendah berdasarkan parameter luaran Kemudian, kami mengira purata HL dengan parameter yang berbeza masing-masing kitaran kecil garis tengah untuk purata keluar semula, gigi adalah purata tempoh sederhana garis tengah, dan rahang adalah purata tempoh besar garis tengah. Dalam strategi ini, kami menggunakan rahang.
Konsep fraktal ditakrifkan dengan jelas dalam Kaedah Operasi Chaos Kita boleh menggunakan analogi: buka tapak tangan anda dengan jari anda menghadap ke atas jari dan ibu jari di sebelah kanan mewakili kawasan tidak tercedera garisan tinggi baru. Fraktal asas terdiri daripada 5 garis K ini. Kemudian anda boleh menentukan fraktal menggunakan kod berikut:
// 分形
TOP_N:=BARSLAST(REF(H,2)=HHV(H,5))+2;
BOTTOM_N:=BARSLAST(REF(L,2)=LLV(L,5))+2;
TOP:=REF(H,TOP_N);
BOTTOM:=REF(L,BOTTOM_N);
MAX_YRG^^MAX(MAX(Y,R),G);
MIN_YRG^^MIN(MIN(Y,R),G);
TOP_FRACTAL^^VALUEWHEN(H>=MAX_YRG,TOP);
BOTTOM_FRACTAL^^VALUEWHEN(L<=MIN_YRG,BOTTOM);
Selepas mengira garis Alligator dan fraktal, kita boleh menulis strategi operasi huru-hara mudah berdasarkan dua syarat ini, menggunakan set purata bergerak wajaran eksponen sebagai harga penanda aras untuk mengira garis Alligator dan penunjuk fraktal. Sudah tentu, strategi operasi huru-hara asal adalah lebih rumit. Kodnya adalah seperti berikut:
// 如果当前无多单,并且收盘价升破上分形,并且上分形在鳄鱼线上方时,多头开仓
BKVOL=0 AND C>=TOP_FRACTAL AND TOP_FRACTAL>MAX_YRG,BPK(1);
// 如果当前无空单,并且收盘价跌破下分形,并且下分形在鳄鱼线下方时,空头开仓
SKVOL=0 AND C<=BOTTOM_FRACTAL AND BOTTOM_FRACTAL<MIN_YRG,SPK(1);
// 如果收盘价跌破鳄鱼的下巴时,多头平仓
C<Y,SP(BKVOL);
// 如果收盘价升破鳄鱼的下巴时,空头平仓
C>Y,BP(SKVOL);
Untuk memudahkan pemahaman, saya telah menyertakan ulasan terperinci dalam kod Kita boleh menyenaraikan logik perdagangan strategi ini seperti berikut:
- Buka kedudukan beli: Jika tiada pesanan panjang pada masa ini, dan harga penutup menembusi fraktal atas, dan fraktal atas berada di atas garis Alligator.
- Buka kedudukan jual: jika tiada pesanan pendek pada masa ini, dan harga penutup jatuh di bawah fraktal bawah, dan fraktal bawah berada di bawah garis Alligator.
- Keluar dari kedudukan panjang: Jika harga penutup jatuh di bawah rahang Alligator.
- Keluar dari kedudukan jual: Jika harga penutup menembusi di atas Rahang Alligator.
Seterusnya, mari kita lihat hasil ujian belakang strategi operasi huru-hara mudah ini. Untuk menjadikan ujian belakang lebih dekat dengan persekitaran dagangan sebenar, yuran urus niaga ditetapkan kepada dua kali ganda daripada pertukaran, dan kegelinciran 2 lompatan ditambah untuk kedudukan pembukaan dan penutupan. Jenis data untuk ujian belakang ialah indeks rebar, jenis dagangan ialah rebar utama berterusan, dan kedudukan pembukaan ditetapkan pada 1 lot. Di bawah ialah laporan prestasi ujian belakang awal pada tahap 1 jam.
Berdasarkan keluk modal dan data prestasi ujian belakang, strategi ini menunjukkan prestasi yang baik dan keluk modal keseluruhan terus meningkat. Walau bagaimanapun, ciri pasaran rebar telah berubah sejak akhir 2016, daripada trend unilateral turun naik tinggi sebelum ini kepada pelbagai turun naik. Berdasarkan keluk modal, keuntungan jelas lemah sejak 2017.
Ringkasnya, intipati kaedah operasi huru-hara adalah untuk mencari titik perubahan Anda tidak perlu bimbang tentang bagaimana pasaran berjalan, atau sama ada ia adalah kejayaan yang benar atau salah Jika anda menembusi fraktal, anda boleh masuk pasaran secara langsung. Jangan sekali-kali cuba meramalkan pasaran, tetapi jadilah pemerhati dan pengikut.
3.2 Pembangunan strategi arbitraj CTA berdasarkan bahasa JavaScript
Dalam bukunya "The Alchemy of Finance" yang ditulis pada tahun 1987, Soros pernah mengemukakan cadangan penting: Saya percaya bahawa harga pasaran sentiasa salah dalam erti kata ia berat sebelah terhadap masa depan. Beliau percaya bahawa hipotesis kecekapan pasaran hanyalah andaian teori Sebenarnya, peserta pasaran tidak selalu rasional, dan pada setiap masa, adalah mustahil untuk peserta mendapatkan sepenuhnya dan mentafsir semua maklumat secara objektif Makluman, maklum balas setiap orang adalah berbeza. Dengan kata lain, harga itu sendiri sudah termasuk jangkaan peserta pasaran yang salah, jadi harga pasaran sentiasa salah pada dasarnya. Ini mungkin sumber keuntungan bagi penimbang tara.
Berdasarkan prinsip di atas, kita tahu bahawa dalam pasaran niaga hadapan yang tidak cekap, kesan pasaran ke atas kontrak penghantaran dalam tempoh yang berbeza tidak selalu disegerakkan, dan penetapan harganya tidak berkesan sepenuhnya. Kemudian, berdasarkan harga kontrak penghantaran subjek dagangan yang sama dalam tempoh yang berbeza, jika terdapat perbezaan harga yang besar antara kedua-dua harga, anda boleh membeli dan menjual kontrak niaga hadapan tempoh yang berbeza pada masa yang sama untuk menjalankan arbitraj merentas tempoh.
Seperti niaga hadapan komoditi, mata wang digital juga mempunyai gabungan kontrak arbitraj merentas tempoh yang dikaitkan dengannya. Contohnya, dalam pertukaran OkEX, terdapat: ETC Weekly, ETC Dwiweekly dan ETC Quarterly. Sebagai contoh, katakan perbezaan harga antara ETC mingguan dan ETC suku tahunan kekal sekitar 5 untuk masa yang lama. Jika spread mencecah 7 pada hari tertentu, kami menjangkakan spread akan kembali kepada 5 pada satu ketika pada masa hadapan. Kemudian anda boleh menjual ETC mingguan dan membeli ETC setiap suku tahun untuk memendekkan spread. sebaliknya.
Walaupun perbezaan harga ini wujud, arbitraj manual selalunya melibatkan banyak ketidakpastian disebabkan oleh operasi manual yang memakan masa, ketepatan yang lemah dan kesan perubahan harga. Daya tarikan arbitraj kuantitatif terletak pada menangkap peluang arbitraj melalui model kuantitatif dan merumuskan strategi perdagangan arbitraj, serta secara automatik meletakkan pesanan dagangan kepada pertukaran melalui algoritma yang diprogramkan, supaya dapat menangkap peluang dengan cepat dan tepat serta memperoleh keuntungan dengan cekap dan stabil.
Kursus ini akan mengajar anda cara menggunakan Platform Dagangan Kuantitatif Inventor dan kontrak hadapan ETC dalam pertukaran OkEX dalam perdagangan mata wang digital, dan menggunakan strategi arbitraj yang mudah untuk menunjukkan cara untuk menangkap peluang arbitraj segera dan merebut setiap peluang untuk melihat Dapatkan keuntungan sementara melindung nilai kemungkinan risiko.
Mencipta Strategi Arbitraj Rentas Tempoh Mata Wang Kripto
Kesukaran: Normal
Persekitaran Strategik
- Subjek transaksi: Ethereum Classic (ETC)
- Data perbezaan harga: ETC mingguan - ETC suku tahunan (ujian kointegrasi ditinggalkan)
- Kitaran dagangan: 5 minit
- Padanan kedudukan: 1:1
- Jenis urus niaga: Produk yang sama tempoh silang
Logik Strategi
- Syarat pembukaan spread panjang: Jika akaun semasa tidak mempunyai kedudukan dan spread adalah kurang daripada trek boll bawah, pergi long pada spread. Iaitu: beli ETC untuk minggu ini dan jual ETC untuk suku tersebut.
- Syarat untuk membuka kedudukan spread pendek: Jika akaun semasa tidak mempunyai kedudukan dan spread lebih besar daripada trek atas boll, pendekkan spread. Iaitu: jual ETC untuk minggu dan beli ETC untuk suku tersebut.
- Syarat untuk menutup spread panjang: Jika akaun semasa memegang kedudukan belian mingguan dalam ETC dan kedudukan pendek suku tahunan dalam ETC, dan spread lebih besar daripada trek tengah boll, spread panjang akan ditutup. Iaitu: jual ETC untuk minggu dan beli ETC untuk suku tersebut.
- Syarat untuk menutup spread pendek: Jika akaun semasa memegang kedudukan pendek untuk ETC minggu ini dan kedudukan panjang untuk ETC pada suku tersebut, dan spread kurang daripada trek tengah boll, spread pendek akan ditutup. Iaitu: beli ETC untuk minggu ini dan jual ETC untuk suku tersebut.
Di atas ialah penerangan ringkas tentang logik strategi arbitraj merentas tempoh mata wang digital Jadi bagaimana anda melaksanakan idea anda dalam program ini? Kami cuba membina rangka kerja pada Platform Dagangan Kuantitatif Pencipta terlebih dahulu.
function Data() {} // 基础数据函数
Data.prototype.mp = function () {} // 持仓函数
Data.prototype.boll = function () {} // 指标函数
Data.prototype.trade = function () {} // 下单函数
Data.prototype.cancelOrders = function () {} // 撤单函数
Data.prototype.isEven = function () {} // 处理单只合约函数
Data.prototype.drawingChart = function () {} // 画图函数
function onTick() {
var data = new Data(tradeTypeA, tradeTypeB); // 创建一个基础数据对象
var accountStocks = data.accountData.Stocks; // 账户余额
var boll = data.boll(dataLength, timeCycle); // 计算boll技术指标
data.trade(); // 计算交易条件下单
data.cancelOrders(); // 撤单
data.drawingChart(boll); // 画图
data.isEven(); // 处理持有单个合约
}
//入口函数
function main() {
while (true) { // 进入轮询模式
onTick(); // 执行onTick函数
Sleep(500); // 休眠0.5秒
}
}
Bayangkan bagaimana proses transaksi kita dalam perdagangan penyelia? Tiada perbezaan penting dalam perdagangan sistem, ia tidak lebih daripada: mendapatkan data, mengira data, membuat pesanan, dan memproses selepas membuat pesanan. Perkara yang sama berlaku dalam program Pertama, program akan melaksanakan fungsi utama pada baris 20. Ini adalah konvensyen Apabila program melengkapkan prapemprosesan strategi dagangan (jika ada), ia akan memasuki mod gelung tak terhingga, iaitu,. mod Undian bulat Dalam mod pengundian, fungsi onTick akan dilaksanakan berulang kali.
Kemudian dalam fungsi onTick, kami mempunyai proses perdagangan dalam perdagangan subjektif: mula-mula dapatkan data harga asas, kemudian dapatkan baki akaun, kemudian hitung penunjuk, kemudian mula mengira keadaan dagangan dan buat pesanan, dan akhirnya pemprosesan selepas meletakkan pesanan itu, termasuk: Batalkan pesanan, lukis gambar dan proses kontrak tunggal.
Dengan membandingkan idea strategik dan proses perdagangan, anda boleh membina rangka kerja strategi dengan mudah. Keseluruhan strategi boleh dipermudahkan kepada tiga langkah:
- Pemprosesan pra-urus niaga.
- Dapatkan dan kira data.
- Buat pesanan dan kendalikan tindakan susulan.
Selepas rangka kerja strategi dagangan dibina, anda perlu mengisi kod perincian yang diperlukan dalam rangka kerja strategi berdasarkan proses dagangan sebenar dan butiran transaksi.
1. Pemprosesan pra-urus niaga
1. Isytiharkan pembolehubah global yang diperlukan
- Isytiharkan objek carta untuk mengkonfigurasi carta
var chart = {} - Panggil fungsi Carta untuk memulakan carta
var ObjChart = Chart ( chart ) - Isytihar tatasusunan kosong untuk menyimpan jujukan perbezaan harga
var bars = [] - Isytiharkan pembolehubah untuk merekodkan cap masa data sejarah
var oldTime = 0
2. Konfigurasikan parameter luaran strategi
var tradeTypeA = "this_week"; // 套利A合约
var tradeTypeB = "quarter"; // 套利B合约
var dataLength = 10; //指标周期长度
var timeCycle = 1; // K线周期
var name = "ETC"; // 币种
var unit = 1; // 下单量
3. Tentukan fungsi pemprosesan data
- Fungsi data asas: Data ( )
Cipta Data pembina dan tentukan sifat dalamannya. Termasuk: data akaun, data kedudukan, cap masa data K-line, harga bida/tanya kontrak A/B arbitraj dan spread arbitraj ke hadapan/terbalik.
function Data(tradeTypeA, tradeTypeB) { // 传入套利A合约和套利B合约
this.accountData = _C(exchange.GetAccount); // 获取账户信息
this.positionData = _C(exchange.GetPosition); // 获取持仓信息
var recordsData = _C(exchange.GetRecords); //获取K线数据
exchange.SetContractType(tradeTypeA); // 订阅套利A合约
var depthDataA = _C(exchange.GetDepth); // 套利A合约深度数据
exchange.SetContractType(tradeTypeB); // 订阅套利B合约
var depthDataB = _C(exchange.GetDepth); // 套利B合约深度数据
this.time = recordsData[recordsData.length - 1].Time; // 获取最新数据时间
this.askA = depthDataA.Asks[0].Price; // 套利A合约卖一价
this.bidA = depthDataA.Bids[0].Price; // 套利A合约买一价
this.askB = depthDataB.Asks[0].Price; // 套利B合约卖一价
this.bidB = depthDataB.Bids[0].Price; // 套利B合约买一价
// 正套价差(合约A卖一价 - 合约B买一价)
this.basb = depthDataA.Asks[0].Price - depthDataB.Bids[0].Price;
// 反套价差(合约A买一价 - 合约B卖一价)
this.sabb = depthDataA.Bids[0].Price - depthDataB.Asks[0].Price;
}
- Dapatkan fungsi kedudukan: mp ( )
Lintas keseluruhan tatasusunan kedudukan dan kembalikan bilangan kedudukan kontrak dan arah yang ditentukan Jika tiada, kembalikan palsu
Data.prototype.mp = function (tradeType, type) {
var positionData = this.positionData; // 获取持仓信息
for (var i = 0; i < positionData.length; i++) {
if (positionData[i].ContractType == tradeType) {
if (positionData[i].Type == type) {
if (positionData[i].Amount > 0) {
return positionData[i].Amount;
}
}
}
}
return false;
}
- K-line dan fungsi penunjuk: boll ( )
Mensintesis urutan K-line baharu berdasarkan data sebaran arbitraj ke hadapan/terbalik. Dan mengembalikan data rel atas, rel tengah dan rel bawah yang dikira oleh penunjuk boll.
Data.prototype.boll = function (num, timeCycle) {
var self = {}; // 临时对象
// 正套价差和反套价差中间值
self.Close = (this.basb + this.sabb) / 2;
if (this.timeA == this.timeB) {
self.Time = this.time;
} // 对比两个深度数据时间戳
if (this.time - oldTime > timeCycle * 60000) {
bars.push(self);
oldTime = this.time;
} // 根据指定时间周期,在K线数组里面传入价差数据对象
if (bars.length > num * 2) {
bars.shift(); // 控制K线数组长度
} else {
return;
}
var boll = TA.BOLL(bars, num, 2); // 调用talib库中的boll指标
return {
up: boll[0][boll[0].length - 1], // boll指标上轨
middle: boll[1][boll[1].length - 1], // boll指标中轨
down: boll[2][boll[2].length - 1] // boll指标下轨
} // 返回一个处理好的boll指标数据
}
- Fungsi pesanan: perdagangan ( )
Masukkan nama kontrak pesanan dan jenis pesanan, kemudian buat pesanan pada harga pertimbangan, dan kembalikan hasilnya selepas membuat pesanan. Memandangkan perlu untuk membuat dua pesanan dalam arah yang berbeza pada masa yang sama, harga beli/jual ditukar dalam fungsi mengikut nama kontrak pesanan.
Data.prototype.trade = function (tradeType, type) {
exchange.SetContractType(tradeType); // 下单前先重新订阅合约
var askPrice, bidPrice;
if (tradeType == tradeTypeA) { // 如果是A合约下单
askPrice = this.askA; // 设置askPrice
bidPrice = this.bidA; // 设置bidPrice
} else if (tradeType == tradeTypeB) { // 如果是B合约下单
askPrice = this.askB; // 设置askPrice
bidPrice = this.bidB; // 设置bidPrice
}
switch (type) { // 匹配下单模式
case "buy":
exchange.SetDirection(type); // 设置下单模式
return exchange.Buy(askPrice, unit);
case "sell":
exchange.SetDirection(type); // 设置下单模式
return exchange.Sell(bidPrice, unit);
case "closebuy":
exchange.SetDirection(type); // 设置下单模式
return exchange.Sell(bidPrice, unit);
case "closesell":
exchange.SetDirection(type); // 设置下单模式
return exchange.Buy(askPrice, unit);
default:
return false;
}
}
- Batalkan fungsi pesanan: cancelOrder ()
Dapatkan pelbagai pesanan yang tidak dipenuhi dan batalkan satu demi satu. Dan jika ada perintah yang tidak dipenuhi, ia kembali palsu, dan jika tidak ada perintah yang tidak dipenuhi, ia kembali benar.
Data.prototype.cancelOrders = function () {
Sleep(500); // 撤单前先延时,因为有些交易所你懂的
var orders = _C(exchange.GetOrders); // 获取未成交订单数组
if (orders.length > 0) { // 如果有未成交的订单
for (var i = 0; i < orders.length; i++) { //遍历未成交订单数组
exchange.CancelOrder(orders[i].Id); //逐个取消未成交的订单
Sleep(500); //延时0.5秒
}
return false; // 如果取消了未成交的单子就返回false
}
return true; //如果没有未成交的订单就返回true
}
- Mengendalikan memegang satu kontrak: isEven()
Apabila berurusan dengan situasi satu kaki dalam perdagangan arbitraj, kami hanya menutup semua kedudukan untuk mengendalikannya. Sudah tentu, anda juga boleh menukar kepada kaedah pesanan susulan.
Data.prototype.isEven = function () {
var positionData = this.positionData; // 获取持仓信息
var type = null; // 转换持仓方向
// 如果持仓数组长度余2不等于0或者持仓数组长度不等于2
if (positionData.length % 2 != 0 || positionData.length != 2) {
for (var i = 0; i < positionData.length; i++) { // 遍历持仓数组
if (positionData[i].Type == 0) { // 如果是多单
type = 10; // 设置下单参数
} else if (positionData[i].Type == 1) { // 如果是空单
type = -10; // 设置下单参数
}
// 平掉所有仓位
this.trade(positionData[i].ContractType, type, positionData[i].Amount);
}
}
}
- Fungsi lukisan: drawingChart ( )
Panggil kaedah ObjChart.add() untuk melukis data pasaran dan data penunjuk yang diperlukan dalam carta: trek atas, trek tengah, trek bawah dan spread positif/negatif.
Data.prototype.drawingChart = function (boll) {
var nowTime = new Date().getTime();
ObjChart.add([0, [nowTime, boll.up]]);
ObjChart.add([1, [nowTime, boll.middle]]);
ObjChart.add([2, [nowTime, boll.down]]);
ObjChart.add([3, [nowTime, this.basb]]);
ObjChart.add([4, [nowTime, this.sabb]]);
ObjChart.update(chart);
}
4. Dalam fungsi masuk utama (), jalankan kod pra-urus niaga kod ini hanya dijalankan sekali selepas program bermula. termasuk:
- Tapis maklumat yang kurang penting dalam konsol
SetErrorFilter ( ) - Tetapkan mata wang digital untuk didagangkan
exchange.IO ( ) - Kosongkan carta yang dilukis sebelum ini sebelum program bermula
ObjChart.reset ( ) - Kosongkan maklumat bar status sebelumnya sebelum program bermula
LogProfitReset ( )
Selepas mentakrifkan prapemprosesan praperdagangan di atas, kami akan meneruskan ke langkah seterusnya, memasuki mod pengundian dan melaksanakan fungsi onTick() berulang kali. Dan tetapkan masa tidur apabila Sleep() mengundi, kerana sesetengah API pertukaran mata wang kripto mempunyai had akses terbina dalam dalam tempoh masa tertentu.
function main() {
// 过滤控制台中不是很重要的信息
SetErrorFilter("429|GetRecords:|GetOrders:|GetDepth:|GetAccount|:Buy|Sell|timeout|Futures_OP");
exchange.IO("currency", name + '_USDT'); //设置要交易的数字货币币种
ObjChart.reset(); //程序启动前清空之前绘制的图表
LogProfitReset(); //程序启动前清空之前的状态栏信息
while (true) { // 进入轮询模式
onTick(); // 执行onTick函数
Sleep(500); // 休眠0.5秒
}
}
2. Mendapat dan mengira data
- Dapatkan objek data asas, baki akaun dan data penunjuk boll untuk digunakan dalam logik dagangan.
function onTick() {
var data = new Data(tradeTypeA, tradeTypeB); // 创建一个基础数据对象
var accountStocks = data.accountData.Stocks; // 账户余额
var boll = data.boll(dataLength, timeCycle); // 获取boll指标数据
if (!boll) return; // 如果没有boll数据就返回
}
3. Buat pesanan dan susulan
- Mengikut logik strategi di atas, laksanakan operasi beli dan jual. Pertama, ia menentukan sama ada harga dan syarat penunjuk dipenuhi, kemudian menentukan sama ada keadaan kedudukan dipenuhi, dan akhirnya melaksanakan fungsi pesanan perdagangan ().
// 价差说明
// basb = (合约A卖一价 - 合约B买一价)
// sabb = (合约A买一价 - 合约B卖一价)
if (data.sabb > boll.middle && data.sabb < boll.up) { // 如果sabb高于中轨
if (data.mp(tradeTypeA, 0)) { // 下单前检测合约A是否有多单
data.trade(tradeTypeA, "closebuy"); // 合约A平多
}
if (data.mp(tradeTypeB, 1)) { // 下单前检测合约B是否有空单
data.trade(tradeTypeB, "closesell"); // 合约B平空
}
} else if (data.basb < boll.middle && data.basb > boll.down) { // 如果basb低于中轨
if (data.mp(tradeTypeA, 1)) { // 下单前检测合约A是否有空单
data.trade(tradeTypeA, "closesell"); // 合约A平空
}
if (data.mp(tradeTypeB, 0)) { // 下单前检测合约B是否有多单
data.trade(tradeTypeB, "closebuy"); // 合约B平多
}
}
if (accountStocks * Math.max(data.askA, data.askB) > 1) { // 如果账户有余额
if (data.basb < boll.down) { // 如果basb价差低于下轨
if (!data.mp(tradeTypeA, 0)) { // 下单前检测合约A是否有多单
data.trade(tradeTypeA, "buy"); // 合约A开多
}
if (!data.mp(tradeTypeB, 1)) { // 下单前检测合约B是否有空单
data.trade(tradeTypeB, "sell"); // 合约B开空
}
} else if (data.sabb > boll.up) { // 如果sabb价差高于上轨
if (!data.mp(tradeTypeA, 1)) { // 下单前检测合约A是否有空单
data.trade(tradeTypeA, "sell"); // 合约A开空
}
if (!data.mp(tradeTypeB, 0)) { // 下单前检测合约B是否有多单
data.trade(tradeTypeB, "buy"); // 合约B开多
}
}
}
- Selepas pesanan dibuat, adalah perlu untuk mengendalikan situasi yang tidak normal seperti pesanan yang tidak dipenuhi dan memegang kontrak tunggal. dan melukis carta.
data.cancelOrders(); // 撤单
data.drawingChart(boll); // 画图
data.isEven(); // 处理持有单个合约
Dalam perkara di atas, kami telah mencipta strategi arbitraj antara tempoh mata wang digital mudah dalam lebih 200 baris sahaja. Kod lengkap adalah seperti berikut:
// 全局变量
// 声明一个配置图表的 chart 对象
var chart = {
__isStock: true,
tooltip: {
xDateFormat: '%Y-%m-%d %H:%M:%S, %A'
},
title: {
text: '交易盈亏曲线图(详细)'
},
rangeSelector: {
buttons: [{
type: 'hour',
count: 1,
text: '1h'
}, {
type: 'hour',
count: 2,
text: '3h'
}, {
type: 'hour',
count: 8,
text: '8h'
}, {
type: 'all',
text: 'All'
}],
selected: 0,
inputEnabled: false
},
xAxis: {
type: 'datetime'
},
yAxis: {
title: {
text: '价差'
},
opposite: false,
},
series: [{
name: "上轨",
id: "线1,up",
data: []
}, {
name: "中轨",
id: "线2,middle",
data: []
}, {
name: "下轨",
id: "线3,down",
data: []
}, {
name: "basb",
id: "线4,basb",
data: []
}, {
name: "sabb",
id: "线5,sabb",
data: []
}]
};
var ObjChart = Chart(chart); // 画图对象
var bars = []; // 存储价差序列
var oldTime = 0; // 记录历史数据时间戳
// 参数
var tradeTypeA = "this_week"; // 套利A合约
var tradeTypeB = "quarter"; // 套利B合约
var dataLength = 10; //指标周期长度
var timeCycle = 1; // K线周期
var name = "ETC"; // 币种
var unit = 1; // 下单量
// 基础数据
function Data(tradeTypeA, tradeTypeB) { // 传入套利A合约和套利B合约
this.accountData = _C(exchange.GetAccount); // 获取账户信息
this.positionData = _C(exchange.GetPosition); // 获取持仓信息
var recordsData = _C(exchange.GetRecords); //获取K线数据
exchange.SetContractType(tradeTypeA); // 订阅套利A合约
var depthDataA = _C(exchange.GetDepth); // 套利A合约深度数据
exchange.SetContractType(tradeTypeB); // 订阅套利B合约
var depthDataB = _C(exchange.GetDepth); // 套利B合约深度数据
this.time = recordsData[recordsData.length - 1].Time; // 获取最新数据时间
this.askA = depthDataA.Asks[0].Price; // 套利A合约卖一价
this.bidA = depthDataA.Bids[0].Price; // 套利A合约买一价
this.askB = depthDataB.Asks[0].Price; // 套利B合约卖一价
this.bidB = depthDataB.Bids[0].Price; // 套利B合约买一价
// 正套价差(合约A卖一价 - 合约B买一价)
this.basb = depthDataA.Asks[0].Price - depthDataB.Bids[0].Price;
// 反套价差(合约A买一价 - 合约B卖一价)
this.sabb = depthDataA.Bids[0].Price - depthDataB.Asks[0].Price;
}
// 获取持仓
Data.prototype.mp = function (tradeType, type) {
var positionData = this.positionData; // 获取持仓信息
for (var i = 0; i < positionData.length; i++) {
if (positionData[i].ContractType == tradeType) {
if (positionData[i].Type == type) {
if (positionData[i].Amount > 0) {
return positionData[i].Amount;
}
}
}
}
return false;
}
// 合成新K线数据和boll指标数据
Data.prototype.boll = function (num, timeCycle) {
var self = {}; // 临时对象
// 正套价差和反套价差中间值
self.Close = (this.basb + this.sabb) / 2;
if (this.timeA == this.timeB) {
self.Time = this.time;
} // 对比两个深度数据时间戳
if (this.time - oldTime > timeCycle * 60000) {
bars.push(self);
oldTime = this.time;
} // 根据指定时间周期,在K线数组里面传入价差数据对象
if (bars.length > num * 2) {
bars.shift(); // 控制K线数组长度
} else {
return;
}
var boll = TA.BOLL(bars, num, 2); // 调用talib库中的boll指标
return {
up: boll[0][boll[0].length - 1], // boll指标上轨
middle: boll[1][boll[1].length - 1], // boll指标中轨
down: boll[2][boll[2].length - 1] // boll指标下轨
} // 返回一个处理好的boll指标数据
}
// 下单
Data.prototype.trade = function (tradeType, type) {
exchange.SetContractType(tradeType); // 下单前先重新订阅合约
var askPrice, bidPrice;
if (tradeType == tradeTypeA) { // 如果是A合约下单
askPrice = this.askA; // 设置askPrice
bidPrice = this.bidA; // 设置bidPrice
} else if (tradeType == tradeTypeB) { // 如果是B合约下单
askPrice = this.askB; // 设置askPrice
bidPrice = this.bidB; // 设置bidPrice
}
switch (type) { // 匹配下单模式
case "buy":
exchange.SetDirection(type); // 设置下单模式
return exchange.Buy(askPrice, unit);
case "sell":
exchange.SetDirection(type); // 设置下单模式
return exchange.Sell(bidPrice, unit);
case "closebuy":
exchange.SetDirection(type); // 设置下单模式
return exchange.Sell(bidPrice, unit);
case "closesell":
exchange.SetDirection(type); // 设置下单模式
return exchange.Buy(askPrice, unit);
default:
return false;
}
}
// 取消订单
Data.prototype.cancelOrders = function () {
Sleep(500); // 撤单前先延时,因为有些交易所你懂的
var orders = _C(exchange.GetOrders); // 获取未成交订单数组
if (orders.length > 0) { // 如果有未成交的订单
for (var i = 0; i < orders.length; i++) { //遍历未成交订单数组
exchange.CancelOrder(orders[i].Id); //逐个取消未成交的订单
Sleep(500); //延时0.5秒
}
return false; // 如果取消了未成交的单子就返回false
}
return true; //如果没有未成交的订单就返回true
}
// 处理持有单个合约
Data.prototype.isEven = function () {
var positionData = this.positionData; // 获取持仓信息
var type = null; // 转换持仓方向
// 如果持仓数组长度余2不等于0或者持仓数组长度不等于2
if (positionData.length % 2 != 0 || positionData.length != 2) {
for (var i = 0; i < positionData.length; i++) { // 遍历持仓数组
if (positionData[i].Type == 0) { // 如果是多单
type = 10; // 设置下单参数
} else if (positionData[i].Type == 1) { // 如果是空单
type = -10; // 设置下单参数
}
// 平掉所有仓位
this.trade(positionData[i].ContractType, type, positionData[i].Amount);
}
}
}
// 画图
Data.prototype.drawingChart = function (boll) {
var nowTime = new Date().getTime();
ObjChart.add([0, [nowTime, boll.up]]);
ObjChart.add([1, [nowTime, boll.middle]]);
ObjChart.add([2, [nowTime, boll.down]]);
ObjChart.add([3, [nowTime, this.basb]]);
ObjChart.add([4, [nowTime, this.sabb]]);
ObjChart.update(chart);
}
// 交易条件
function onTick() {
var data = new Data(tradeTypeA, tradeTypeB); // 创建一个基础数据对象
var accountStocks = data.accountData.Stocks; // 账户余额
var boll = data.boll(dataLength, timeCycle); // 获取boll指标数据
if (!boll) return; // 如果没有boll数据就返回
// 价差说明
// basb = (合约A卖一价 - 合约B买一价)
// sabb = (合约A买一价 - 合约B卖一价)
if (data.sabb > boll.middle && data.sabb < boll.up) { // 如果sabb高于中轨
if (data.mp(tradeTypeA, 0)) { // 下单前检测合约A是否有多单
data.trade(tradeTypeA, "closebuy"); // 合约A平多
}
if (data.mp(tradeTypeB, 1)) { // 下单前检测合约B是否有空单
data.trade(tradeTypeB, "closesell"); // 合约B平空
}
} else if (data.basb < boll.middle && data.basb > boll.down) { // 如果basb低于中轨
if (data.mp(tradeTypeA, 1)) { // 下单前检测合约A是否有空单
data.trade(tradeTypeA, "closesell"); // 合约A平空
}
if (data.mp(tradeTypeB, 0)) { // 下单前检测合约B是否有多单
data.trade(tradeTypeB, "closebuy"); // 合约B平多
}
}
if (accountStocks * Math.max(data.askA, data.askB) > 1) { // 如果账户有余额
if (data.basb < boll.down) { // 如果basb价差低于下轨
if (!data.mp(tradeTypeA, 0)) { // 下单前检测合约A是否有多单
data.trade(tradeTypeA, "buy"); // 合约A开多
}
if (!data.mp(tradeTypeB, 1)) { // 下单前检测合约B是否有空单
data.trade(tradeTypeB, "sell"); // 合约B开空
}
} else if (data.sabb > boll.up) { // 如果sabb价差高于上轨
if (!data.mp(tradeTypeA, 1)) { // 下单前检测合约A是否有空单
data.trade(tradeTypeA, "sell"); // 合约A开空
}
if (!data.mp(tradeTypeB, 0)) { // 下单前检测合约B是否有多单
data.trade(tradeTypeB, "buy"); // 合约B开多
}
}
}
data.cancelOrders(); // 撤单
data.drawingChart(boll); // 画图
data.isEven(); // 处理持有单个合约
}
//入口函数
function main() {
// 过滤控制台中不是很重要的信息
SetErrorFilter("429|GetRecords:|GetOrders:|GetDepth:|GetAccount|:Buy|Sell|timeout|Futures_OP");
exchange.IO("currency", name + '_USDT'); //设置要交易的数字货币币种
ObjChart.reset(); //程序启动前清空之前绘制的图表
LogProfitReset(); //程序启动前清空之前的状态栏信息
while (true) { // 进入轮询模式
onTick(); // 执行onTick函数
Sleep(500); // 休眠0.5秒
}
}
Perdagangan arbitraj berasal dari strategi perdagangan saham Morgan Stanley Konsepnya ialah: turun naik perbezaan harga dua produk yang sangat berkorelasi sesuai dengan "proses popcorn", iaitu perbezaan harga sentiasa kembali kepada min dari kedudukan yang menyimpang dari min sejarah. , dan kemudian Satu lagi penyelewengan daripada min.
Daripada ini kita boleh membuat keuntungan dengan membeli rendah dan menjual tinggi berdasarkan perbezaan harga Kemudian, mengikut prinsip sisihan piawai dalam statistik, Bollinger Bands terdiri daripada rel tengah dan rel atas dan bawah yang dikira dengan sisihan piawai kepada. bentuk tiga jerat Ia sangat berguna dalam perdagangan arbitraj penyebaran.
Selepas ujian, didapati bahawa jika strategi itu diikuti, tanpa mengambil kira yuran pengendalian dan kos impak, walaupun keuntungan setiap kali tidak begitu tinggi, keuntungan keseluruhan adalah agak stabil. Perlu diingat bahawa memandangkan ia adalah arbitraj statistik, terdapat risiko bahawa perbezaan harga akan melebar ke arah yang bertentangan, dan kita mesti mempertimbangkan isu stop loss semasa mereka bentuknya. Kedua, kita juga perlu memberi perhatian kepada kos impak Apabila kecairan kedua-dua kontrak yang terlibat dalam urus niaga berkurangan, ia akan memberi kesan yang ketara ke atas pulangan, dan pelabur harus mengelakkannya mengikut kesesuaian.
4. Lelaran lanjutan pembangunan strategi CTA
4.1 Mengelakkan perangkap strategi CTA niaga hadapan
Dalam dua kelas terakhir, kami menulis strategi aliran dalam bahasa Mai dan strategi arbitraj dalam JavaScript, dan tidak menemui sebarang masalah dalam ujian balik strategi. Walau bagaimanapun, perdagangan kuantitatif bukan hanya tentang menulis program dan kemudian secara langsung memperdagangkannya sebaik ujian belakang berjaya.
Malah, ujian belakang hanyalah simulasi strategi, yang hanya digunakan untuk menilai prestasi strategi dalam data sejarah, membolehkan pedagang menilai dan meninggalkan beberapa strategi dagangan dengan cepat.
Dalam banyak kes, strategi yang kelihatan hebat dalam ujian belakang selalunya gagal memenuhi piawaian ujian belakang dalam dagangan sebenar Terdapat banyak sebab, beberapa daripadanya berada di luar kawalan pedagang, tetapi beberapa kegagalan adalah disebabkan oleh kesilapan biasa atau potensi kesilapan. .
Data statik berbanding data dinamik
Apabila kita melakukan analisis kuantitatif, kita mesti terlebih dahulu mempunyai konsep data statik dan data dinamik Dalam ujian belakang, kami menggunakan data sejarah statik Harga setiap K-line adalah lengkap, dan setiap isyarat dagangan boleh dijual 100%. Tetapi data dalam pasaran sebenar adalah dinamik. Sebagai contoh, jika harga tertinggi adalah lebih tinggi daripada harga tertinggi dalam masa 1 jam selepas dibuka, maka beli Walau bagaimanapun, jika K-line semasa belum selesai, maka harga tertinggi adalah dinamik dan isyarat dagangan mungkin berkelip ke depan dan ke belakang. . Keadaan ini menunjukkan bahawa strategi menggunakan fungsi masa hadapan dalam menentukan syarat untuk urus niaga jual beli.
Fungsi Masa Depan
Apakah fungsi masa hadapan? Mari kita lihat dahulu bagaimana Ensiklopedia Baidu menerangkannya: Jika sesuatu kuantiti bergantung pada kuantiti lain, seperti kuantiti A dan kuantiti B, dan perubahan dalam B menyebabkan perubahan dalam A, maka A ialah fungsi B. Jika B adalah kemudian. kuantiti, A adalah Untuk kuantiti yang lebih awal, A berubah dengan B, dan A ialah fungsi masa depan B. Semua orang mungkin keliru.
Secara ringkas, ia adalah fungsi yang merujuk data masa hadapan, seperti menggunakan harga esok untuk meramalkan harga esok. Jika penunjuk teknikal mengandungi fungsi masa hadapan, isyaratnya tidak pasti Selalunya, isyarat dagangan dikeluarkan pada masa ini, tetapi apabila garis-K seterusnya muncul, isyarat itu hilang atau menukar kedudukan.
Harga penutupan adalah fungsi masa hadapan Sebelum K-line terkini, harga penutupan sentiasa berubah Anda mesti menunggu sehingga K-line selesai untuk menentukan harga penutupan. Memandangkan harga penutupan itu sendiri adalah fungsi masa hadapan, semua penunjuk teknikal berdasarkan harga penutupan juga merupakan fungsi masa hadapan.
Oleh itu, jika penunjuk teknikal menggunakan harga penutupan yang disahkan sebagai data asasnya, dan isyarat beli dan jual tidak berubah tidak kira berapa lama masa telah berlalu, boleh dikatakan penunjuk teknikal ini tidak merujuk fungsi masa hadapan. Walau bagaimanapun, data asas yang digunakannya ialah harga penutupan yang masih belum disahkan, jadi penunjuk teknikal ini merujuk kepada fungsi masa hadapan, dan isyarat beli dan jual mungkin berubah dalam aplikasi sebenar.
Harga Lepas
Fungsi masa hadapan menggunakan harga masa hadapan, tetapi ia juga mungkin menggunakan harga masa lalu. Ini adalah masalah yang sering diabaikan oleh ramai orang baru. Untuk menggambarkan isu ini dengan lebih baik pada masa hadapan, mari kita ambil contoh: jika harga tertinggi semasa adalah lebih tinggi daripada harga tertinggi dalam masa 1 jam selepas dibuka, beli pada harga pembukaan. Jelas sekali, tidak ada yang salah dengan syarat isyarat beli dan jual ini, tetapi harga yang digunakan untuk membuat pesanan adalah harga lepas.
Dalam ujian belakang, strategi adalah normal, kerana enjin ujian belakang berdasarkan data statik boleh menyelesaikan urus niaga 100% sepanjang masa selagi ada isyarat beli Walau bagaimanapun, dalam pasaran sebenar, apabila harga tertinggi lebih tinggi daripada harga tertinggi dalam masa 1 jam selepas pembukaan, Pada masa ini, anda pastinya tidak boleh lagi menggunakan harga pembukaan yang lalu untuk membuat pesanan.
vakum harga
Apa yang dipanggil vakum harga merujuk kepada harga yang dipaparkan pada carta garis-K, tetapi harga tidak boleh didagangkan dalam pasaran sebenar Ia terbahagi kepada situasi berikut:
- Sesiapa yang telah melakukan perdagangan tahu bahawa sukar untuk membeli apabila harga mencapai had atasnya, dan sukar untuk menjual apabila harga mencapai had bawahnya. Walau bagaimanapun, adalah mungkin untuk berdagang dalam ujian belakang.
- Mekanisme padanan pertukaran ialah: keutamaan harga dan keutamaan masa. Sesetengah produk selalunya mempunyai jumlah pesanan yang besar Jika anda membuat pesanan untuk membeli atau menjual dalam masa nyata, anda mesti menunggu di belakang pesanan orang lain dan menunggu sehingga pesanan orang lain dilaksanakan sebelum anda boleh menyelesaikan transaksi harga mungkin telah berubah sebelum anda boleh menyelesaikan transaksi. Walau bagaimanapun, semasa ujian balik, jika strategi anda adalah untuk membuat pesanan, maka transaksi akan diselesaikan tepat pada masanya, yang berbeza daripada persekitaran dagangan sebenar.
- Jika anda menggunakan strategi arbitraj, maka keuntungan backtesting adalah sangat tinggi, kerana setiap kali anda backtest, anda menganggap bahawa anda telah meraih perbezaan harga ini. Pada hakikatnya, banyak spread tidak tersedia, atau hanya satu kaki yang tersedia Secara umumnya, yang tidak sesuai dengan arah anda akan didagangkan terlebih dahulu, jadi anda perlu mengisi bahagian yang lain dengan segera Ia bukan 1 atau 2 mata, tetapi strategi arbitraj itu sendiri menghasilkan wang daripada perbezaan harga mata ini tidak boleh disimulasikan dalam ujian belakang. Keuntungan sebenar tidak sebaik backtest.
- Walaupun acara angsa hitam tidak biasa, ia masih mempunyai kesan yang besar pada perdagangan kuantitatif Sebagai contoh, dalam acara angsa hitam franc Swiss, carta menunjukkan bahawa terdapat pembukaan tinggi dan penutupan rendah keadaan pasaran pada hari ini, Harga di tengah adalah vakum, sebilangan besar pesanan henti rugi menyebabkan rempuhan, kecairan adalah sifar, dan urus niaga adalah sangat sukar, tetapi menghentikan kerugian boleh dicapai dalam ujian belakang.

Terlalu pasang
Overfitting adalah kesilapan biasa yang dilakukan oleh pemula perdagangan kuantitatif Apa itu overfitting Mari kita ambil contoh mudah: apabila mengambil peperiksaan di sekolah, sesetengah orang menggunakan taktik melakukan banyak soalan dan menghafal setiap soalan. Jika soalan diubah sedikit semasa peperiksaan, dia tidak akan dapat menjawabnya. Kerana dia menghafal pendekatan untuk setiap soalan dengan cara yang sangat rumit, tetapi tidak mengabstrakkan peraturan am.

Seperti yang ditunjukkan dalam gambar di atas, selagi model cukup kompleks, ia boleh menyesuaikan diri dengan data dengan sempurna. Perkara yang sama berlaku untuk overfitting dalam perdagangan kuantitatif Jika strategi anda adalah kompleks dan mempunyai banyak parameter luaran, maka dalam ujian belakang data sejarah yang terhad, akan sentiasa ada satu atau beberapa parameter yang sesuai dengan strategi dengan sempurna .
Walau bagaimanapun, pada masa hadapan perdagangan sebenar, perubahan harga mungkin melebihi had strategi anda Sebenarnya, intipati pembangunan strategi perdagangan kuantitatif adalah proses memadankan data bukan rawak tempatan daripada sejumlah besar data yang kelihatan rawak. kita perlu menggunakan statistik Bagaimana kita boleh menggunakan pengetahuan untuk mengelakkan perangkap ini?
Penyelesaian kompromi ialah menggunakan data dalam sampel dan data luar sampel. Bahagikan keseluruhan data kepada dua bahagian, gunakan data dalam sampel sebagai set latihan dan bertanggungjawab untuk ujian balik data. Data luar sampel digunakan sebagai set ujian untuk pengesahan. Jika terdapat sedikit data sejarah, anda juga boleh menggunakan kaedah ujian silang.
Jika anda mendapati bahawa data luar sampel tidak berfungsi dengan baik, tetapi anda rasa sayang untuk membuang model atau anda tidak mahu mengakui bahawa model anda tidak bagus, dan anda terus mengoptimumkan model semasa keluar -daripada-data sampel sehingga ia berfungsi dengan baik pada data luar sampel, maka yang terluka pada akhirnya ialah Ia mestilah wang sebenar anda.
Kecenderungan hidup
Kecenderungan hidup boleh dijelaskan dengan contoh berikut:
- Jika anda berdiri di tempat yang betul, babi pun boleh terbang.
- Semua ulasan untuk payung terjun yang dijual dalam talian adalah positif, kerana tidak ada orang yang mempunyai masalah dengan payung terjun mereka.
- Wartawan menemu bual orang di dalam bas untuk melihat sama ada mereka telah membeli tiket, kerana mereka yang tidak dapat membeli tiket tidak boleh menaiki bas sama sekali.
- Media mempromosikan kemungkinan memenangi loteri, kerana media tidak akan secara aktif mempromosikan orang yang belum memenangi loteri.
Daripada contoh di atas, kita dapat melihat bahawa maklumat yang biasanya diterima orang sebenarnya telah disaring, yang menyebabkan sejumlah besar data atau sampel diabaikan secara selektif Hasilnya ialah kesimpulan berdasarkan berat sebelah yang terselamat telah menyimpang dari masa nyata. Kemudian dalam perdagangan kuantitatif, kita juga perlu mempertimbangkan sama ada keputusan ujian belakang adalah disebabkan oleh nasib Dalam banyak kes, keputusan ujian belakang mungkin merupakan prestasi terbaik dalam keseluruhan ujian belakang.

Gambar di sebelah kiri adalah strategi perdagangan yang sangat baik Ia mempunyai keluk modal yang baik, tiada pengeluaran yang besar, dan boleh memperoleh pulangan keuntungan yang stabil. Tetapi sila lihat gambar di sebelah kanan, ia adalah yang terbaik di antara ratusan ujian belakang dagangan ini. Sebaliknya, apabila kita melihat pasaran kewangan, sentiasa ada lebih banyak bintang daripada yang berumur panjang Jika strategi pedagang selaras dengan keadaan pasaran, maka keadaan pasaran setiap tahun boleh mencipta sekumpulan bintang, tetapi ia. jarang untuk melihat bintang yang boleh berumur lebih daripada tiga tahun berturut-turut Orang hari lahir dengan keuntungan yang stabil.
Kesan kos
Melainkan anda membuat pesanan belum selesai, anda mungkin mengalami penurunan harga semasa berdagang. Untuk produk yang didagangkan secara aktif, harga bida dan harga permintaan biasanya adalah perbezaan satu mata Untuk produk yang kurang aktif didagangkan, spread mungkin lebih besar. Setiap kali anda ingin berdagang secara aktif, anda memerlukan sekurang-kurangnya satu spread, atau lebih. Walau bagaimanapun, dalam ujian belakang, kita tidak perlu mempertimbangkan isu transaksi Selagi ada isyarat, urus niaga boleh diselesaikan Oleh itu, untuk mensimulasikan persekitaran dagangan sebenar, sekurang-kurangnya satu gelinciran mesti ditambah.
Terutama untuk strategi dengan kekerapan dagangan yang agak tinggi, apabila melakukan ujian balik strategi, jika gelinciran tidak disertakan, keluk modal akan sentiasa condong ke atas Sebaik sahaja gelinciran yang munasabah ditambah, ia akan bertukar menjadi kerugian. Di samping itu, fenomena ini bukan hanya disebabkan oleh isu penyebaran Dalam persekitaran perdagangan sebenar, isu seperti kelewatan rangkaian, sistem perisian dan perkakasan, dan tindak balas pelayan juga perlu dipertimbangkan.
Kapasiti Dasar
Strategi yang sama boleh mempunyai kesan yang sangat berbeza, atau malah bertentangan sama sekali, dalam pasaran yang cekap dan tidak cekap. Sebagai contoh, dalam pasaran yang tidak cekap seperti pasaran saham domestik, niaga hadapan komoditi, dan mata wang digital asing, kapasiti strategi frekuensi tinggi itu sendiri tidak begitu besar kerana asas volum dagangan yang kecil Jika lebih ramai orang menggunakannya, akan ada tiada margin keuntungan, malah strategi frekuensi tinggi asal tidak akan menguntungkan. Tetapi dalam pasaran pertukaran asing yang cekap, terdapat ruang untuk pelbagai jenis strategi frekuensi tinggi yang berbeza.
Di atas adalah masalah dan perangkap yang mungkin timbul semasa pembangunan dan penggunaan strategi Bagi pembangun sistem perdagangan yang berpengalaman, ujian belakang adalah satu kemestian. Kerana ia boleh memberitahu anda sama ada idea strategi boleh disahkan berkesan dalam urus niaga sejarah. Tetapi banyak kali ujian belakang tidak bermakna keuntungan masa depan. Kerana terdapat terlalu banyak perangkap dalam ujian belakang, anda tidak akan memahaminya melainkan anda membelanjakan wang untuk mempelajari beberapa pelajaran. Dan pelajaran ini dipelajari dengan wang sebenar. Kursus ini sekurang-kurangnya boleh membantu anda mengelakkan banyak lencongan dan perangkap kuantitatif.
4.2 Mewujudkan pengurusan jawatan yang optimum
Dalam Reminiscences of a Stock Operator, terdapat episod menarik: Old Turkey (asalnya bernama Partridge), yang bekerja di syarikat sekuriti yang sama dengan protagonis Livermore, sentiasa membuat pembelian dan jualan yang besar Setiap kali seseorang mencadangkan dia Menjualnya membuat keuntungan, dan kemudian membelinya semula selepas harga saham ditarik balik. Turki Lama sentiasa berkata dengan bersungguh-sungguh: Tidak, anda tahu, ini adalah pasaran lembu!
Malah Livermore akhirnya mengeluh: Tiada apa-apa yang hebat tentang meramalkan arah aliran dengan betul Dalam pasaran, anda sentiasa boleh menemui ramai orang yang menaik dalam pasaran menaik dan menurun dalam pasaran menurun. Tetapi mereka sentiasa pandai tawar-menawar dengan pasaran, cuba membeli pada titik terendah dan menjual pada titik tinggi. Sama seperti ayam belanda tua, mereka yang benar-benar membuat wang besar adalah mereka yang melihat pasaran dengan betul dan berpegang teguh pada kedudukan mereka Ini juga merupakan perkara yang paling sukar untuk dipelajari. Ini bukan sahaja melibatkan pemilihan sasaran dan masa, tetapi juga persoalan yang lebih penting: berapa besar kedudukan (risiko) yang harus dipegang (diambil)?
Peniaga yang gagal semuanya mempunyai pemikiran berat sebelah Apabila berdagang, orang yang tamak hanya melihat kepada faedah dan bukan risiko, manakala orang yang pemalu hanya melihat kepada risiko dan bukan mereka yang tamak dan pemalu lupa tentang risiko pasaran meningkat. Lupakan keuntungan semasa turun. Tetapi peniaga yang berjaya akan mempertimbangkan kedua-dua risiko dan ganjaran, iaitu, untuk setiap dolar yang diperoleh, mereka mengambil beberapa dolar risiko. Kemudian penunjuk untuk mengukur pulangan dan risiko ialah nisbah pulangan-risiko.
Ramai orang tahu bahawa lebih besar keuntungan, lebih besar risiko, iaitu pulangan adalah berkadar dengan risiko. Pada pendapat sesetengah orang, hubungan antara pulangan dan risiko hendaklah seperti berikut, dengan paksi mendatar mewakili peratusan risiko dan paksi menegak mewakili peratusan keuntungan:

Walau bagaimanapun, dalam urus niaga sebenar, pulangan dan risiko adalah jauh daripada semudah garis lurus antara dua titik, sekurang-kurangnya ia tidak sentiasa bergerak secara linear. Risiko sebenar ialah kerugian maksimum yang boleh anda tanggung di bawah pulangan yang dijangkakan, yang kami panggil turun naik maksimum. Walaupun kadangkala kerugian terapung maksimum tidak semestinya sama dengan kerugian penutupan daripada keputusan transaksi, kerugian terapung maksimum adalah nyata.
Daripada ini, kita boleh tahu bahawa nisbah untung-risiko dalam rajah di atas bukanlah representasi sebenar Dalam persekitaran dagangan sebenar, nisbah untung-risiko harus seperti yang ditunjukkan dalam rajah di bawah:

Mari lihat gambar di atas Keluk kuning mewakili turun naik nilai bersih di bawah risiko yang berbeza Memandangkan pulangan yang dijangkakan terus berkembang, risiko juga berkembang secara beransur-ansur. Jika kita menetapkan kebankrapan pada 0.5, yang bermaksud kerugian maksimum mencapai 50%, maka ini adalah strategi perdagangan yang gagal. Walaupun pulangan akhir strategi ini adalah positif, ia sebenarnya telah muflis di tengah-tengah.
Walaupun strategi anda adalah strategi jangkaan yang positif, ia tetap akan muflis kerana pengurusan kedudukan yang tidak betul. Jadi dari perspektif ini, berapa banyak untuk membeli atau menjual adalah lebih penting daripada masa untuk membeli atau menjual Bagaimana untuk menguruskan kedudukan secara saintifik telah menjadi isu asas dalam urus niaga kewangan. Jadi sebelum cuba menyelesaikan masalah ini, mari kita lihat bagaimana untuk membuat pertaruhan secara saintifik dalam perjudian.

Mari kita ambil lambungan syiling sebagai contoh Dengan mengandaikan bahawa kedua-dua belah duit syiling adalah sama berat, jika bahagian depan muncul, keuntungan ialah 2 yuan, dan jika bahagian belakang muncul, kerugian adalah 1 yuan permainan jangkaan positif, dengan kadar kemenangan 50% dan kerugian 2 yuan . Inilah persoalannya: Sekarang anda mempunyai 100 yuan, jadi bagaimana anda boleh membuat pertaruhan berulang kali untuk membuat 100 yuan mencapai 1 juta yuan secepat mungkin.
Jika kita tidak memikirkannya dengan teliti, kita akan berfikir bahawa kerana keuntungan setiap pertaruhan adalah 50%,*2-50%*1, iaitu 50%. Untuk merealisasikan keuntungan maksimum dengan cepat, anda harus melaburkan modal sebanyak mungkin dalam setiap perjudian.
Tetapi jelas tidak munasabah untuk melabur 100% modal dalam setiap permainan judi, kerana jika anda kalah sekali sahaja, modal akan hilang, walaupun kemungkinannya sangat kecil. Kerana selagi anda berjudi cukup masa, kehilangan wang pasti akan berlaku.
Seseorang mungkin bertanya, kerana pertaruhan 100% adalah tidak munasabah, bagaimana pula dengan pertaruhan 90% atau lebih rendah? Malah, untuk menyelesaikan masalah ini, kita boleh melakukan eksperimen untuk mensimulasikan permainan judi ini dan melihat apakah keputusan setiap pertaruhan. Seperti yang ditunjukkan dalam gambar berikut:
Daripada angka itu, kita dapat melihat bahawa apabila kita secara beransur-ansur mengurangkan kedudukan dari 90%, 80%, 70%, 60%, dan 50%, keputusan pertaruhan yang sama adalah berbeza sama sekali apabila kedudukan beransur-ansur menyusut, dana akhir sebenarnya semakin meningkat secara beransur-ansur.
Seseorang mungkin bertanya, adakah lebih baik untuk bertaruh lebih kecil setiap kali, seperti 10% Anda tidak boleh mengira setiap nisbah pertaruhan, bukan? Ini adalah masalah yang direka untuk diselesaikan oleh formula Kelly? Dalam statistik, formula Kelly boleh memaksimumkan kadar pertumbuhan jangka panjang strategi dengan jangkaan positif pertaruhan berulang dengan mengira nisbah pertaruhan yang optimum dalam setiap perjudian.
Bukan itu sahaja, dengan mengandaikan bahawa prinsipal dan perjudian boleh dibahagikan tanpa terhingga, menggunakan formula Kelly akan menjadikannya mustahil untuk muflis dalam mana-mana perjudian. Terutamanya dalam aplikasi sebenar transaksi kewangan, ia adalah strategi pengurusan kedudukan yang menggabungkan kedua-dua kesalahan dan pertahanan. Mari kita lihat bagaimana formula Kelly dikira, lihat gambar berikut:
- f ialah nisbah pertaruhan optimum bagi prinsipal sedia ada
- b ialah kemungkinan, yang juga boleh dipanggil nisbah untung dan rugi dalam perdagangan.
- p ialah kadar kejayaan
- q ialah kadar kegagalan
Kemudian kita boleh menggunakan formula Kelly untuk mengira contoh perjudian dalam kelas ini Dengan modal permulaan 100 yuan, jika kadar kemenangan adalah 50% dan kemungkinan adalah 2, apakah nisbah pertaruhan yang harus digunakan untuk membuat modal paling banyak. menguntungkan? Kelajuan terpantas mencapai 1 juta yuan Menggunakan formula Kelly, proses pengiraan ialah:
(0.5*(2+1) -1)/2=0.25
Kadar kemenangan 50% ialah 0.5, didarab dengan kemungkinan 2 tambah 1, kemudian ditolak dengan 1, dan akhirnya dibahagikan dengan 2. Hasilnya ialah 0.25, yang bermaksud bahawa dalam setiap pertaruhan, 25% daripada prinsipal digunakan untuk pertaruhan boleh mencecah 1 juta yuan pada kelajuan terpantas. Kami boleh mensimulasikannya secara manual berdasarkan hasil pengiraan untuk melihat sama ada ia betul.
Gambar di atas adalah hasil simulasi manual Sila lihat pada baris terakhir Untuk pertaruhan yang sama, selepas lebih daripada 100 pusingan, 25% daripada kedudukan mencapai 1 juta yuan. Keputusan 90%, 80%, 70% dan 60% daripada kedudukan adalah negatif, yang sepenuhnya menunjukkan bahawa walaupun strategi perdagangan dengan jangkaan positif akan muflis kerana pengurusan kedudukan yang salah.
Kita juga dapat melihat bahawa 50% daripada kedudukan tidak akan kalah atau untung pada akhirnya, yang juga selaras dengan keputusan hukum nombor besar. Untuk menggambarkan lebih lanjut masalah, kedudukan 10% juga ditambah semasa simulasi manual Walaupun keputusan akhir adalah pulangan positif, kesannya adalah beberapa urutan magnitud yang lebih buruk daripada kedudukan 25%.
Anda telah melihat kekuatan formula Kelly Jika anda memilih kedudukan prinsipal 10% dalam permohonan sebenar, maka dalam lebih daripada 100 pertaruhan, prinsipal anda akan menjadi lebih daripada 30,000 Walaupun keuntungan adalah besar, Namun, berbanding dengan keputusan kedudukan prinsipal 25%, ia bersamaan dengan tiada wang. Inilah kuasa ilmu.
Jika anda ingin menggunakan formula Kelly untuk membuat wang dalam kehidupan, anda perlu memenuhi syarat aplikasi formula Kelly Tidak dinafikan bahawa perjudian ini mesti datang dari pasaran kewangan. Terutamanya dalam perdagangan kuantitatif, dengan menguji balik data sejarah, kadar kemenangan dan kemungkinan yang sepadan boleh dikira secara kasar.
Sudah tentu, aplikasi sebenar formula Kelly dalam urus niaga kewangan tidak begitu mudah. perbezaan antara kadar kemenangan dan kedudukan dalam urus niaga Kemungkinan berubah secara dinamik, dsb. Tetapi tidak kira apa, formula Kelly menunjukkan kepada kita bagaimana untuk mewujudkan kaedah pengurusan kedudukan terbaik.
















