WebSocket加速ドライバ
12
Follow
658
Followers
WebSocketベースのリアルタイム行情データ高速化テンプレートライブラリ
説明:
この戦略は、マルチスレッドのWebSocket接続を活用し、複数の取引所におけるリアルタイムデータ処理を最適化します。FMZ量化取引プラットフォーム上でWebSocket接続を使用して深度板情報や取引データを取得することで、マーケットデータの取得遅延を大幅に低減し、高頻度取引システムのパフォーマンスを向上させます。
主な特徴:
- マルチ取引所対応:Binance、OKX、Bybit、Bitgetなど、複数の取引所のWebSocket接続に対応。従来のREST APIポーリングよりも高速で安定したデータストリームを提供します。
- カスタマイズ可能な購読:特定のマーケットチャンネル(深度、取引など)を購読でき、受信データを効率的に処理し、取引戦略で即座に利用可能です。
- 高度なエラーハンドリング:エラー追跡とWebSocket再接続メカニズムを内蔵し、データストリームの信頼性と継続性を確保します。
- CRC32チェックサム:OKXなどの取引所では、受信した板情報データの完全性を保証するためにCRC32チェックサム機能が統合されています。
このWebSocketベースのソリューションは従来のAPIポーリングに代わるもので、遅延を最小限に抑え、マーケットへの応答速度を最大化したいトレーダーに適しています。
使用方法:
- 初期化:
$.setupWebsocket()を使用して、対象取引所のWebSocket接続を初期化します。 - 購読:取引対象の銘柄に関連するチャンネル(深度、取引など)を自動的に購読します。
- データ取得:
GetDepth()およびGetTrades()関数を呼び出すことで、WebSocketのリアルタイムデータを使用してマーケット深度と取引履歴を自動的に取得します。 - エラーハンドリング:接続およびデータエラーを記録する追跡メカニズムが組み込まれており、接続が切断された場合には自動的に再接続を試みます。
このスクリプトはFMZ量化プラットフォーム上で動作し、複数の取引所に対して高速で信頼性が高く、拡張性のあるマーケットデータアクセスを提供します。
javascript
function main() {
$.setupWebsocket()
while (true) {
exchanges.map(e=>{
Log(e.GetName(), e.GetDepth())
Log(e.GetName(), e.GetTrades())
// support custom and auto subscribe Eg: e.GetDepth('ETH_USDT')
})
EventLoop(100) // trigger by websocket or use Sleep control delay
}
}
Source
JavaScript
// @ts-check
$.setupWebsocket = function (main_exchanges) {
let crc32 = function (r) {
for (var a, o = [], c = 0; c < 256; c++) {
a = c;
for (var f = 0; f < 8; f++) a = 1 & a ? 3988292384 ^ a >>> 1 : a >>> 1;
o[c] = a
}
for (var n = -1, t = 0; t < r.length; t++) n = n >>> 8 ^ o[255 & (n ^ r.charCodeAt(t))];
return (-1 ^ n) >>> 0
}Related strategies
