Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
@aluckylife/node-tdx-sdk
Advanced tools
使用纯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 : 读取财务信息
下面是如何在程序里面调用本接口(这里行情数据的接口都是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方法有下列的几个。
一般来说,股票代码和文件名称使用字符串类型,其它参数都使用数值类型
可以获取多只股票的行情信息
需要传入 市场代码 + '.' + 股票代码 构成的symbol, 可同时查询多个symbol的行情
symbol1, symbol2, ..., symbolN
如:
await api.getSecurityQuotes('SZ.000001', 'SH.600300');
周期代码
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线
如:
await api.getSecurityBars('D', 'SZ.000001', 0, 100);
'SZ' - 深圳, 'SH' - 上海
await api.getSecurityCount('SH');
参数:市场代码, 起始位置, 数量 如: 'SH',0 或 'SH',100
await api.getSecurityList('SH', 0);
周期代码
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线
如:
await api.getIndexBars('D', 'SH.000001', 1, 2);
参数:股票代码, 如: 'SZ.000001' 或 'SH.600300'
await api.getMinuteTimeData('SH.600300');
参数:股票代码,时间 如: 'SH.600300', 20161209
await api.getHistoryMinuteTimeData('SH.600300', 20161209);
参数:股票代码,起始位置, 数量 如: SZ.000001
await api.getTransactionData('SZ.000001', 0, 30);
参数:股票代码,起始位置,日期 数量 如: 'SZ.000001',0,10,20170209
await api.getHistoryTransactionData('SZ.000001', 0, 10, 20170209);
参数:股票代码, 如: 'SZ.000001'
await api.getCompanyInfoCategory('SZ.000001');
参数:股票代码, 文件名, 起始位置, 数量, 如:'SZ.000001','000001.txt',2054363,9221
await api.getCompanyInfoContent('SZ.000001', '000001.txt', 0, 10000);
注意这里的 起始位置, 数量 参考上面接口的返回结果。
参数:股票代码, 如: 'SH.600300'
await api.getExRightInfo('SH.600300');
参数:股票代码, 如: 'SZ.000001'
await api.getFinanceInfo('SZ.000001');
周期代码
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线
如:
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条则取实际数量
注:在不支持线程的node版本, 该函数会开子进程轮询, 为防止子进程耗尽资源应谨慎使用, 通常用于订阅行情和K线比较合适
api.subscribe('getSecurityQuotes', 'SH.600519', callback);
注:在不支持线程的node版本, 该函数会开子进程轮询, 为防止子进程耗尽资源应谨慎使用, 通常用于订阅行情和K线比较合适
// 订阅'SH.600519', 'SH.000001'的行情
api.subscribeQuotes('SH.600519', 'SH.000001', callback);
// 订阅全市场股票的行情
api.subscribeQuotes(callback);
// 查询沪市所有股票信息列表
await api.findStockList('SH');
// 查询深市所有股票信息列表
await api.findStockList('SZ');
// 查询沪市、深市所有股票信息列表
await api.findStockList();
待完善, 可参考标准行情用法
可参考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));
市场代码(仅列出已被程序定义和实现的部分代码):
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
a tdx interface implemention by pure nodejs
We found that @aluckylife/node-tdx-sdk demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
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.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.