3.18K 浏览
0

import datetime,time
import numpy as np
import talib as ta
from tqsdk import TqApi, TqBacktest,TqAccount,TqSim
 api = TqApi(backtest=TqBacktest(start_dt=datetime.date(2019, 3, 1), end_dt=datetime.date(2020, 5, 27)))
_kline = api.get_kline_serial('CZCE.AP010',60*60*24)
  while True:
    api.wait_update()
    if api.is_changing(_kline.iloc[-1]): 
        _len = len(_kline['datetime'][_kline['datetime'] > 0])
        _dt = _kline['datetime'].iloc[-1]
        _dt = datetime.datetime.fromtimestamp(_dt/1e9)
        if _len < 77:
            print('数据不足[%s]:%s,id:%s'%(_dt,_len,_kline['id'].iloc[-1]))
            continue
        _close = np.array(_kline['close'])
        rsi7 = ta.RSI(_close, timeperiod=7)

(插入代码的时候,格式被修改了,运行之前需要手工微调)

是可以获取到5月27日的。
但是AP010,不是说[每年]的10月份交割的合约吗?
2018年上市的10月份合约,代码不也是AP010吗?
那个合约的数据如何获取呢?

uyesino 编辑评论 2020年6月1日

2018年上市的10月份合约,代码应该是AP910.
后两位为交割月,倒数第3位为年,注意只用了一位来表示。
AP010,倒数第3位为0,最近年份应为2020,因此是2020年交割的,2019年10月上市。
2018年上市,应该2019年交割,所以取最后一位9。

0

因为这个合约是2019年10月上市的,所以从2019这个日期开始的。然后我用你这段代码能取到5月27的日线

NULL NULL 未选择答案 2020年5月29日