周k线在量化中非常重要
任务核心
# ----------------- 周k线 ----------------------------------
async def pro_weekly_bar(self,code):
logger.info(f'starting:{code}')
fields='ts_code,trade_date,open,high,low,close,pre_close,change,pct_chg,vol,amount'
table_name=Settings.STOCKS.WEEKLY_BAR.value
tmp=self.weekly_bar.query('ts_code==@code')
# df = pro.weekly(ts_code='000001.SZ', start_date='20180101', end_date='20181101', fields='ts_code,trade_date,open,high,low,close,vol,amount')
df = self.pro.weekly(ts_code=code, start_date='20160101', end_date=TimeUtils.fmt_cur_trade_date())
df =df[::-1]
# 查找未同步的交易日
filter=df[~df['trade_date'].isin(tmp['trade_date'])]
filter.fillna(0,inplace=True)
return (fields,table_name,filter,code)
def pro_weekly_bar_callback(self,obj):
fields,table_name,df,code=obj.result()
rows,_=df.shape
if rows>0:
DBUtils.store(self.db,fields=fields,table_name=table_name,df=df)
logger.info(f'finish:{code}')
处理回调
def pro_weekly_bar_callback(self,obj):
fields,table_name,df,code=obj.result()
rows,_=df.shape
if rows>0:
DBUtils.store(self.db,fields=fields,table_name=table_name,df=df)
logger.info(f'finish:{code}')
任务创建
async def pro_weekly_bar_tasks(self):
# 算法调整 从交易日历中找
self.weekly_bar=pd.read_sql('select ts_code,trade_date from weekly_bar',self.db)
# 获取股票代码
df=pd.read_sql('select ts_code from stock_basic',self.db)
works=[]
for symbol in zip(df['ts_code']):
code,= symbol
work=asyncio.create_task(self.pro_weekly_bar(code))
work.add_done_callback(self.pro_weekly_bar_callback)
works.append(work)
await asyncio.wait(works)

被折叠的 条评论
为什么被折叠?



