Teknologi FMZ Quant yang Benar - Cara Menolak Batas untuk Mendapatkan Tick

Penulis:Ninabadass, Dibuat: 2022-03-31 11:14:14, Diperbarui: 2022-03-31 14:02:25

Dalam strategi perdagangan komoditas berjangka frekuensi tinggi, kecepatan penerimaan kutipan pasar Tick memiliki pengaruh yang menentukan pada hasil keuntungan dari strategi. Namun, sebagian besar kerangka perdagangan di pasar menggunakan mekanisme mode callback. Karena dalam fungsi onBar/onTick, Anda harus berurusan dengan seluruh logika kode, yang merupakan pemborosan waktu; apakah Anda menginginkannya atau tidak, logika strategi Anda harus terganggu, dan Anda harus menggunakan mode state machine, seperti:

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

FFMZ Quant tidak mengadopsi mekanisme callback mundur, tetapi mengadopsi mekanisme entri fungsi main yang tidak mengganggu logika strategi, sehingga pengguna dapat mengontrol aliran strategi lebih alami; menggunakan C ++ dan Golang sebagai lapisan dasar strategi yang stabil, dan menggunakan Javascript / Python pada lapisan atas untuk menangani masalah logika. Dikombinasikan dengan mekanisme pemicu peristiwa, strategi juga dapat memproses TAQ pada kecepatan tercepat pada saat pertama. Sebagai contoh, ketika kita mengakses perusahaan berjangka, kita hanya dapat menerima TAQ dari perusahaan berjangka ini. Kecepatan dan kualitas TAQ yang kita dapatkan terkait dengan jaringan kita sendiri, dan juga terkait dengan beban mesin front-end perusahaan berjangka. Jadi, bagaimana kita bisa mendapatkan data tik berjangka yang lebih akurat lebih cepat?

Di bawah model strategi, Anda dapat dengan mudah mengoperasikan akun N perusahaan berjangka yang berbeda, menggabungkan TAQ mereka, dan menempatkan pesanan dengan kecepatan tercepat. Dalam keadaan normal, kita bisa mendapatkan dua tik per detik dari perusahaan berjangka, tapi dengan teknologi penggabungan TAQ, mengambil MA801 sebagai contoh, kita bisa mendapatkan maksimum 6 tik non-ulang per detik.

img

Mari kita langsung ke kode (kode hanya dapat dioperasikan di bot, bukan di backtest), dan penggunaan fungsi IO dapat merujuk pada:https://www.fmz.cn/api#io函数

Ketika bot menambahkan platform, N perusahaan berjangka dapat ditambahkan untuk memproses penggabungan serentak TAQ; di sini kita sementara menambahkan dua dan menunjukkan ini:

Kode sebagai 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
        }
    }
}

Hasilnya sebagai berikut:

img

Hal ini dapat dilihat bahwa pada pukul 21:24:44, data dari perusahaan berjangka pertama tiba sebelum yang kedua, dan hasilnya dapat dilihat dengan menambahkan dua perusahaan berjangka. Jika Anda menggunakannya untuk mengembangkan strategi perdagangan frekuensi tinggi, Anda telah menyelesaikan langkah yang sangat penting dan menentukan, yaitu kecepatan, stabilitas dan keandalan untuk mendapatkan Tick.

FMZ Quant (sebelumnya BotVS) adalah platform yang dibuat khusus untuk pengembang yang memiliki persyaratan kritis pada stabilitas dan kecepatan strategi. Teknologi protokol lapisan bawah dikembangkan secara independen, yang dapat dioperasikan di bawah mikro komputer chip tunggal Linux / Windows / Mac / ARM atau bahkan ponsel, dan kecepatan pemesanan sangat cepat. Reaksi terhadap TAQ cepat, dan merupakan pilihan terbaik untuk mengembangkan strategi frekuensi tinggi.


Lebih banyak