Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@aluckylife/node-tdx-sdk

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@aluckylife/node-tdx-sdk

a tdx interface implemention by pure nodejs

  • 1.2.0
  • latest
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

node-tdx-sdk

通达信数据SDK

概述

使用纯nodejs类似TradeX的获取通达信行情接口的实现

声明

此代码用于个人对网络协议的研究和习作,不对外提供服务,任何人使用本代码遇到问题请自行解决,也可以在github提issue给我,但是我不保证能即时处理。 由于我们连接的是既有的通达信兼容行情服务器,机构请不要使用此代码,对此造成的任何问题本人概不负责。

安装

> npm install @aluckylife/node-tdx
或
> yarn add @aluckylife/node-tdx

服务器

目前可用服务器

[1] :招商证券深圳行情 (119.147.212.81:7709)

[2] :上海双线主站 (101.133.214.242:7709)


功能列表:

1 : 获取股票行情

2 : 获取k线

3 : 获取市场股票数量

4 : 获取股票列表

5 : 获取指数k线

6 : 查询分时行情

7 : 查询历史分时行情

8 : 查询分笔成交

9 : 查询历史分笔成交

10 : 查询公司信息目录

11 : 读取公司信息详情

12 : 读取除权除息信息

13 : 读取财务信息

接口API

下面是如何在程序里面调用本接口(这里行情数据的接口都是promise接口)

首先需要引入

const { TdxMarketApi } = require('nodetdx');

然后,创建对象

const api = new TdxMarketApi();

之后,通常是如下的格式

if (await api.connect('119.147.212.81', 7709)) {
  // ... same codes...
  api.disconnect();
}

或者

// 不传参数时将自动从hosts列表里挑选ping延迟最低的服务器
// 需要注意的是ping延迟最低的服务器更新quote的时间未必是最及时的、最快的
// 也就是说某些ping延迟低的服务器返回的quote可能比一些ping延迟高一点的服务器返回的quote更新的速度还慢
// 这取决于服务器更新quote的速度
// 所以当遇到这样的情况时最好手动指定host和port, 当然这个host和port必然是要经过自己的测试证明quote的更新速度的确是没有问题的
if (await api.connect()) {
  // ... same codes...
  api.disconnect();
}

可以使用的api方法有下列的几个。

api方法列表

参数一般性约定

一般来说,股票代码和文件名称使用字符串类型,其它参数都使用数值类型

1 : 获取股票行情

可以获取只股票的行情信息

需要传入 市场代码 + '.' + 股票代码 构成的symbol, 可同时查询多个symbol的行情 symbol1, symbol2, ..., symbolN

如:

await api.getSecurityQuotes('SZ.000001', 'SH.600300');
2 : 获取k线
  • period->
周期代码
1m  :  1分钟K线
5m  :  5分钟K线
15m :  15分钟K线
30m :  30分钟K线
H   :  1小时K线
D   :  日K线
W   :  周K线
M   :  月K线
Q   :  季K线
Y   :  年K线
  • symbol -> 证券代码 + '.' + 市场代码;
  • start -> 指定的范围开始位置;
  • count -> 用户要请求的 K 线数目,最大值为 800

如:

await api.getSecurityBars('D', 'SZ.000001', 0, 100);
3 : 获取市场股票数量

'SZ' - 深圳, 'SH' - 上海

await api.getSecurityCount('SH');
4 : 获取股票列表

参数:市场代码, 起始位置, 数量 如: 'SH',0 或 'SH',100

await api.getSecurityList('SH', 0);
5 : 获取指数k线
  • period->
周期代码
1m  :  1分钟K线
5m  :  5分钟K线
15m :  15分钟K线
30m :  30分钟K线
H   :  1小时K线
D   :  日K线
W   :  周K线
M   :  月K线
Q   :  季K线
Y   :  年K线
  • symbol -> 证券代码 + '.' + 市场代码;
  • start -> 指定的范围开始位置;
  • count -> 用户要请求的 K 线数目,最大值为 800

如:

await api.getIndexBars('D', 'SH.000001', 1, 2);
6 : 查询分时行情

参数:股票代码, 如: 'SZ.000001' 或 'SH.600300'

await api.getMinuteTimeData('SH.600300');
7 : 查询历史分时行情

参数:股票代码,时间 如: 'SH.600300', 20161209

await api.getHistoryMinuteTimeData('SH.600300', 20161209);
8 : 查询分笔成交

参数:股票代码,起始位置, 数量 如: SZ.000001

await api.getTransactionData('SZ.000001', 0, 30);
9 : 查询历史分笔成交

参数:股票代码,起始位置,日期 数量 如: 'SZ.000001',0,10,20170209

await api.getHistoryTransactionData('SZ.000001', 0, 10, 20170209);
10 : 查询公司信息目录

参数:股票代码, 如: 'SZ.000001'

