@Gyro^.^ 朋友,不要浪费时间了。这个策略偷看了几十秒后的未来。
####################################################################################
df = g.funds.copy() # 基金数据
current = get_current_data() # 当前数据
total_value = context.portfolio.total_value # 总市值
# 获取最新价
df['price'] = [current[c].last_price for c in df.index]
# 计算折价率
df['premium'] = (1.0 - df['price'] / df['net_value']) * 100
# 过滤(premium > 0.3)
df = df[df['premium'] > 0.3]
# 按折价率排序
df = df.sort_values(['premium'], ascending=False).head(nchoice)
choice = df.index.tolist()
#########################################################################################
df = g.funds.copy() # 基金数据
eft_list = df.index.tolist()
# 获取及时tick价格、挂单
ticks = get_ticks(eft_list, context.current_dt, count=1, fields=['a1_v', 'a1_p'], skip=True, df=True)
ticks.index = ticks.index.get_level_values(0) # 提取第一层作为 index
df_merged = pd.concat([df, ticks], axis=1, sort=True)
# 计算折价率
df_merged['premium'] = (1.0 - df_merged['a1_p'] / df_merged['net_value']) * 100
# 过滤(premium > 0.3)
df_merged = df_merged[df_merged['premium'] > 0.3]
# 按折价率排序
df_rank = df_merged.sort_values(['premium'], ascending=False).head(nchoice)
choice = df_rank.index.tolist()
2025-10-11