
Security News
NVD Quietly Sweeps 100K+ CVEs Into a “Deferred” Black Hole
NVD now marks all pre-2018 CVEs as "Deferred," signaling it will no longer enrich older vulnerabilities, further eroding trust in its data.
Data sdk for Ducheng Quant Database.
此版本调整了WindUtil的引入方式,不再支持从dqdata直接导出
from dqdata import windUtils
改成
from dqdata.wind_utils import WindUtil
pip install dqdata
或指定版本
pip install dqdata==0.3.7
依赖包:numpy, pandas, urllib3, request, logbook, schedule, watchdog
ApiClient(token='', host='api.shducheng.net', port=80, log_level='INFO', api_urls=None)
token: token字符串
host: 接口服务地址,默认:api.shducheng.net
port: 接口服务端口,默认:80
log_level: 日志级别,默认:INFO
api_urls: 接口地址服务路径
api = ApiClient(token='xxxx-xxxx-xxxx')
get_idx_dict(idx)
idx: 指标id
info = api.get_idx_dict(109646)
print(info)
{'id': 109646, 'code': 'RB_DC', 'name': '河钢承钢:天津市场价格:螺纹钢:HRB400E:Ф18-25mm(日)', 'unit': '元/吨', 'frequency': '日', 'description': None, 'tableName': 'T_STEEL', 'sourceType': 'mysteel', 'sourceCode': 'ST_0001246521', 'sourceDescription': None, 'industry': '黑色', 'type': '现货价格', 'commodity': 'RB', 'sjbId': None, 'userId': None, 'rowsCount': 1191, 'dateFirst': '2016-07-21T00:00:00', 'dateLast': '2021-04-28T00:00:00', 'timeLastUpdate': '2021-04-28T19:56:44.783', 'timeLastRequest': None, 'priority': None, 'status': None, 'shortName': None, 'updateDescription': None, 'indexPropertiesList': None, 'categoryId': None, 'indexName': None}
get_dict_list(source_type):
source_type: 指标来源类型
df = api.get_dict_list('wind')
print(df)
id code name ... categoryIdList commodityName sorting
0 102786 EXC_JY 美元中间价 ... None None None
1 102804 PTA_JY FOB鹿特丹 MX ... None None None
2 102805 PTA_JY 国产MX:华东 ... None None None
3 102818 PTA_JY 国产PX:镇海炼化 ... None None None
4 102835 PF_JY TA01M.CZC ... None None None
... ... ... ... ... ... ... ...
get_series(ids, start_dt='2015-01-01', end_dt=None, column='id')
ids: 指标id或id列表
start_dt: 开始日期,默认:2015年1月1日
end_dt: 截至日期,默认:当日日期
column: 列名字段:id/name
df = api.get_series([109645, 109646], start_dt='2021-05-15')
print(df)
109645 109646
date
2021-05-17 5910.0 5920.0
2021-05-18 5880.0 5910.0
2021-05-19 5610.0 5640.0
2021-05-20 5500.0 5530.0
2021-05-21 5450.0 5500.0
2021-05-24 5260.0 5310.0
2021-05-25 5210.0 5260.0
2021-05-26 5080.0 5130.0
2021-05-27 4980.0 5030.0
2021-05-28 5070.0 5120.0
df = api.get_series([109645, 109646], column='name', start_dt='2021-05-15')
print(df)
鑫达:天津市场价格:螺纹钢:HRB400E:Ф18-25mm(日) 河钢承钢:天津市场价格:螺纹钢:HRB400E:Ф18-25mm(日)
date
2021-05-17 5910.0 5920.0
2021-05-18 5880.0 5910.0
2021-05-19 5610.0 5640.0
2021-05-20 5500.0 5530.0
2021-05-21 5450.0 5500.0
2021-05-24 5260.0 5310.0
2021-05-25 5210.0 5260.0
2021-05-26 5080.0 5130.0
2021-05-27 4980.0 5030.0
2021-05-28 5070.0 5120.0
formula_series(formulas, start_dt='2015-01-01', end_dt=None, column='id')
formulas: 公式或公式列表
start_dt: 开始日期,默认:2015年1月1日
end_dt: 截至日期,默认:当日日期
df = api.formula_series(['diff(idx(171794))', 'idx(171794)-lag(idx(171794),1)'], start_dt='2021-05-15')
print(df)
diff(idx(171794)) idx(171794)-lag(idx(171794),1)
date
2021-05-17 NaN 0.0204
2021-05-18 -0.0119 -0.0119
2021-05-19 0.0341 0.0341
2021-05-20 -0.0460 -0.0460
2021-05-21 -0.0034 -0.0034
... ... ...
2022-07-15 -0.0443 -0.0443
2022-07-18 0.0703 0.0703
2022-07-19 0.0354 0.0354
2022-07-20 0.0056 0.0056
2022-07-21 -0.1518 -0.1518
save_series(items, overwrite=False):
items: 指标数据列表,格式:[{'idx': 100001, 'date': datetime.datetime.today(), 'value': 100.05 }]
overwrite: 是否覆盖已有相同日期值,默认False
items = []
for i in range(11):
items.append({'idx': 114278, 'date': dt.datetime.today() - dt.timedelta(days=i + 10), 'value': i * 100})
items.append({'idx': 109646, 'date': dt.datetime.today() - dt.timedelta(days=i + 10), 'value': i * 1000})
api.save_series(items, overwrite=False)
2021-06-01 17:12:05,983 - api_client.py[line:116]- INFO: T_STEEL 更新或新增了22条记录
df = api.get_series([109645, 109646], column='id', start_dt='2021-05-15')
print(df)
109645 109646
date
2021-05-15 700.0 7000.0
2021-05-16 600.0 6000.0
2021-05-17 500.0 5000.0
2021-05-18 400.0 4000.0
2021-05-19 300.0 3000.0
2021-05-20 200.0 2000.0
2021-05-21 100.0 1000.0
2021-05-22 0.0 0.0
del_series(ids, start_dt='1900-01-01', end_dt='2999-01-01')
ids: 指标id或id列表
start_dt: 开始日期,默认:1900-01-01
end_dt: 截至日期,默认:2999-01-01
api.del_series([109645, 109646])
2021-06-01 14:55:42,583 - api_client.py[line:131]- INFO: 删除了728条数据。
2021-06-01 14:55:42,810 - api_client.py[line:131]- INFO: 删除了1191条数据。
api.del_series([109645, 109646], start_dt='2021-04-15')
2021-06-01 14:59:28,538 - api_client.py[line:131]- INFO: 删除了15条数据。
2021-06-01 14:59:28,585 - api_client.py[line:131]- INFO: 删除了15条数据。
send_sms(number, text, name='')
number: 手机号码
text: 消息文本
name: 通知名称
api.send_sms('139********', 'TableXXX数据更新完成', name='数据表更新')
send_wx(email, text)
email: 邮箱账号
text: 消息文本
api.send_wx('zhangx@shxxxx.com.cn', 'TableXXX 数据更新完成')
from dqdata.windUtil import WindUtil
tdays(start_date, end_date=None)
start_dt: 开始日期,格式:'2015-01-01'
end_dt: 截至日期,默认:当前日期
l = WindUtil.tdays('2020-03-15', end_date='2020-03-30')
print(l)
[datetime.datetime(2022, 3, 15, 0, 0), datetime.datetime(2022, 3, 16, 0, 0), datetime.datetime(2022, 3, 17, 0, 0), datetime.datetime(2022, 3, 18, 0, 0), datetime.datetime(2022, 3, 21, 0, 0), datetime.datetime(2022, 3, 22, 0, 0), datetime.datetime(2022, 3, 23, 0, 0), datetime.datetime(2022, 3, 24, 0, 0), datetime.datetime(2022, 3, 25, 0, 0), datetime.datetime(2022, 3, 28, 0, 0), datetime.datetime(2022, 3, 29, 0, 0), datetime.datetime(2022, 3, 30, 0, 0)]
wsd(codes, fields, start_date=None, end_date=None, options=None)
codes: Wind代码
fields: 数据栏位
start_date: 开始日期,默认:当前日期
end_date: 截止日期,默认:当前日期
options: wsd选项
df = WindUtil.wsd('600570.SH', 'open,close,high,low', start_date='2021-04-01', end_date='2021-04-05')
print(df)
date OPEN CLOSE HIGH LOW
0 2021-04-01 83.70 84.60 84.77 83.47
1 2021-04-02 84.80 84.78 85.43 84.21
2 2021-04-06 84.80 86.00 86.22 83.80
3 2021-04-07 85.46 84.35 85.60 82.81
4 2021-04-08 83.96 84.20 85.23 83.31
5 2021-04-09 85.00 82.84 85.00 81.83
6 2021-04-12 81.88 81.78 83.20 80.14
7 2021-04-13 81.30 81.08 82.14 80.55
8 2021-04-14 81.10 82.20 82.59 80.41
9 2021-04-15 82.18 82.68 82.90 81.60
edb(codes, start_date=None, end_date=None, options=None)
codes: Wind代码
start_date: 开始日期,默认:当前日期
end_date: 截止日期,默认:当前日期
options: wsd选项
df = WindUtil.edb('S0049582', start_date='2020-01-01', end_date='2021-04-01', options='')
print(df)
date CLOSE
0 2020-02-29 7559.4648
1 2020-03-31 20799.4490
2 2020-04-30 35248.3115
3 2020-05-31 50887.6337
4 2020-06-30 71582.8599
5 2020-07-31 88089.0966
6 2020-08-31 102485.8912
7 2020-09-30 117193.0523
8 2020-10-31 132481.0900
9 2020-11-30 147343.6000
10 2020-12-31 164328.5300
11 2021-02-28 12735.8000
12 2021-03-31 27056.8100
13 2021-04-30 40334.5984
wsq(codes, fields)
codes: Wind代码
fields: 数据栏位
df = WindUtil.wsq('CU2207.SHF,RB2208.SHF', 'rt_latest,rt_last_vol')
print(df)
code RT_LATEST RT_LAST_VOL
0 CU2207.SHF 61480.0 5.0
1 RB2208.SHF 4211.0 2.0
sectors(sectorid, date=None)
sectorid: Wind板块ID
date: 指定日期,默认:当前日期
df = WindUtil.sectors('1000010084000000', date='2020-08-28')
print(df)
date wind_code sec_name
1 2020-08-28 A.DCE DCE豆一
2 2020-08-28 AG.SHF SHFE白银
3 2020-08-28 AL.SHF SHFE铝
4 2020-08-28 AP.CZC CZCE苹果
5 2020-08-28 AU.SHF SHFE黄金
.. ... ... ...
56 2020-08-28 WH.CZC CZCE强麦
57 2020-08-28 WR.SHF SHFE线材
58 2020-08-28 Y.DCE DCE豆油
59 2020-08-28 ZC.CZC CZCE动力煤
60 2020-08-28 ZN.SHF SHFE锌
sectors_by_code(wind_code, date=None)
wind_code: Wind代码
date: 指定日期,默认:当前日期
df = WindUtil.sectors_by_code('000300.SH')
print(df)
date wind_code sec_name
1 2022-07-04 000001.SZ 平安银行
2 2022-07-04 000002.SZ 万科A
3 2022-07-04 000063.SZ 中兴通讯
4 2022-07-04 000066.SZ 中国长城
5 2022-07-04 000069.SZ 华侨城A
.. ... ... ...
296 2022-07-04 688363.SH 华熙生物
297 2022-07-04 688396.SH 华润微
298 2022-07-04 688561.SH 奇安信-U
299 2022-07-04 688599.SH 天合光能
300 2022-07-04 688981.SH 中芯国际
fu_contracts(wind_code, start_date=None, end_date=None)
wind_code: Wind品种代码
start_date: 开始日期,默认:当前日期
end_date: 截至日期,默认:当前日期
df = WindUtil.fu_contracts('A.DCE')
print(df)
sec_name code wind_code delivery_month change_limit target_margin contract_issue_date last_trade_date last_delivery_month
1 黄大豆1号2207合约 A2207 A2207.DCE 202207 8.0 20.0 2021-07-15 2022-07-14 2022-07-19
2 黄大豆1号2209合约 A2209 A2209.DCE 202209 8.0 12.0 2021-09-15 2022-09-15 2022-09-20
3 黄大豆1号2211合约 A2211 A2211.DCE 202211 8.0 12.0 2021-11-15 2022-11-14 2022-11-17
4 黄大豆1号2301合约 A2301 A2301.DCE 202301 8.0 12.0 2022-01-18 2023-01-17 2023-01-20
5 黄大豆1号2303合约 A2303 A2303.DCE 202303 8.0 12.0 2022-03-15 2023-03-14 2023-03-17
6 黄大豆1号2305合约 A2305 A2305.DCE 202305 8.0 12.0 2022-05-19 2023-05-18 2023-05-23
fu_hiscode(wind_code, trade_date=None)
wind_code: Wind品种代码
trade_date: 指定日期,默认:当前日期
s = WindUtil.fu_hiscode('A.DCE')
print(s)
A2209.DCE
SimTrader(token: str, account_id: int, host='http://sim.shducheng.net', port=8087, log_level='INFO', api_urls=None)
token: token字符串
host: 接口服务地址,默认:http://sim.shducheng.net
port: 接口服务端口,默认:8087
log_level: 日志级别,默认:INFO
api_urls: 接口地址服务地址字典
from dqdata import Order, SimTrader
sim = SimTrader(token='xxxx-xxxx-xxxx', account_id=1)
query_cash()
info = sim.query_cash()
print(info)
{
'available': 636057.4203548828,
'cum_commission': 365.5750217040304,
'cum_inout': 1000000.0,
'cum_pnl': 500.0,
'cum_trade': 364077.0046234131,
'fpnl': -20636.988449096698,
'frozen': 364077.0046234131,
'nav': 979497.4365291992,
'pnl': -20502.563470800756
}
query_positions()
info = sim.query_positions()
print(info)
[
{ 'amount': 56570.0,
'available': 15,
'available_today': 0,
'cost': 0.0,
'created_at': '2022-08-31 14:04:11',
'fpnl': -1250.0000000000227,
'order_frozen': 0,
'order_frozen_today': 0,
'price': 3763.0,
'side': 1,
'symbol': 'SHFE.rb2301',
'updated_at': '2022-09-23 20:51:51',
'volume': 15,
'volume_today': 0,
'vwap': 3771.3333333333335
},
{ 'amount': 592900.0,
'available': 10,
'available_today': 10,
'cost': 0.0,
'created_at': '2022-09-26 14:01:59',
'fpnl': 0.0,
'order_frozen': 0,
'order_frozen_today': 0,
'price': 59290.0,
'side': 1,
'symbol': 'SHFE.cu2212',
'updated_at': '2022-09-26 14:02:06',
'volume': 10,
'volume_today': 10,
'vwap': 59290.0
}
]
query_orders()
info = sim.query_orders()
print(info)
[
{ 'cl_ord_id': '29107026-3d64-11ed-9bfc-00163e18a8b3',
'created_at': '2022-09-26 14:26:31',
'filled_amount': 0.0,
'filled_commission': 0.0,
'filled_volume': 0,
'filled_vwap': 0.0,
'ord_rej_reason': 0,
'ord_rej_reason_detail': '',
'order_style': 1,
'order_type': 1,
'position_effect': 1,
'position_side': 1,
'price': 59000.0,
'side': 1,
'status': 12,
'symbol': 'SHFE.cu2212',
'updated_at': '2022-09-26 15:00:00',
'volume': 10
},
{ 'cl_ord_id': 'bbe36dbb-3d60-11ed-9bfc-00163e18a8b3',
'created_at': '2022-09-26 14:01:59',
'filled_amount': 592900.0,
'filled_commission': 0.0,
'filled_volume': 10,
'filled_vwap': 59290.0,
'ord_rej_reason': 0,
'ord_rej_reason_detail': '',
'order_style': 1,
'order_type': 1,
'position_effect': 1,
'position_side': 1,
'price': 59300.0,
'side': 1,
'status': 3,
'symbol': 'SHFE.cu2212',
'updated_at': '2022-09-26 14:02:06',
'volume': 10
}
]
query_unfinished_orders()
info = sim.query_unfinished_orders()
print(info)
[
{ 'cl_ord_id': '29107026-3d64-11ed-9bfc-00163e18a8b3',
'created_at': '2022-09-26 14:26:31',
'filled_amount': 0.0,
'filled_commission': 0.0,
'filled_volume': 0,
'filled_vwap': 0.0,
'ord_rej_reason': 0,
'ord_rej_reason_detail': '',
'order_style': 1,
'order_type': 1,
'position_effect': 1,
'position_side': 1,
'price': 59000.0,
'side': 1,
'status': 12,
'symbol': 'SHFE.cu2212',
'updated_at': '2022-09-26 15:00:00',
'volume': 10
},
]
query_history_orders()
info = sim.query_history_orders()
print(info)
[
{ 'client_id': 'fd173e3c-34c9-11ed-b138-00163e18a8b3',
'created_at': '2022-09-15 15:42:46',
'date': '2022-09-15',
'filled_amount': 0.0,
'filled_commission': 0.0,
'filled_price': 0.0,
'filled_volume': 0,
'id': 18,
'order_type': '1',
'position_effect': '1',
'position_side': '1',
'price': 3722.0,
'reject_reason': None,
'reject_reason_detail': None,
'side': '1',
'status': '5',
'symbol': 'SHFE.rb2301',
'updated_at': '2022-09-15 16:09:22',
'user_id': 41062089,
'volume': 4
},
{ 'client_id': '4cb76ccf-34d1-11ed-b138-00163e18a8b3',
'created_at': '2022-09-15 16:35:06',
'date': '2022-09-15',
'filled_amount': 0.0,
'filled_commission': 0.0,
'filled_price': 0.0,
'filled_volume': 0,
'id': 17,
'order_type': '1',
'position_effect': '2',
'position_side': '1',
'price': 3722.0,
'reject_reason': None,
'reject_reason_detail': None,
'side': '2',
'status': '1',
'symbol': 'SHFE.rb2301',
'updated_at': '2022-09-15 16:35:06',
'user_id': 41062089,
'volume': 6
},
...
]
query_performance(with_detail = False):
with_detail: 详情标识,值为True时,返回每日资金、持仓及订单信息
info = sim.query_performance()
print(info)
{ 'indicators': { 'annual_return': 0.06362,
'annual_volatility': 0.02866,
'calmar_ratio': 27.352,
'cumulative_return': 0.0019599999999999618,
'end_date': '2022-09-26',
'max_drawdown': -0.00233,
'omega_ratio': 1.545,
'sharpe_ratio': 2.165,
'sortino_ratio': 4.478,
'start_date': '2022-09-15'
},
'returns': [ {'date': '2022-09-15', 'net_value': 1.00042},
{'date': '2022-09-16', 'net_value': 0.998973},
{'date': '2022-09-19', 'net_value': 0.999373},
{'date': '2022-09-20', 'net_value': 1.00009},
{'date': '2022-09-21', 'net_value': 0.998093},
{'date': '2022-09-22', 'net_value': 1.00213},
{'date': '2022-09-23', 'net_value': 1.00202},
{'date': '2022-09-26', 'net_value': 1.00196}
]
}
info = sim.query_performance(with_detail=True)
print(info)
{ 'indicators': { 'annual_return': 0.06362,
'annual_volatility': 0.02866,
'calmar_ratio': 27.352,
'cumulative_return': 0.0019599999999999618,
'end_date': '2022-09-26',
'max_drawdown': -0.00233,
'omega_ratio': 1.545,
'sharpe_ratio': 2.165,
'sortino_ratio': 4.478,
'start_date': '2022-09-15'
},
'orders': [ { 'client_id': 'fd173e3c-34c9-11ed-b138-00163e18a8b3',
'created_at': '2022-09-15 15:42:46',
'date': '2022-09-15',
'filled_amount': 0.0,
'filled_commission': 0.0,
'filled_price': 0.0,
'filled_volume': 0,
'id': 18,
'order_type': '1',
'position_effect': '1',
'position_side': '1',
'price': 3722.0,
'reject_reason': None,
'reject_reason_detail': None,
'side': '1',
'status': '5',
'symbol': 'SHFE.rb2301',
'updated_at': '2022-09-15 16:09:22',
'user_id': 41062089,
'volume': 4
},
...
],
'positions': [ { 'amount': 185147.0,
'available': 50,
'available_today': 0,
'cost': 3702.95,
'created_at': '2022-08-31 14:04:11',
'date': '2022-09-15',
'fpnl': 9026.79,
'frozen': 0.0,
'id': 25,
'side': '1',
'symbol': 'SHFE.rb2301',
'updated_at': '2022-09-15 21:00:21',
'user_id': 41062089,
'volume': 50,
'volume_today': 0
},
...
],
'returns': [ { 'cash': 9658010.0,
'cum_pnl': -1773.45,
'date': '2022-09-15',
'frozen': 337128.0,
'nav': 10004200.0,
'net_value': 1.00042,
'pnl': 4166.56,
'returns': 0.00042
},
{ 'cash': 9698510.0,
'cum_pnl': -3365.12,
'date': '2022-09-16',
'frozen': 288910.0,
'nav': 9989730.0,
'net_value': 0.998973,
'pnl': -10270.7,
'returns': -0.0014463925
},
...
]
}
query_performance(with_detail = False):
with_detail: 详情标识,值为True时,返回每日资金、持仓及订单信息
info = sim.query_performance()
print(info)
{ 'indicators': { 'annual_return': 0.06362,
'annual_volatility': 0.02866,
'calmar_ratio': 27.352,
'cumulative_return': 0.0019599999999999618,
'end_date': '2022-09-26',
'max_drawdown': -0.00233,
'omega_ratio': 1.545,
'sharpe_ratio': 2.165,
'sortino_ratio': 4.478,
'start_date': '2022-09-15'
},
'returns': [ {'date': '2022-09-15', 'net_value': 1.00042},
{'date': '2022-09-16', 'net_value': 0.998973},
{'date': '2022-09-19', 'net_value': 0.999373},
{'date': '2022-09-20', 'net_value': 1.00009},
{'date': '2022-09-21', 'net_value': 0.998093},
{'date': '2022-09-22', 'net_value': 1.00213},
{'date': '2022-09-23', 'net_value': 1.00202},
{'date': '2022-09-26', 'net_value': 1.00196}
]
}
send_order(symbol, volume, price=0, buy_sell=Order.Buy, open_lose=Order.Open, order_type=Order.PriceLimit)
symbol: 合约代码
volume: 委托数量
price: 委托价格,市价单可不填,默认0
buy_sell: 买卖方向: Order.Buy | Order.Sell,默认Order.Buy
open_lose: 开平方向: Order.Open | Order.Close | Order.CloseToday | Order.CloseYesterday,默认Order.Open
order_type: 价格类型: Order.PriceLimit | Order.PriceMarket,默认Order.PriceLimit
info = sim.send_order('SHFE.rb2301', 5, 3750, buy_sell=Order.Buy, open_lose=Order.Open)
print(info)
{'cl_ord_id': '0cf54113-3d79-11ed-9bfc-00163e18a8b3'}
batch_order(orders: list):
orders: 订单列表
orders = [
{
'symbol': 'SHFE.rb2301',
'order_type': Order.PriceMarket,
'order_style': Order.ByTargetVolume,
'position_side': Order.PositionLong,
'target_volume': 2
},
{
'symbol': 'SHFE.rb2305',
'order_type': Order.PriceMarket,
'order_style': Order.ByTargetVolume,
'position_side': Order.PositionShort,
'target_volume': 2
}
]
info = sim.batch_order(orders)
print(info)
[
{'cl_ord_id': '0fb74e6d-542b-11ed-87d0-00163e18a8b3'},
{'cl_ord_id': '0fb74e84-542b-11ed-87d0-00163e18a8b3'}
]
cancal_order(ids: list)
ids: 订单号列表
sim.cancal_order(['0cf54113-3d79-11ed-9bfc-00163e18a8b3'])
cancel_all()
sim.cancel_all()
close_all()
sim.close_all()
account_sync()
sim.account_sync()
fo = FileOrder(trade_api: SimTrader, file_path: str, file_ext: str = '.csv', timers: list = None, init_run: bool = True)
trade_api: 交易/仿真交易API
file_path: 文件目录
file_ext: 文件后缀,默认:.csv,仅支持csv和excel文件
timers: 定时运行时间(文件变动外的定时执行),如:['09:15', '21:15']
init_run: 是否启动时运行一次,默认:True
merge_flag: 监控变化后是否每次合并所有文件,默认:False
##### 订单文件格式示例:
| exchange | code | target |
| -------- | ------ | ------ |
| DCE | eb2211 | 3 |
| DCE | l2301 | -3 |
| CZCE | MA301 | 0 |
| DCE | pp2301 | 5 |
| DCE | v2301 | 5 |
from dqdata import SimTrader, FileOrder
path = r'C:\Users\tony\Desktop\test'
sim = SimTrader(token='xxxx-xxxx-xxxx', account_id=1)
FileOrder(sim, path, timers=['09:15', '21:15']).start()
FAQs
Data sdk for DuCheng quant database.
We found that dqdata 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.
Security News
NVD now marks all pre-2018 CVEs as "Deferred," signaling it will no longer enrich older vulnerabilities, further eroding trust in its data.
Research
Security News
Lazarus-linked threat actors expand their npm malware campaign with new RAT loaders, hex obfuscation, and over 5,600 downloads across 11 packages.
Security News
Safari 18.4 adds support for Iterator Helpers and two other TC39 JavaScript features, bringing full cross-browser coverage to key parts of the ECMAScript spec.