1.0.3 • Published 4 years ago

futu-rx v1.0.3

Weekly downloads
1
License
MIT
Repository
-
Last release
4 years ago

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')
  );
1.0.3

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago