FutuQuant量化接口Nodejs版本
基于FutuQuant v3.1.2底层协议封装的nodejs版本接口,数据格式使用protobuf,使用前请先在本地或者服务端启动FutuOpenD服务。
相关说明:
为了方便使用,请注意部分接口参数及返回结果和富途官方版本不完全一致,详细请参考API文档。
更新
0.2.0
2017.07.27
- fix: 优化自定义logger部分
- feature: 修改qotGetBasicQot方法直接返回数组
- feature: 修改qotGetOrderBook方法直接返回对象,并增加sellList和buyList两个字段,等同于orderBookAskList和orderBookBidList
- feature: 修改subQotUpdateOrderBook事件传递的摆盘结果,增加sellList和buyList两个字段,等同于orderBookAskList和orderBookBidList
- feature: 修改qotGetBroker方法返回结果,增加sellList和buyList两个字段,等同于brokerAskList和brokerBidList
- feature: 修改subQotUpdateBroker方法事件传递的经纪队列,增加sellList和buyList两个字段,等同于brokerAskList和brokerBidList
- feature: 修改qotGetStaticInfo返回结果,直接返回数组
- feature: 修改qotGetSecuritySnapShot返回结果,直接返回数组,并支持超过200支以上股票的查询。
- feature: 新增按市价下单接口:trdPlaceOrderMarket(param),直到交易完成成功为止,返回买入/卖出总价
- feature: 新增取消注册订单更新接口:unsubTrdUpdateOrder()
- docs: 其他调整
更多请点击查看更新日志
安装
npm install futuquant --save
或者
yarn add futuquant
使用
const FtQuant = require('./src/futuquant');
const fs = require('fs');
const bunyan = require('bunyan');
const bunyanDebugStream = require('bunyan-debug-stream');
const path = require('path');
const FILENAME = typeof __filename !== 'undefined' ? __filename : (/^ +at (?:file:\/*(?=\/)|)(.*?):\d+:\d+$/m.exec(Error().stack) || '')[1];
const DIRARR = FILENAME.split('/');
DIRARR.pop();
const DIRNAME = typeof __dirname !== 'undefined' ? __dirname : DIRARR.join('/');
const FutuOpenDXMLPath = path.join(DIRNAME, '../FutuOpenD_1.01_Mac/FutuOpenD.xml');
const ftOpenDConfig = fs.readFileSync(FutuOpenDXMLPath, {
encoding: 'utf8'
});
const userID = ftOpenDConfig.match(/login_account>(\d*?)<\/login_account/)[1];
const pwdMd5 = ftOpenDConfig.match(/trade_pwd_md5>(.*?)<\/trade_pwd_md5/)[1];
const bunyanLogger = bunyan.createLogger({
name: 'sys',
streams: [{
level: 'debug',
type: 'raw',
serializers: bunyanDebugStream.serializers,
stream: bunyanDebugStream({ forceColor: true }),
}],
});
const ft = new FtQuant({
ip: '127.0.0.1',
port: 11111,
userID,
}, bunyanLogger);
const init = async () => {
let res = null;
res = await ft.initConnect();
console.log('initConnect', res);
res = await ft.getGlobalState();
console.log('getGlobalState', res);
await ft.trdUnlockTrade(true, pwdMd5);
const accID = (await ft.trdGetAccList())[0].accID;
await ft.setCommonTradeHeader(1, accID, 1);
};
init();
测试
请先修改test/futuquant.test.js
中FutuOpenDXMLPath
的路径,然后执行npm install
或yarn
安装相关依赖。
运行测试:
npm test
广告
如有需要,请填写推荐人牛牛号:5894668,谢谢!