# -*- encoding:utf-8 -*-
import time
import datetime
import pandas as pd
from tqsdk import TqApi, TqSim, TqAuth, TqTimeoutError
seconds = 60
lengths = 60
def get_kline_serial(api, contract, code):
print("get_kline_serial: {}".format(code))
options = api.query_options(contract, option_class="PUT", expired=False)
for i in range(0, len(options)):
try:
print(options[i])
kline = api.get_kline_serial("{}".format(options[i]), seconds, data_length=lengths)
for k in range(0, len(kline)):
time = str(datetime.datetime.fromtimestamp(kline['datetime'][k]/1e9 + seconds))
except TqTimeoutError as e:
print("获取合约{}超时".format(options[i]))
return 0
def is_changing(api, kline, items):
if api.is_changing(kline.iloc[-1], "datetime"):
option = kline.iloc[-1].symbol
if __name__ == "__main__":
api = TqApi(TqSim(), auth=TqAuth("xxx", "yyy"))
get_kline_serial(api, "DCE.p2201", "P2201")
api.close()
rlliang 选择最佳答案 2021年8月13日
但是不应该很长时间后返回超时 很多新的期权合约都有这个问题 应该和有数据的合约一样立刻返回 目前这样会影响遍历期权合约的时间 程序应该是有bug