1.0.3 • Published 4 years ago
futu-rx v1.0.3
Futu Open API Rxjs Client
A Futu Open API client which implement the Futu Open API protocol and based on rx.js
Protocol
https://futunnopen.github.io/futu-api-doc/protocol/intro.html
Implemented Protocol
- 1001 InitConnect
- 1002 GetGlobalState
- 1003 Nofity
- 1004 KeepAlive
- 2001 Trd_GetAccList
- 2002 Trd_UnlockTrade
- 2008 Trd_SubAccPush
- 2101 Trd_GetFunds
- 2102 Trd_GetPositionList
- 2111 Trd_GetMaxTrdQtys
- 2201 Trd_GetOrderList
- 2202 Trd_PlaceOrder
- 2205 Trd_ModifyOrder
- 2208 Trd_UpdateOrder
- 2221 Trd_GetHisotryOrderList
- 2222 Trd_GetHistoryOrderFillList
- 2222 Trd_GetHistoryOrderFillList
- 3001 Qot_Sub
- 3002 Qot_RegQotPush
- 3003 QOt_GetSubInfo
- 3004 Qot_GetBasicQot
- 3005 Qot_UpdateBasicQot
- 3006 Qot_GetKL
- 3007 Qot_UpdateKL
- 3008 Qot_GetRT
- 3009 Qot_UpdateRT
- 3010 Qot_GetTicker
- 3011 Qot_UpdateTicker
- 3012 Qot_GetOrderBook
- 3013 Qot_UpdateOrderBook
- 3103 Qot_RequestHistoryKL
- 3104 Qot_RequestHistoryKLQuota
- 3202 Qot_GetStaticInfo
- 3203 Qot_GetSecuritySnapshot
Prerequisite
Download and running Futu Opend https://futunnopen.github.io/futu-api-doc/intro/FutuOpenDGuide.html
Install
npm install futu-rx --save
Usage
const Futu = require('futu-rx');
const toArray = require('rxjs/operators').toArray;
const concatAll = require('rxjs/operators').concatAll;
const rxjs = require('rxjs');
const clientConfig = {
host: "127.0.0.1",
port: 11111,
accountId: 12345678,
pwdMD5: "25d55ad283aa400af464c76d713c07ad"
}
var futu = new Futu(clientConfig);
futu.connectionStatus().subscribe((connectionStatus) => console.log(connectionStatus));
rxjs
.from([
futu.initConnect(),
futu.trdGetAccList(),
futu.trdUnlockTrade(true),
futu.trdGetFunds(Futu.Enum.TrdEnv.Real, Futu.Enum.TrdMarket.US),
futu.trdGetFunds(Futu.Enum.TrdEnv.Real, Futu.Enum.TrdMarket.HK),
futu.trdGetHistoryOrderList(Futu.Enum.TrdEnv.Real, Futu.Enum.TrdMarket.HK, Date.now() - 3600000 * 24 * 365, Date.now()),
futu.qotGetStaticInfo([{
market: Futu.Enum.QotTradeMarket.HK,
code: "00700"
}]),
futu.qotGetSecuritySnapshot([{
market: Futu.Enum.QotTradeMarket.HK,
code: "00700"
}]),
futu.qotRequestHistoryKL({
market: Futu.Enum.QotTradeMarket.HK,
code: "00700"
}, Futu.Enum.QotRehabType.None, Futu.Enum.QotKLType.Day, "2020-02-29", "2020-03-10"),
futu.qotRequestHistoryKLQuota(true),
futu.qotGetSubInfo(),
futu.qotGetBasicQot([{
market: Futu.Enum.QotTradeMarket.HK,
code: "00700"
}]),
futu.qotSub([{
market: Futu.Enum.QotTradeMarket.HK,
code: "00700"
}], [Futu.Enum.QotSubType.SubType_Basic], [Futu.Enum.QotRehabType.None], true, true, true),
futu.qotRegQotPush([{
market: Futu.Enum.QotTradeMarket.HK,
code: "00700"
}], [Futu.Enum.QotSubType.SubType_Basic], [Futu.Enum.QotRehabType.None], true, true),
futu.qotGetKL(Futu.Enum.QotRehabType.Backward, Futu.Enum.QotKLType.Min_1, Futu.Enum.QotTradeMarket.HK, "00700", 10),
futu.qotGetBasicQot([{
market: Futu.Enum.QotTradeMarket.HK,
code: "0700"
}])
])
.pipe(
concatAll(),
toArray()
)
.subscribe(
(res) => {
res.forEach((res) => console.log(JSON.stringify(res.response)))
console.log('onNext');
},
(err) => console.error(err),
() => console.log('completed')
);