FMZ 量子の本当の技術 - ティックの取得の限界を壊す方法

作者: リン・ハーンニナバダス作成日:2022-03-31 11:14:14 更新日:2022-03-31 14:02:25 更新日:2022-03-31 更新日:2022-03-31 更新日:2022-03-31 更新日:2022-03-31 更新日:2022-03-31 更新日:2022-03-31 更新日:2022-03-31 更新日:2022-03-31 更新日:2022-03-31 更新日:2022-03-31

商品先物取引の高周波取引戦略では,Tick市場での報価の受信速度は戦略の利益結果に決定的な影響を与える. しかし,市場のほとんどの取引フレームワークはコールバックモードメカニズムを使用しています.Bar/onTickとTickを逃さない方が良いでしょう.なぜですか? onBar/onTick関数では,コードロジック全体を処理しなければならず,時間の無駄です. 戦略ロジックが中断され,状態マシンモードを使用する必要があります.

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

FFMZ Quantはバックワードコールバックメカニズムを採用していないが,戦略論理を中断しない"main"関数入力メカニズムを採用しているため,ユーザーは戦略流れをより自然に制御することができる.安定した戦略底層としてC++とGolangを使用し,論理問題を処理するために上層層にJavaScript/Pythonを使用する.NNSトレーニングに使用しない限り,スクリプト言語は遅いと考えてはならない.NNSトレーニングを使用したとしても,Jitホットコンパイルを追加した後,任意の機会に十分である.Chromeが即座にIEを倒すのは例である. イベントトリガーメカニズムと組み合わせると,この戦略は,TAQを最速で処理することもできます. 例えば,フューチャー企業にアクセスすると,このフューチャー会社のTAQのみを受け取ることができます. 取得するTAQの速度と品質は,当社のネットワークに関連しており,フューチャー会社のフロントエンドマシンの負荷にも関連しています. では,どのようにより正確なフューチャーティックのデータをより早く入手することができますか?

Nの異なる先物会社の口座を簡単に操作し TAQを統合し 最速のスピードで注文をすることができます 通常の状況では 期貨会社から2回の チケットを1秒間に取得できますが MA801を例に挙げて TAQの合併技術によって 最大6回の チケットを1秒間に取得できます

img

直接コードに移りましょう (コードはボットで操作できますが,バックテストではできません) IO関数の使用は以下を参照できます:https://www.fmz.cn/api#io函数

ボットがプラットフォームを追加すると,Nの先物会社が追加され,TAQの同時合併を処理できます. ここで一時的に2つ追加して示します.

次のコード:

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

結果は次のとおりです

img

21:24:44で最初の先物会社のデータが2番目の先物より前に到着し,結果が2つの先物会社の追加で見ることができる. 5以上の先物会社の合併を加えると, 高周波取引戦略を開発するためにそれを使用すると,あなたは非常に重要で決定的なステップを解決しました. それは,速度,安定性,信頼性です.

FMZ Quant (旧 BotVS) は,戦略の安定性と速度に関する重要な要件を持つ開発者向けに特別に作成されたプラットフォームである. 底層プロトコル技術は独立して開発されており,Linux/Windows/Mac/ARMシングルチップマイクロコンピュータまたは携帯電話で動作することができ,注文速度が非常に速い. TAQへの反応は速く,高周波戦略の開発に最適な選択肢である.


もっと