Teknologi sebenar FMZ Quant - Bagaimana untuk memecahkan had untuk mendapatkan tik

Penulis:Ninabadass, Dicipta: 2022-03-31 11:14:14, Dikemas kini: 2022-03-31 14:02:25

Dalam strategi perdagangan berjangka komoditi frekuensi tinggi, kelajuan penerimaan sebut harga pasaran Tick mempunyai pengaruh yang menentukan pada hasil keuntungan strategi. Walau bagaimanapun, kebanyakan kerangka perdagangan di pasaran menggunakan mekanisme mod panggilan balik. Kerana dalam fungsi onBar / onTick, anda perlu berurusan dengan keseluruhan kod logik, yang adalah pemborosan masa; sama ada anda mahu atau tidak, logik strategi anda mesti terganggu, dan anda mesti menggunakan mod mesin keadaan, seperti:

var state = STATE_IDLE;
function onTick() {
  if (state == STATE_IDLE) {
    // do something...
  } else if (state == ....) {
    // do something
  }
}

FFMZ Quant tidak menggunakan mekanisme panggilan balik ke belakang, tetapi menggunakan mekanisme kemasukan fungsi main yang tidak mengganggu logik strategi, supaya pengguna dapat mengawal aliran strategi dengan lebih semula jadi; menggunakan C ++ dan Golang sebagai lapisan bawah strategi yang stabil, dan menggunakan Javascript / Python pada lapisan atas untuk menangani masalah logik. Digabungkan dengan mekanisme mencetuskan peristiwa, strategi ini juga boleh memproses TAQ pada kelajuan terpantas pada kali pertama. Sebagai contoh, apabila kita mengakses syarikat niaga hadapan, kita hanya boleh menerima TAQ syarikat niaga hadapan ini. kelajuan dan kualiti TAQ yang kita dapat berkaitan dengan rangkaian kita sendiri, dan juga berkaitan dengan beban mesin depan syarikat niaga hadapan. jadi, bagaimana kita boleh mendapatkan data tik niaga hadapan yang lebih tepat lebih cepat?

Di bawah model strategi, anda boleh dengan mudah mengendalikan akaun N syarikat niaga hadapan yang berbeza, menggabungkan TAQ mereka, dan meletakkan pesanan pada kelajuan terpantas. Dalam keadaan biasa, kita boleh mendapatkan dua tik setiap saat dari syarikat niaga hadapan, tetapi dengan teknologi penggabungan TAQ, mengambil MA801 sebagai contoh, kita boleh mendapatkan maksimum 6 tik tidak berulang setiap saat.

img

Mari pergi terus ke kod (kod hanya boleh dikendalikan dalam bot, bukan dalam backtest), dan penggunaan fungsi IO boleh merujuk kepada:https://www.fmz.cn/api#io函数

Apabila bot menambah platform, N syarikat niaga hadapan boleh ditambah untuk memproses penggabungan serentak TAQ; di sini kita sementara menambah dua dan menunjukkan ini:

Kod seperti berikut:

function main() {
    Log("Prepare to access the platform and subscribe to TAQ")
    // Step 1: all futures front-end processors are subscribing for symbols 
    _.each(exchanges, function(e) {
        // wait to access the platform, and yes, the strategy runs continuously for 365 days, and it can run even after the market is closed, and it is not the logic of event callback
good mistake
        while (!e.IO("status")) Sleep(1000);
        // Use the _C retry function to eliminate network errors, and subscribe to TAQ just access to the platform; there may be an error that CTP is not ready
        _C(e.SetContractType, "MA801")
        // Switch the TAQ receiving mode to immediate return mode instead of event trigger mode, please refer to the API documentation
        e.IO("mode", 0)
    })
    Log("Start to merge data...")
    // Step 2: here comes the important part
    var preVolume = 0
    while (true) {
        var ts = new Date().getTime()
        // If any platform has tick event, return 
        var e = exchange.IO("wait_any")
        // Reset Volume at a proper time 
        if (e.Nano/1000000 - ts > 60000) {
            preVolume = 0
        }

        if (e.Event == 'tick' && e.Ticker.Volume >= preVolume) {
            Log(ret, e.Ticker.Last, e.Ticker.Volume)
            preVolume = e.Ticker.Volume
        }
    }
}

Hasil seperti berikut:

img

Ia dapat dilihat bahawa pada pukul 21:24:44, data syarikat niaga hadapan pertama tiba sebelum yang kedua, dan hasilnya dapat dilihat dengan menambah dua syarikat niaga hadapan. Jika anda menggunakannya untuk membangunkan strategi perdagangan frekuensi tinggi, anda telah menyelesaikan langkah yang sangat penting dan menentukan, iaitu kelajuan, kestabilan dan kebolehpercayaan mendapatkan Tick.

FMZ Quant (dahulu BotVS) adalah platform yang dibuat khas untuk pemaju yang mempunyai keperluan kritikal mengenai kestabilan dan kelajuan strategi. Teknologi protokol lapisan bawah dibangunkan secara bebas, yang boleh dikendalikan di bawah komputer mikro cip tunggal Linux / Windows / Mac / ARM atau juga telefon bimbit, dan kelajuan pesanan sangat cepat.


Lebih lanjut