CTP niaga hadapan komoditi dan pertukaran API mata wang kripto mempunyai perbezaan yang ketara. Familiar dengan perdagangan pemrograman pertukaran mata wang kripto tidak bermakna biasa dengan pemrograman CTP niaga hadapan komoditi. kita tidak boleh hanya menyalin kaedah dan pengalaman.
Antara muka CTP tidak menyediakan sebut harga pasaran bersejarah, dan sebut harga pasaran bersejarah perlu diselesaikan melalui agensi sebut harga pasaran. Jika data pasaran hilang kerana kegagalan untuk log masuk, CTP tidak menyediakan mekanisme pengisian semula pasaran. sebut harga pasaran bersejarah hanya boleh diperoleh melalui agensi pihak ketiga. Kebanyakan bursa cryptocurrency biasanya menyediakan antara muka untuk mendapatkan K-line dan sejarah transaksi.
API pertukaran cryptocurrency biasanyaREST
danwebsocket
CTP secara dalaman merangkumi logik yang berkaitan dengan rangkaian dan berkomunikasi dengan latar belakang CTP menggunakan protokol FTD berdasarkan protokol TCP. Dibahagi kepada tiga mod:
Mod tindak balas permintaan: pelanggan memulakan permintaan, dan latar belakang CTP menerima dan bertindak balas terhadap permintaan.
Mod komunikasi siaran: Selepas pelanggan melanggan harga pasaran kontrak, CTP mendorong harga pasaran melalui siaran.
Mod komunikasi peribadi: Selepas pelanggan menugaskan kontrak, maklumat pesanan, pulangan urus niaga, dan lain-lain didorong oleh CTP titik ke titik.
Semua penawaran dan urus niaga pesanan perjanjian CTP akan diberitahu selepas perubahan, sementara pesanan, akaun, dan kedudukan pertanyaan secara aktif.
Kedalaman protokol CTP hanya harga beli dan jual terkini, sebut harga pasaran yang lebih mendalam seperti lima lapisan harga beli dan jual mahal, anda perlu membayar wang tambahan ke bursa niaga hadapan untuk mendapatkannya. di sisi lain, Bursa cryptocurrency umumnya boleh mendapatkan kedalaman penuh sehingga 200 lapisan harga beli dan jual.
Selain itu, CTP tidak mendorong sebut harga transaksi sebenar, ia hanya boleh ditukar dengan perubahan kedudukan, dan API pertukaran mata wang kripto dapat mendapatkan sebut harga transaksi terperinci sebenar. Tahap tanda tanda data pasaran platform CTP adalah 2 tanda tanda sesaat. Kebanyakan websocket pertukaran mata wang kripto boleh melakukan sehingga 10 tanda tanda sesaat.
CTP mempunyai sekatan ketat terhadap permintaan yang perlu dihantar secara aktif. Secara amnya, sekali setiap 2 saat agak selamat, dan terdapat juga keperluan untuk jumlah pengeluaran.
Protokol CTP sangat stabil dan hampir tidak ada kesilapan atau masalah rangkaian. Oleh kerana pertukaran cryptocurrency mempunyai batasan yang kurang, masa transaksi yang lebih lama, penyelenggaraan sistem, kelewatan data dan kesilapan rangkaian sangat biasa.
CTP mod lalai untuk mendapatkan antara muka pasaran sepertiGetTicker
, GetDepth
, GetRecords
adalah cache data untuk mendapatkan yang terbaru, jika tidak ada data akan menunggu sehingga terdapat data, jadi strategi tidak boleh menggunakanSleep
Apabila ada perubahan harga pasaran,ticker
, depth
, danrecords
Pada ketika ini, mana-mana antara muka akan dikembalikan dengan serta-merta apabila dipanggil. Kemudian keadaan antara muka yang dipanggil ditetapkan untuk menunggu mod kemas kini, Apabila masa depan antara muka yang sama dipanggil, ia akan menunggu data baru untuk dikembalikan.
Sesetengah kontrak perdagangan yang tidak popular atau harga mencapai harga terhad harian akan berlaku untuk masa yang lama tanpa sebarang aktiviti perdagangan, yang merupakan perkara biasa bagi strategi untuk terjebak untuk masa yang lama.
Jika anda ingin mendapatkan data setiap kali anda mendapatkan harga pasaran, walaupun data lama, anda boleh beralih ke pasaran segera mengemas kini modexchange.IO ("mode", 0)
Pada ketika ini, strategi tidak boleh ditulis sebagai pemacu peristiwa.SLeep
Beberapa strategi frekuensi rendah boleh menggunakan mod ini, dan reka bentuk strategi adalah mudah.exchange.IO("mode", 1)
untuk beralih semula ke mod cache lalai.
Apabila mengoperasikan kontrak tunggal, gunakan mod lalai akan baik-baik saja. Walau bagaimanapun, jika terdapat beberapa kontrak dagangan, mungkin satu kontrak tidak dikemas kini, mengakibatkan penyumbatan antara muka pasaran, dan kemas kini pasaran sebut harga kontrak dagangan lain tidak tersedia. Untuk menyelesaikan masalah ini, anda boleh menggunakan mod kemas kini segera, tetapi tidak mudah untuk menulis strategi frekuensi tinggi. Pada ketika ini, anda boleh menggunakan mod push acara untuk mendapatkan push pesanan dan sebut harga.exchange.IO("wait")
. Jika pelbagai objek pertukaran ditambah, ini adalah keadaan yang jarang berlaku dalam perdagangan niaga hadapan komoditi, anda boleh menggunakanexchange.IO ("wait_any")
, dan kembaliindex
akan menunjukkan indeks pertukaran kembali.
Nilai pasarantick
Tekan perubahan:
{Event:"tick", Index: exchange index (in the order of robot exchange added), Nano: event nanosecond time, Symbol: contract name}
Perintah Tekan:
{Event:"order", Index: Exchange Index, Nano: Event Nanosecond Time, Order: Order Information (consistent with GetOrder)}
Pada ketika ini struktur strategi boleh 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)
}
}
}