WebSocket 가속 드라이버
12
Follow
658
Followers
WebSocket 기반 실시간 시세 데이터 가속 템플릿 클래스 라이브러리
설명:
이 전략은 멀티스레드 WebSocket 연결을 통해 여러 거래소의 실시간 데이터 처리를 최적화합니다. FMZ 퀀트 거래 플랫폼에서 WebSocket 연결을 사용하여 호가창 및 거래 데이터를 획득하며, 시장 데이터를 가져오는 지연 시간을 크게 줄이고 고빈도 거래 시스템의 성능을 향상시킵니다.
주요 특징:
- 다중 거래소 지원: 바이낸스, 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
