UNPKG

futu-sdk

Version:

futu-api 的高性能精简易用版;基于*.proto静态编译,提供高性能的多层封装但层层开放的易用接口,获取最原始最完整的量化数据;相较于Python, nodejs更接近Web, 从而轻而易举搭建一个可视化交易站点,这是进行可控量化交易的不二选择。

28 lines (25 loc) 1.08 kB
const FUTU_SIGN = 'ft-v1.0'; let nextSession = 1; export const encodeBuffer = (cmd: number, protobuf: Uint8Array) => { const session = nextSession++; const buffer = Buffer.alloc(8 + 4 + 8 + protobuf.byteLength); let offset = buffer.write(FUTU_SIGN, 0, 'utf8'); while (offset < 8) { offset = buffer.writeUint8(0, offset); } offset = buffer.writeUint32BE(cmd, offset); offset = buffer.writeBigUint64BE(BigInt(session), offset); buffer.set(protobuf, offset); return { message: buffer.buffer, session }; }; export const decodeBuffer = (arrayBuffer: ArrayBuffer) => { const buffer = Buffer.from(arrayBuffer); // const sign = buffer.toString('utf8', 0, 8).replace(/\0/g, ''); // const cmd = buffer.readUint32BE(8); const session = Number(buffer.readBigUint64BE(12)); const errorCode = buffer.readInt32BE(20); const errorMessage = buffer.toString('utf8', 24, 44).replace(/\0/g, ''); const protobuf = new Uint8Array(buffer.subarray(44)); new Uint8Array(buffer.subarray(44)); return { session, message: { errorCode, errorMessage, protobuf } }; };