自己造个轮子
#获取量比
def get_volume_ratio(ContextInfo:ContextInfo, stock_list:list, bar_date_str:str):
#当前 bar 时间
bar_date = datetime.datetime.strptime(bar_date_str, '%Y%m%d%H%M%S')
bar_date_time = bar_date.time()
morning_open = datetime.time(9, 30, 0)
morning_close = datetime.time(11, 30, 0)
afternoon_open = datetime.time(13, 0, 0)
if bar_date_time > morning_close:
#早盘结束
#计算离中午开盘的时间
time_difference = datetime.datetime.combine(datetime.date.today(), bar_date_time) - datetime.datetime.combine(datetime.date.today(), afternoon_open)
duration_minutes = time_difference.total_seconds() / 60 + 120
else:
#早盘中
#计算离早盘开盘的时间
time_difference = datetime.datetime.combine(datetime.date.today(), bar_date_time) - datetime.datetime.combine(datetime.date.today(), morning_open)
duration_minutes = time_difference.total_seconds() / 60
#get volume for the stock list
volume_list = ContextInfo.get_market_data_ex(['volume'],stock_list,'1d','',bar_date_str,6,'front',True,True)
print('volume_list:', volume_list)
volume_sum = {}
volume_current = {}
volume_ratio = {}
for key, stock_volume in volume_list.items():
volume_sum[key] = stock_volume.head(5).sum()
#print('volume_sum:',volume_sum[key])
volume_current[key] = stock_volume.tail(1)
#print('volume_current:',volume_current[key])
volume_ratio[key] = (volume_current[key] / duration_minutes) / (volume_sum[key] / (4 * 60 * 5))
#print('volume_ratio key:', volume_ratio)
return volume_ratio |