已解决1.95K 浏览
0

# -*- 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日
0

试了下没啥问题,但是好像没什么交易这个合约

rlliang 编辑评论 2021年8月13日

但是不应该很长时间后返回超时 很多新的期权合约都有这个问题 应该和有数据的合约一样立刻返回 目前这样会影响遍历期权合约的时间 程序应该是有bug