Tren pasar tadi malam untuk Big Pie dan Two Pie benar-benar tepat waktu. Tren ini sudah lama tidak semulus ini.
Kali ini mari kita bahas tentang cara menggunakan catatan transaksi historis B.
Pejabat B'an telah membagikan banyak data transaksi. Ada halaman Github di mana Anda dapat melihat secara detail kategori data apa yang tersedia dan cara mendownloadnya. Di sini saya terutama memperkenalkan pengunduhan, pengorganisasian, dan penggunaan catatan transaksi gabungan aggTrades.
aggTrades adalah catatan transaksi setelah agregasi, yaitu, Binance menggabungkan beberapa transaksi berturut-turut yang dieksekusi pada waktu yang sama, dalam arah yang sama, dan dengan harga yang sama ke dalam satu catatan, mirip dengan garis K, tetapi hanya dengan satu harga dan tidak ada harga tertinggi, harga terendah dan seterusnya. Misalnya, jika ada pesanan dalam jumlah besar di pasar dan banyak pesanan kecil dilakukan untuk memakannya, maka pesanan yang tiba pada waktu yang sama dalam waktu yang sangat singkat (milidetik) akan digabungkan. Atau mungkin urutan yang dapat dicocokkan oleh mesin pencocokan pada satu waktu.
Keuntungan dari data aggTrades adalah ia dapat memiliki catatan transaksi tingkat milidetik, namun tidak memiliki volume data sebesar perdagangan murni (yaitu, data paling orisinal, tidak dikumpulkan dengan harga yang sama), yang merupakan kompromi yang baik untuk paket data frekuensi tinggi.
Umumnya, strategi frekuensi kuasi tinggi menggunakan data agregat tersebut. Yang frekuensinya sangat tinggi biasanya menggunakan data trade dan orderbook. Jumlah datanya sangat banyak dan sangat merepotkan untuk diproses. Tidak hanya menghabiskan sumber daya, tetapi juga meningkatkan kesulitan pemrograman.
aggTrades dapat digunakan untuk mensintesis garis K pendek pada level apa pun, seperti garis K pendek 5, 10, dan 15 detik. Garis K tersebut masih dapat digunakan untuk beberapa strategi perdagangan intraday.
Misalnya, berikut ini adalah k-line level 1 detik yang diposting sebelumnya.
Ada juga arbitrase frekuensi tinggi. Sulit menghasilkan uang dengan arbitrase biasa sekarang, dan sangat berisiko. Jika frekuensinya lebih tinggi, mungkin ada beberapa peluang.
Data tick-by-tick semacam ini juga dapat digunakan untuk mensintesis k-line alternatif, seperti bar yang sama. Menggunakan aggTrades jauh lebih akurat dibandingkan dengan menggunakan k-line menit. Strategi CTA yang dihasilkan dengan cara ini dapat dibandingkan dengan yang biasa strategi k-line. Saya mungkin akan menulis tentang cara mensintesis bilah semacam ini di beberapa artikel berikutnya.
Berikut pengenalan kodenya (sebagian besar kode ada di lampiran, karena terlalu banyak dan panjang, saya tidak akan mempostingnya di teks). Kode unduhan adalah contoh Binance, tetapi dengan sedikit perubahan, dan kode pemrosesan saya.
Berikut contoh data bulanan (Binance juga menyediakan data harian). Semua kodenya adalah single-threaded dan dieksekusi secara sinkron, tanpa asynchronous atau multi-threading. Karena pengunduhan seperti itu dilakukan sebulan atau n hari sekali, Anda cukup menunggu sebentar, tidak perlu ribet.
Umumnya tidak ada masalah dengan menggunakan data lama untuk backtesting dasar, karena backtesting data frekuensi tinggi terutama memainkan peran analitis, dan ini terutama bergantung pada harga sebenarnya, karena slippage mungkin besar, atau order tertunda belum selesai, dan tindak lanjutnya Pesanan tidak tertangkap, penukaran tertunda, dll.
Tapi nanti saya juga punya kode untuk mendownload data real-time, yaitu mendownload data aggTrades hari itu untuk langsung memverifikasi harga pasar yang terlewat. Data harian Binance hanya tersedia dengan jeda beberapa hari. Jika Anda ingin segera menggunakannya, Anda harus merayapinya sendiri menggunakan api pertukaran.
1 unduhan
Bagian pertama dari kode ini adalah dua file agg.py dan utility.py, lalu gunakan
python3 agg.py -y 2022 -m 6 -t um -folder /jalur yang Anda tentukan
Berikut adalah contoh perintah untuk mengunduh semua data aggTrades kontrak abadi untuk Juni 2022. Biasanya diperlukan waktu sekitar sepuluh menit untuk mengunduh. Data yang diunduh dikompresi, jadi langkah selanjutnya adalah mendekompresinya.
2. Buka zip
Untuk mendekompresi, gunakan file unzip.py Ini adalah kode yang sangat pendek dengan hanya dua fungsi, satu untuk mendekompresi data bulanan dan yang lainnya untuk mendekompresi data harian.
Setelah di ekstrak file zipnya menjadi file csv. Masalah dengan file csv adalah file tersebut memakan lebih banyak ruang di hard disk dan lebih lambat dimuat. Jadi langkah selanjutnya adalah mengubah file csv menjadi file acar. Anda dapat mengompres atau tidak mengompres sesuai dengan situasi Anda sendiri. Jika hard drive Anda besar, disarankan untuk tidak mengompresnya. Umumnya, data berkelanjutan adalah sekitar 50 GB per bulan, jadi tergantung situasi Anda. Umumnya, Anda dapat membeli hard drive SSD eksternal yang lebih cepat. Saat ini, 1TB hanya berharga beberapa ratus yuan, dan ini sudah murah.
3. Ubah kompresi menjadi acar
Kode konversi ada di csv_to_pkl.py. Seperti disebutkan di atas, lebih mudah untuk menyimpan dan menggunakan setelah konversi.
Setelah konversi, saya menghapus file csv secara manual, jika tidak maka akan menempati hard disk. Tidak ada kode untuk menerapkan langkah ini. Seperti disebutkan sebelumnya, ini adalah operasi berfrekuensi sangat rendah dan tidak perlu diotomatisasi sepenuhnya. Saya menggunakan kompresi gzip level 2 dalam kode contoh. Umumnya, data satu bulan kurang dari 10GB setelah kompresi.
CSV tidak hanya memakan ruang, tetapi juga memuat dengan lambat. Disarankan untuk menggunakan format acar. Secara keseluruhan performanya bagus, tapi kuncinya adalah kompatibilitasnya bagus. Jika Anda ingin menggunakan server cloud, atau banyak paket sumber terbuka lainnya, mereka lebih kompatibel daripada bulu dan sejenisnya.
Oke, sekarang datanya sudah siap, Anda bisa mulai mempelajari strateginya.
4. Pengunduhan data instan
Seperti disebutkan sebelumnya, data di server data Binance tertinggal satu atau dua hari. Jika Anda perlu memverifikasi bagaimana kinerja strategi Anda dalam kondisi pasar saat ini, namun belum memposting harga riil mata uang tertentu tepat waktu, Anda dapat menggunakan kode berikut untuk mengunduh aggTrades kembali ke waktu yang ditentukan. Saya biasanya menggunakannya untuk mengunduh data 12 jam saat ini untuk melihat bagaimana kinerja strategi tersebut.
Jika kode berikut digunakan, maka perlu diubah ke waktu mulai terbaru.
Data yang diunduh seperti ini. Anda dapat merujuk pada dokumentasi Binance dan transaksi terkini (akumulasi) untuk melihat arti spesifiknya.
Dengan data mentah seperti itu, Anda dapat menggunakan df.resample(bar_size).agg() untuk menggabungkannya ke dalam level k-line mana pun yang Anda perlukan, dan Anda dapat melakukan apa pun yang Anda inginkan.
akhirnya
Pada dasarnya ini adalah penyusunan data aggTrades yang saya gunakan sebelumnya. Strategi saat ini menjadi semakin banyak, dan lebih banyak kategori strategi dapat dikembangkan dengan menggunakan data yang lebih terperinci. Saling melengkapi antar strategi adalah kunci multi-strategi.
Jika Anda membutuhkan kode di atas, Anda dapat menghubungi kami untuk mendapatkannya.