
Terdapat perbedaan yang signifikan antara CTP komoditas berjangka dan API mata uang digital. Mereka yang terbiasa dengan perdagangan terprogram mata uang digital tetapi tidak terbiasa dengan perdagangan terprogram komoditas berjangka tidak dapat begitu saja meniru pengalaman mereka. Tulisan ini akan merangkum persamaan dan perbedaan di antara keduanya.
Data historis
Antarmuka CTP tidak menyediakan informasi pasar historis, yang harus diperoleh melalui penyedia informasi pasar. Jika data pasar hilang karena kegagalan login atau pemutusan sambungan, CTP tidak menyediakan mekanisme pemulihan data pasar. Kondisi pasar historis hanya dapat diperoleh melalui data pihak ketiga. Mata uang digital biasanya menyediakan antarmuka untuk memperoleh K-line dan riwayat transaksi.
Protokol yang berbeda
API mata uang kripto umumnya berupa protokol REST dan websocket. CTP merangkum logika terkait jaringan secara internal dan menggunakan protokol FTD berdasarkan protokol TCP untuk berkomunikasi dengan latar belakang CTP. Ada tiga mode:
Semua kondisi pasar dan transaksi order protokol CTP akan diberitahukan hanya setelah terjadi perubahan, sedangkan pertanyaan tentang order, akun, dan posisi adalah pertanyaan aktif. Ketiga mode di atas dapat ditemukan dalam bentuk serupa di API mata uang digital.
Berbagai tingkat kecanggihan data
Kedalaman protokol CTP hanya satu kali beli dan satu kali jual, dan biaya pasar lima level mahal. Mata uang digital umumnya dapat memperoleh kedalaman penuh atau 200 level. CTP tidak mendorong transaksi nyata dan hanya dapat disimpulkan melalui perubahan posisi, sementara API pertukaran mata uang digital dapat memperoleh transaksi individual nyata. Tingkat centang data pasar pada platform CTP domestik adalah 2 centang per detik. Sebagian besar websocket pertukaran mata uang digital dapat melakukan 10 kali per detik.
Pembatasan akses yang berbeda
Pertukaran mata uang digital umumnya membatasi transaksi hingga 10 kali per detik. Biasanya tidak ada persyaratan khusus untuk pembatalan pesanan. CTP memiliki batasan ketat pada permintaan yang perlu dikeluarkan secara aktif. Umumnya, lebih aman untuk melakukannya setiap 2 detik sekali. Ada juga persyaratan untuk jumlah pembatalan pesanan.
Stabilitas
Protokol CTP sangat stabil dan hampir bebas dari kesalahan dan masalah jaringan. Mata uang digital seharusnya memiliki lebih sedikit batasan dan waktu transaksi yang lebih lama, serta pemeliharaan, penundaan data, kesalahan jaringan, dll. sangat umum terjadi.
Praktik Terbaik Protokol CTP pada Platform Kuantitatif FMZ
Dalam mode CTP default, antarmuka untuk memperoleh informasi pasar, seperti GetTicker, GetDepth, dan GetRecords, hanya dapat memperoleh data terbaru jika ada data yang di-cache. Jika tidak ada data, maka akan menunggu hingga ada data, sehingga strategi tidak perlu tidur. Bila terjadi perubahan pasar, ticker, kedalaman, dan catatan akan diperbarui. Pada saat ini, pemanggilan salah satu antarmuka ini akan segera kembali, dan status antarmuka yang dipanggil akan ditetapkan ke mode menunggu pembaruan. Panggilan berikutnya ke antarmuka yang sama akan menunggu hingga data baru tersedia. kembali. Beberapa kontrak atau batasan harga yang tidak populer tidak akan diperdagangkan dalam waktu lama. Wajar jika strategi tersebut macet dalam waktu lama.
Jika Anda ingin mendapatkan data setiap kali Anda mendapatkan pasar, bahkan data lama, Anda dapat beralih ke mode pembaruan pasar exchange.IO(“mode”, 0). Saat ini, strategi tersebut tidak dapat ditulis sebagai event-driven. Suatu peristiwa Sleep perlu ditambahkan untuk menghindari pengulangan tak terbatas yang cepat. Beberapa strategi dengan frekuensi rendah dapat menggunakan mode ini, dan desain strateginya sederhana. Gunakan exchange.IO(“mode”, 1) untuk beralih kembali ke mode cache default.
Saat mengoperasikan kontrak tunggal, gunakan mode default. Namun, jika ada beberapa kontrak, ada kemungkinan bahwa satu kontrak belum memperbarui informasi pasar, sehingga terjadi penyumbatan pada antarmuka perolehan informasi pasar, dan pembaruan informasi pasar dari kontrak lainnya tidak dapat diperoleh. Untuk mengatasi masalah ini, Anda dapat menggunakan mode pembaruan langsung, tetapi tidak nyaman untuk menulis strategi frekuensi tinggi. Pada saat ini, Anda dapat menggunakan mode push event untuk mendapatkan push informasi pesanan dan pasar. Metode pengaturannya adalah exchange.IO(“tunggu”). Jika beberapa objek bursa ditambahkan, yang jarang terjadi dalam komoditas berjangka, Anda dapat menggunakan exchange.IO(“wait_any”), dan Indeks yang dikembalikan akan menunjukkan indeks bursa yang dikembalikan.
Dorongan perubahan tick pasar: {Peristiwa: “tick”, Indeks: Indeks bursa (dalam urutan penambahan bursa robot), Nano: Waktu nanodetik dari peristiwa, Simbol: Nama kontrak} Order push: {Event:“order”, Index:Indeks bursa, Nano:Waktu nanosecond event, Order:Informasi order (sama dengan GetOrder)}
Pada titik ini struktur strategi dapat ditulis sebagai:
function on_tick(symbol){
Log("symbol update")
exchange.SetContractType(symbol)
Log(exchange.GetTicker())
}
function on_order(order){
Log("order update", order)
}
function main(){
while(true){
if(exchange.IO("status")){ //判断链接状态
exchange.IO("mode", 0)
_C(exchange.SetContractType, "MA888")//订阅MA,只有第一次是真正的发出订阅请求,接下来都是程序切换,不耗时间。
_C(exchange.SetContractType, "rb888")//订阅rb
while(True){
var e = exchange.IO("wait")
if(e){
if(e.event == "tick"){
on_tick(e.Symbol)
}else if(e.event == "order"){
on_order(e.Order)
}
}
}
}else{
Sleep(10*1000)
}
}
}