116 views
1

根据https://doc.shinnytech.com/tqsdk/latest/usage/mddatas.html#k

简单实验一下:

from datetime import datetime, date
from contextlib import closing
from tqsdk import TqApi, TqSim
from tqsdk.tools import DataDownloader
import time
api = TqApi(TqSim())
 symbol = 'cu1901'
market = 'SHFE'
scale = 'day'
code_tq = f'{market}.{symbol}'
 df = api.get_kline_serial('SHFE.cu1901', 24*60*60) # 86400秒线, 即日线
with closing(api):
df['datetime'] = df['datetime'].apply(lambda x: datetime.fromtimestamp(x/1e9))
print(df)

稍微转换了一下datetime字段显示,得到的结果是:

    id datetime open … close_oi symbol duration
0 43.0 2018-03-23 52410.0 … 17084.0 SHFE.cu1901 86400
1 44.0 2018-03-26 51580.0 … 16762.0 SHFE.cu1901 86400
2 45.0 2018-03-27 50410.0 … 16444.0 SHFE.cu1901 86400
3 46.0 2018-03-28 50980.0 … 16420.0 SHFE.cu1901 86400
4 47.0 2018-03-29 51030.0 … 16282.0 SHFE.cu1901 86400
5 48.0 2018-03-30 51200.0 … 16216.0 SHFE.cu1901 86400
6 49.0 2018-04-02 51760.0 … 16390.0 SHFE.cu1901 86400
7 50.0 2018-04-03 51680.0 … 16504.0 SHFE.cu1901 86400
8 51.0 2018-04-04 51790.0 … 16432.0 SHFE.cu1901 86400
9 52.0 2018-04-09 51390.0 … 20968.0 SHFE.cu1901 86400

为什么id从43开始,而不是从0 1开始?

而且实际上2018-03-23 也确实是cu1901 开盘后的42天了

这是bug,还是有意为之呢? 如何得到每个合约从挂牌日当天开始后的全部行情?

看了一下https://doc.shinnytech.com/tqsdk/latest/reference/tqsdk.api.html

搞定了,需要设定data_length。 但是设定成最大的8964(好奇怪的数字-_-)

df = api.get_kline_serial('SHFE.cu1901', duration_seconds=24*60*60, data_length=8964) # 86400秒线, 即日线
#df = api.get_kline_serial('SHFE.cu1901', 60*60) # 3600秒线, 即1h
with closing(api):
df['datetime'] = df['datetime'].apply(lambda x: datetime.fromtimestamp(x/1e9))
df = df.dropna()
print(df)

但是还需要dropna  终于得到了从头开始的结果

   id datetime open … close_oi symbol duration
8721 0.0 2018-01-16 56210.0 … 142.0 SHFE.cu1901 86400
8722 1.0 2018-01-17 55340.0 … 140.0 SHFE.cu1901 86400
8723 2.0 2018-01-18 55240.0 … 134.0 SHFE.cu1901 86400
8724 3.0 2018-01-19 55080.0 … 166.0 SHFE.cu1901 86400
8725 4.0 2018-01-22 54980.0 … 304.0 SHFE.cu1901 86400
8726 5.0 2018-01-23 55110.0 … 416.0 SHFE.cu1901 86400
8727 6.0 2018-01-24 54510.0 … 378.0 SHFE.cu1901 86400
8728 7.0 2018-01-25 54500.0 … 458.0 SHFE.cu1901 86400
8729 8.0 2018-01-26 55390.0 … 482.0 SHFE.cu1901 86400
8730 9.0 2018-01-29 55020.0 … 516.0 SHFE.cu1901 86400
8731 10.0 2018-01-30 55200.0 … 496.0 SHFE.cu1901 86400

Edited question