Bagaimana untuk menembus batas penerimaan Tick komoditas berjangka

Penulis:rubi, Dibuat: 2018-08-27 15:58:30, Diperbarui:

Apa itu Tick? Sebagai contoh, data transaksi dapat dibayangkan sebagai sungai, dan Tick adalah data dari bagian sungai. granularitas terbaik dari masa depan domestik adalah dua kali per detik. Dengan kata lain, masa depan domestik mengirim hingga satu Tick pada 500 milidetik.

Bagaimana sebagian besar perangkat lunak domestik mendapatkan Tick?

Kemudian sering terjadi lebih dari satu transaksi dalam 500 milidetik, dan situasi spesifik di dalamnya benar-benar kotak hitam.

Sebagian besar kerangka kerja perdagangan di pasar menggunakan mode callback, yang berarti bahwa ada paling banyak satu Tick dalam 500 milidetik dalam situasi ideal. Di bawah situasi nyata pada Bar / onTick, lebih baik untuk tidak melewatkan Tick. mengapa? Karena Anda harus berurusan dengan seluruh logika kode dalam fungsi onBar / onTick, yang membutuhkan banyak waktu. Apakah Anda mau atau tidak, logika strategi Anda harus terganggu, Anda harus menggunakan state idle, seperti ini:

img

Mekanisme yang lebih maju

Platform perdagangan kuantitatif FMZ tidak mengadopsi mekanisme callback mundur ini, tetapi mengadopsi mekanisme fungsi utama yang tidak mengganggu logika strategi, memungkinkan pengguna untuk mengontrol aliran strategi lebih alami. Menggunakan C ++ dan Golang sebagai tingkat strategi yang mendasari, tingkat atas strategi menggunakan JavaScript / Python untuk menangani masalah logika. Dikombinasikan dengan mekanisme pemicu peristiwa, strategi juga dapat digunakan untuk memproses pasar dengan kecepatan tercepat pada pertama kalinya.

Jangan mengatakan bahwa bahasa skrip lambat, kecuali Anda menggunakannya untuk pelatihan jaringan saraf, bahkan jika itu, itu dapat digunakan pada setiap kesempatan setelah menambahkan Jit hot compilation. Strategi entry-level tidak ditulis di sini, dan berbicara tentang sintesis Tick frekuensi tinggi berjangka. Misalnya, jika kita terhubung ke perusahaan berjangka, kita hanya dapat menerima pasar perusahaan berjangka ini. Kecepatan dan kualitas penerimaan kita terkait dengan jaringan kita sendiri, dan juga terkait dengan beban mesin front-end perusahaan berjangka.

Jadi, bagaimana kita bisa mendapatkan data Tick berjangka yang lebih akurat lebih cepat? Di bawah model strategi FMZ Quant, Anda dapat dengan mudah mengoperasikan akun perusahaan berjangka yang berbeda, dan menggabungkan harga mereka untuk memproses pesanan dengan kecepatan tercepat. Dalam keadaan normal, kita dapat mendapatkan dua Tick per detik dari perusahaan berjangka, tetapi melalui teknologi menggabungkan pasar, mengambil MA801 sebagai contoh, kita dapat mendapatkan Tick hingga enam kali per detik dan tidak ada pengulangan.

img

Demo kode

Kode ini hanya dapat digunakan di pasar nyata dan tidak dapat diuji kembali. Jika Anda tidak menggunakannya di platform FMZ Quant, Anda hanya dapat merujuk prinsipnya. Saat menambahkan bursa, banyak perusahaan berjangka dapat ditambahkan untuk melakukan pemrosesan fusi bersamaan pasar.

img

Kode adalah sebagai berikut:

img

Efek demo

img

Seperti yang ditunjukkan di atas, pada pukul 21:24:44, data dari perusahaan berjangka pertama lebih awal dari yang kedua. Menambahkan dua perusahaan berjangka dapat menunjukkan efek, jika Anda menambahkan lebih dari 5 perusahaan berjangka untuk bergabung bersama, maka pada dasarnya Anda tidak memiliki kemungkinan kehilangan Tick; jika Anda mengembangkan strategi perdagangan frekuensi tinggi, Anda telah menyelesaikan langkah yang sangat penting dan menentukan, yaitu kecepatan dan stabilitas penerimaan Tick.

Dapatkan kode lengkap:

function main() {
    log("Prepare to connect to the exchange and subscribe to the market")
    //step 1:All futures front-end machines are starting to subscribe to the variety
    _.each(exchanges, function(e){
        /*Waiting to connect to the exchange. The strategy is running without 
          interruption, and it is not the logic of the event callback. */
        while(!e.IO("status"))Sleep(1000);
        /*Use _C function to troubleshoot network errors. If subscribe to the market just 
        after connecting to exchanges, there may be a CTP unprepared error. */
        _C(e.SetContractType, "MA801")
        /*Switch the market receiving mode to the immediate return mode instead of the 
          event trigger mode. Refer to the API documentation on FMZ website. */
        e.IO("mode", 0)
    })
    Log("start fusing the data")
    //step 2: the important part begins
    var preVolume = 0
    while (true) {
        var ts = new Date().getTime()
        //Return if any exchanges occur tick event
        var ret = exchange.IO("wait_any")
        //Reset Volume at the right time
        if (ret.Nano/1000000 - ts > 60000) {
            preVolume = 0
        }
        //Target the exchange where the event occurred
        var e = exchanges[ret.Index]
        //Get ticker,  because of switching mode as return before, so here is the updated market, and GetTicker won't fail
        //Only the Tick with increasing volume is displayed. It no need to compare actual process, just process it.
        var ticker = e.GetTicker()
        if (ticker.Volume >= preVolume){
            Log(ret,ticker.Last, ticker.Volume)
            preVolume = ticker.Volume
        }
    }
}   



Lebih banyak