CTP berjangka komoditas dan pertukaran API cryptocurrency memiliki perbedaan yang signifikan. akrab dengan perdagangan pemrograman pertukaran cryptocurrency tidak berarti akrab dengan pemrograman CTP berjangka komoditas. kita tidak dapat hanya menyalin metode dan pengalaman.
CTP interface tidak menyediakan kutipan pasar historis, dan kutipan pasar historis perlu diselesaikan melalui agensi kutipan pasar. Jika data pasar hilang karena gagal masuk, CTP tidak menyediakan mekanisme replenishment pasar. Kutipan pasar historis hanya dapat diperoleh melalui agensi pihak ketiga. Sebagian besar pertukaran cryptocurrency biasanya menyediakan antarmuka untuk mendapatkan K-line dan sejarah transaksi.
API pertukaran cryptocurrency umumnyaREST
danwebsocket
CTP secara internal mengkapsulkan logika yang terkait dengan jaringan dan berkomunikasi dengan latar belakang CTP menggunakan protokol FTD berdasarkan protokol TCP. Terbagi menjadi tiga mode:
Request response mode: klien memulai permintaan, dan latar belakang CTP menerima dan menanggapi permintaan.
Mode komunikasi siaran: Setelah klien berlangganan penawaran pasar kontrak, CTP mendorong penawaran pasar melalui siaran.
Mode komunikasi pribadi: Setelah klien menugaskan kontrak, informasi pesanan, pengembalian transaksi, dll didorong oleh CTP dari titik ke titik.
Semua penawaran dan transaksi pesanan dari perjanjian CTP akan diberitahu setelah perubahan, sementara pesanan, akun, dan posisi pertanyaan secara aktif ditanyakan.
kedalaman protokol CTP hanya harga jual beli terbaru, harga pasar yang lebih dalam seperti lima lapisan harga jual beli mahal, Anda perlu membayar uang ekstra ke bursa berjangka untuk mendapatkannya. di sisi lain, Bursa cryptocurrency umumnya bisa mendapatkan kedalaman penuh hingga 200 lapisan harga jual beli.
Selain itu, CTP tidak mendorong kutipan transaksi nyata, itu hanya dapat dibalikkan dengan perubahan posisi, dan API pertukaran cryptocurrency dapat memperoleh kutipan transaksi terperinci yang nyata. Tingkat tik data pasar platform CTP adalah 2 tik per detik. Sebagian besar websocket pertukaran cryptocurrency dapat melakukan hingga 10 tik per detik.
CTP memiliki pembatasan ketat pada permintaan yang perlu dikirim secara aktif. Secara umum, sekali per 2 detik agak aman, dan ada juga persyaratan untuk jumlah penarikan.
Protokol CTP sangat stabil dan hampir tidak ada kesalahan atau masalah jaringan. Karena pertukaran cryptocurrency memiliki batasan yang lebih sedikit, waktu transaksi yang lebih lama, pemeliharaan sistem, keterlambatan data dan kesalahan jaringan sangat umum.
CTP mode default untuk mendapatkan antarmuka pasar sepertiGetTicker
, GetDepth
, GetRecords
adalah data cache untuk mendapatkan yang terbaru, jika tidak ada data akan menunggu sampai ada data, sehingga strategi tidak dapat menggunakanSleep
Ketika ada perubahan harga pasar,ticker
, depth
, danrecords
Pada titik ini, setiap antarmuka akan dikembalikan segera ketika dipanggil. Kemudian keadaan antarmuka yang dipanggil diatur untuk menunggu mode pembaruan, Ketika waktu berikutnya antarmuka yang sama dipanggil, itu akan menunggu data baru untuk dikembalikan.
Beberapa kontrak perdagangan yang tidak populer atau harga mencapai harga terbatas harian akan terjadi untuk waktu yang lama tanpa aktivitas perdagangan, yang normal untuk strategi yang terjebak untuk waktu yang lama.
Jika Anda ingin mendapatkan data setiap kali Anda mendapatkan penawaran pasar, bahkan data lama, Anda dapat beralih ke pasar segera update modeexchange.IO ("mode", 0)
Pada titik ini, strategi tidak dapat ditulis sebagai driver acara. Anda perlu menambahkanSLeep
Beberapa strategi frekuensi rendah dapat menggunakan mode ini, dan desain strategi sederhana.exchange.IO("mode", 1)
untuk beralih kembali ke mode cache default.
Ketika mengoperasikan kontrak tunggal, menggunakan mode default akan baik-baik saja. Namun, jika ada beberapa kontrak perdagangan, mungkin satu kontrak belum diperbarui, sehingga blokade antarmuka pasar, dan pembaruan pasar penawaran kontrak perdagangan lainnya tidak tersedia. Untuk memecahkan masalah ini, Anda dapat menggunakan mode pembaruan segera, tetapi tidak nyaman untuk menulis strategi frekuensi tinggi. Pada titik ini Anda dapat menggunakan mode push acara untuk mendapatkan push order dan kutipan. Metode pengaturan adalahexchange.IO("wait")
Jika beberapa objek pertukaran ditambahkan, ini adalah situasi langka dalam perdagangan berjangka komoditas, Anda dapat menggunakanexchange.IO ("wait_any")
, dan kembaliindex
akan menunjukkan indeks pertukaran kembali.
Kuotasi pasartick
Tekan perubahan:
{Event:"tick", Index: exchange index (in the order of robot exchange added), Nano: event nanosecond time, Symbol: contract name}
Perintah dorong:
{Event:"order", Index: Exchange Index, Nano: Event Nanosecond Time, Order: Order Information (consistent with 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")){ //Determine the link status
exchange.IO("mode", 0)
_C (exchange.SetContractType, "MA888") // subscribe to the MA, only the first time is the real request to send a subscription, the following are just program switch, won't consume any time.
_C(exchange.SetContractType, "rb888") // Subscribe 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)
}
}
}