await api.getCompanyInfoCategory('SZ.000001');
11 : 读取公司信息详情

参数:股票代码, 文件名, 起始位置, 数量, 如:'SZ.000001','000001.txt',2054363,9221

await api.getCompanyInfoContent('SZ.000001', '000001.txt', 0, 10000);

注意这里的 起始位置, 数量 参考上面接口的返回结果。

12 : 读取除权除息信息

参数:股票代码, 如: 'SH.600300'

await api.getExRightInfo('SH.600300');
13 : 读取财务信息

参数:股票代码, 如: 'SZ.000001'

await api.getFinanceInfo('SZ.000001');
14 : 获取k线(不区分是指数还是股票,会自动根据symbol进行区分)
  • period->
周期代码
1m  :  1分钟K线
5m  :  5分钟K线
15m :  15分钟K线
30m :  30分钟K线
H   :  1小时K线
D   :  日K线
W   :  周K线
M   :  月K线
Q   :  季K线
Y   :  年K线
  • symbol -> 证券代码 + '.' + 市场代码;
  • startDatetime -> 指定开始时间;
  • endDatetime -> 指定结束时间; (可省,若省略则endDatetime为当前时间)
  • count -> K线数量; (可省)

如:

await api.findBars('1m', 'SH.000001', '2021-03-02', '2021-04-06');
await api.findBars('1m', 'SH.000001', null, '2021-04-06', 1000); // 查询2021-04-06之前1000条K线
await api.findBars('1m', 'SH.000001', '2021-03-02', null, 1000); // 查询2021-03-02之后1000条K线
await api.findBars('1m', 'SH.000001', '2021-03-02', '2021-04-06', 1000); // 查询2021-03-02和2021-04-06之间从2021-03-02开始的1000条K线,若K线数量少于1000条则取实际数量
15 : 订阅信息(数据变化推送, 无变化不推送)
  • 第一个参数:函数名, 如: 'getSecurityQuotes'
  • 最后一个参数:回调函数, 用于接收订阅的数据
  • 剩余的参数:需要传递给第一个参数指定的函数需要的参数

注:在不支持线程的node版本, 该函数会开子进程轮询, 为防止子进程耗尽资源应谨慎使用, 通常用于订阅行情和K线比较合适

api.subscribe('getSecurityQuotes', 'SH.600519', callback);
16 : 订阅行情(数据变化推送, 无变化不推送)
  • 最后一个参数:回调函数, 用于接收订阅的数据
  • 剩余的参数:需要订阅的股票symbol
  • 若要订阅全市场的股票行情则只需传一个回调函数作为参数

注:在不支持线程的node版本, 该函数会开子进程轮询, 为防止子进程耗尽资源应谨慎使用, 通常用于订阅行情和K线比较合适

// 订阅'SH.600519', 'SH.000001'的行情
api.subscribeQuotes('SH.600519', 'SH.000001', callback);
// 订阅全市场股票的行情
api.subscribeQuotes(callback);
17 : 查询指定市场所有股票信息列表
  • 参数:市场代码
  • 若参数为空则查询沪深两市所有股票信息列表
// 查询沪市所有股票信息列表
await api.findStockList('SH');
// 查询深市所有股票信息列表
await api.findStockList('SZ');
// 查询沪市、深市所有股票信息列表
await api.findStockList();
18 : 读取扩展行情

待完善, 可参考标准行情用法

19 : 解析盘后下载的1分钟K线数据文件(*.lc1)

可参考test/testReader.js

const path = require('path');
const { TdxMinuteBarReader } = require('nodetdx');

const reader = new TdxMinuteBarReader();

const result = reader.parseDataFromFile(path.join(__dirname, './sz000001.lc1'));
console.log(JSON.stringify(result));
18 : 一些常用代码

市场代码(仅列出已被程序定义和实现的部分代码):

SH       :   上证
SZ       :   深证
DCE      :   大商
CZCE     :   郑商
SHFE     :   上期
CFFEX    :   中金
O@CZCE   :   郑州商品期权
O@DCE    :   大连商品期权
O@SHFE   :   上海商品期权
O@CFFEX  :   中金所期权
O@SH     :   上海股票期权
O@SZ     :   深圳股票期权
MFC      :   主力期货合约

查询k线支持的时间周期代码:

1m  :  1分钟
5m  :  5分钟
15m :  15分钟
30m :  30分钟
H   :  时
D   :  日
W   :  周
M   :  月
Q   :  季
Y   :  年

版本说明

v3.8.0 支持 node 8.*.* 环境, ** 不支持多线程 ** v4.0.0 支持 node 10 以上环境, ** 支持多线程 **

其它

本项目fork自https://github.com/rainx/pytdx,在pytdx基础上修改而来,并修复了一些bug

在此感谢pytdx的作者RainX

FAQs

Package last updated on 22 Jan 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc