设为首页
收藏本站
切换到窄版
论坛
BBS
登录
立即注册
zeniquant
»
论坛
›
策略展示大厅
›
回测数据可视化秀场
›
QMT策略回测中,在handlebar里,每天都取获取过去三天涨 ...
返回列表
发布新帖
查看:
84
|
回复:
0
QMT策略回测中,在handlebar里,每天都取获取过去三天涨幅前50的品种
Zylh_Admin
Zylh_Admin
当前离线
积分
257
29
主题
70
回帖
257
积分
管理员
积分
257
发消息
发表于 2025-5-15 11:25:58
|
查看全部
|
阅读模式
实现效果
代码分享
# coding:gbk
def init(C):
C.stock_list = C.get_stock_list_in_sector('沪深300')
return
def handlebar(C):
#当前k线日期
bar_date = timetag_to_datetime(C.get_bar_timetag(C.barpos), '%Y%m%d%H%M%S')
#回测不需要订阅最新行情使用本地数据速度更快 指定subscribe参数为否. 如果回测多个品种 需要先下载对应周期历史数据
local_data = C.get_market_data_ex(['close'], C.stock_list, end_time = bar_date, period = C.period, count = 3)
# 初始化涨幅和日期范围存储结构
growth_rates = {}
for stock, df in local_data.items():
# 确保DataFrame是按日期排序的
df_sorted = df.sort_index()
# 计算涨幅:(最后一天的收盘价 - 第一天的收盘价) / 第一天的收盘价
if len(df_sorted) >= 2: # 确保有至少两天的数据来计算涨幅
start_date = df_sorted.index[0]
end_date = df_sorted.index[-1]
growth_rate = (df_sorted['close'].iloc[-1] - df_sorted['close'].iloc[0]) / df_sorted['close'].iloc[0]
# 存储涨幅和日期范围
growth_rates[stock] = (growth_rate, start_date, end_date)
# 将股票根据涨幅进行排序,得到一个由(股票, (涨幅, 起始日期, 结束日期))组成的列表
sorted_growth_rates = sorted(growth_rates.items(), key=lambda x: x[1][0], reverse=True)
# 提取排序后的前50个股票的名称
top_50_stocks = [stock for stock, _ in sorted_growth_rates[:50]]
# 打印股票列表
print(f"{bar_date}Top 50 stocks by growth rate:")
print(top_50_stocks)
复制代码
回复
举报
返回列表
发布新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
浏览过的版块
常见问题
关于我们
关于我们
加入我们
新闻动态
联系我们
服务支持
官方商城
成功案例
常见问题
售后服务
投诉/建议联系
admin@discuz.vip
未经授权禁止转载,复制和建立镜像,
如有违反,追究法律责任
关注公众号
添加微信客服
Copyright © 2001-2025
zeniquant
版权所有
All Rights Reserved.
粤ICP备2025409975号-1
关灯
在本版发帖
扫一扫添加微信客服
QQ客服
返回顶部
快速回复
返回顶部
返回列表