3
fokus pada
1444
Pengikut

Persamaan dan Perbezaan antara Niaga Hadapan Komoditi dan API Pertukaran Mata Wang Kripto

Dicipta dalam: 2019-09-21 17:37:21, dikemas kini pada: 2024-12-17 20:41:43
comments   0
hits   2551

Persamaan dan Perbezaan antara Niaga Hadapan Komoditi dan API Pertukaran Mata Wang Kripto

Terdapat perbezaan ketara antara CTP niaga hadapan komoditi dan API mata wang digital Mereka yang biasa dengan perdagangan program mata wang digital tetapi bukan dagangan terprogram niaga hadapan komoditi tidak boleh menyalin pengalaman mereka. Catatan ini akan meringkaskan persamaan dan perbezaan antara mereka.

Data sejarah

Antara muka CTP tidak menyediakan maklumat pasaran sejarah, yang mesti diperoleh melalui pembekal maklumat pasaran. Jika data pasaran hilang akibat kegagalan untuk log masuk atau putus sambungan, CTP tidak menyediakan mekanisme pemulihan data pasaran. Keadaan pasaran sejarah hanya boleh diperoleh melalui data pihak ketiga Mata wang digital biasanya menyediakan antara muka untuk mendapatkan K-line dan sejarah transaksi.

Protokol yang berbeza

API mata wang kripto biasanya REST dan protokol websocket CTP merangkum logik berkaitan rangkaian secara dalaman dan menggunakan protokol FTD berdasarkan protokol TCP untuk berkomunikasi dengan latar belakang CTP. Terdapat tiga mod:

  • Mod permintaan-tindak balas: Pelanggan secara aktif memulakan permintaan, dan bahagian belakang CTP menerima dan membalas permintaan itu
  • Mod komunikasi siaran: Selepas pelanggan melanggan pasaran kontrak, CTP menolak maklumat pasaran ke luar melalui siaran.
  • Mod komunikasi peribadi: Selepas pelanggan membuat amanah kepada kontrak, maklumat pesanan, pulangan urus niaga, dll. ditolak dari titik ke titik oleh CTP.

Semua keadaan pasaran dan transaksi pesanan protokol CTP akan dimaklumkan hanya selepas perubahan, manakala pertanyaan tentang pesanan, akaun dan kedudukan adalah pertanyaan aktif. Tiga mod di atas boleh didapati dalam bentuk yang serupa dalam API mata wang digital.

Tahap kecanggihan data yang berbeza

Kedalaman protokol CTP hanya satu beli dan satu jual, dan caj pasaran lima peringkat adalah mahal pada umumnya boleh memperoleh kedalaman penuh atau 200 tahap. CTP tidak menolak transaksi sebenar dan hanya boleh disimpulkan melalui perubahan dalam kedudukan, manakala API pertukaran mata wang digital boleh mendapatkan transaksi individu sebenar. Tahap tanda data pasaran pada platform CTP domestik ialah 2 tanda sesaat. Kebanyakan soket web pertukaran mata wang digital boleh melakukan 10 kali sesaat.

Sekatan akses yang berbeza

Pertukaran mata wang digital biasanya mengehadkan urus niaga kepada 10 kali sesaat. Biasanya tiada keperluan khas untuk pembatalan pesanan. CTP mempunyai sekatan ketat terhadap permintaan yang perlu dikeluarkan secara aktif Secara amnya, adalah lebih selamat untuk melakukannya sekali setiap 2 saat. Terdapat juga keperluan untuk bilangan pembatalan pesanan.

Kestabilan

Protokol CTP sangat stabil dan hampir bebas daripada ralat dan masalah rangkaian. Mata wang digital sepatutnya mempunyai lebih sedikit sekatan dan masa transaksi yang lebih lama, dan penyelenggaraan, kelewatan data, ralat rangkaian, dsb. adalah perkara biasa.

Amalan Terbaik Protokol CTP pada Platform Kuantitatif FMZ

Dalam mod lalai CTP, antara muka untuk mendapatkan maklumat pasaran, seperti GetTicker, GetDepth, dan GetRecords, hanya boleh mendapatkan data terkini jika terdapat data cache Jika tiada data, ia akan menunggu sehingga ada data, jadi strategi tidak perlu tidur. Apabila terdapat perubahan pasaran, penanda, kedalaman dan rekod akan dikemas kini Pada masa ini, memanggil mana-mana antara muka ini akan kembali serta-merta, dan status antara muka yang dipanggil akan ditetapkan untuk menunggu mod kemas kini antara muka yang sama akan menunggu sehingga data baharu tersedia. Beberapa kontrak atau had harga yang tidak popular tidak akan didagangkan untuk jangka masa yang lama Ia adalah perkara biasa untuk strategi terperangkap untuk masa yang lama.

Jika anda ingin mendapatkan data setiap kali anda mendapat pasaran, malah data lama, anda boleh bertukar kepada pertukaran mod kemas kini pasaran.IO(“mode”, 0). Pada masa ini, strategi tidak boleh ditulis sebagai acara A Sleep perlu ditambah untuk mengelakkan gelung tak terhingga yang pantas. Sesetengah strategi dengan frekuensi rendah boleh menggunakan mod ini, dan reka bentuk strategi adalah mudah. Gunakan exchange.IO(“mod”, 1) untuk bertukar kembali ke mod cache lalai.

Apabila mengendalikan kontrak tunggal, gunakan mod lalai. Walau bagaimanapun, jika terdapat beberapa kontrak, ada kemungkinan bahawa satu kontrak tidak mengemas kini maklumat pasaran, mengakibatkan sekatan dalam antara muka pemerolehan maklumat pasaran, dan kemas kini maklumat pasaran kontrak lain tidak boleh diperolehi. Untuk menyelesaikan masalah ini, anda boleh menggunakan mod kemas kini segera, tetapi menyusahkan untuk menulis strategi frekuensi tinggi. Pada masa ini, anda boleh menggunakan mod tolak acara untuk mendapatkan tolakan pesanan dan maklumat pasaran. Kaedah tetapan ialah pertukaran.IO(“tunggu”). Jika berbilang objek pertukaran ditambah, yang jarang berlaku dalam niaga hadapan komoditi, anda boleh menggunakan exchange.IO(“wait_any”), dan Indeks yang dikembalikan akan menunjukkan indeks pertukaran yang dikembalikan.

Tolak perubahan tanda pasaran: {Event:“tick”, Index:Exchange index (dalam susunan pertukaran robot ditambah), Nano:Nanosaat masa acara, Simbol:Nama kontrak} Tolak pesanan: {Event:“order”, Index:Exchange index, Nano:Event nanosecond time, Order:Maklumat pesanan (sama seperti 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")){ //判断链接状态
            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)
        }
    }
}