3.29K 浏览
0

代码1

import pandas as pd
import datetime
import time
from tqsdk import TqApi, TqBacktest, TargetPosTask,tafunc,TqAccount,TqAuth
from contextlib import closing
 async def HL_1(api,symbol):
              data_length=10
    klines=api.get_kline_serial(symbol, duration_seconds=60*1440, data_length=data_length)
    async with api.register_update_notify(klines) as update_chan:
        num=0
        while True:
            if num>=10:
                print(symbol,'结束')
                break
            async for _ in update_chan:
                if api.is_changing(klines,['close']):
                    print(klines.iloc[-1]['close'],klines.iloc[-1]['volume'],num)
                    num=num+1
    print('完全结束',symbol)       
symbol_list=['SHFE.cu2102']
api_master = TqApi(auth=TqAuth("xxxx", "xxxxxx"))
for symbol in symbol_list:
    api_master.create_task(HL_1(api_master,symbol))
with closing(api_master):
    while True:
        api_master.wait_update()


这段代码不能正常运行

代码2

import pandas as pd
import datetime
import time
from tqsdk import TqApi, TqBacktest, TargetPosTask,tafunc,TqAccount,TqAuth
from contextlib import closing
   async def HL_1(api,symbol):
           data_length=10
    klines=api.get_kline_serial(symbol, duration_seconds=60*1440, data_length=data_length)
    async with api.register_update_notify(klines) as update_chan:
        num=0
        while True:
            if num>=10:
                print(symbol,'结束')
                break
            async for _ in update_chan:
                  #if api.is_changing(klines,['close']):
                print(klines.iloc[-1]['close'],klines.iloc[-1]['volume'],num)
                num=num+1
    print('完全结束',symbol)       
symbol_list=['SHFE.cu2102']
api_master = TqApi(auth=TqAuth("xxxxx", "xxxxxxx"))
for symbol in symbol_list:
    api_master.create_task(HL_1(api_master,symbol))
with closing(api_master):
    while True:
        api_master.wait_update()


代码2 是可以正常运行的。

为什么,在 async for _ in update_chan: 里边加上 api.is_changing(klines,[‘close’]) 就不再运行了呢?

ringo 已回答的问题 2020年12月10日
0

if api.is_changing(klines.iloc[-1],[‘close’]):

因为你的kline没有选择对应的索引位置

NULL NULL 发表新评论 2020年12月11日

确实有效,谢谢 !

您正在查看1个答案中的1个,单击此处查看所有答案。