返回列表 发布新帖

【done】请教:回测时get_market_data跟get_market_data_ex运行逻辑不一样吗

1574 5
发表于 2024-3-29 15:50:40 | 显示全部楼层 阅读模式
get_market_data跟get_market_data_ex返回数据的周期不一样吗?
get_market_data_ex没有按照设定的时间段一天一天的推送,get_market_data可以
大家也是这样情况吗?
        fields = ['index', 'open', 'high', 'low', 'close', 'volume', 'amount']        periods= 5          start_time = '20240219'          end_time = '20240315'        for idx, stock_code in enumerate(stock_codes):                  print(f"处理股票代码:{stock_code}")

                '''
                param_df = ContextInfo.get_market_data(
                        fields=fields[1:],
                        stock_code=[stock_code],
                        count=int(periods)+1,
                        dividend_type='front'
                        )
                print(param_df)
                '''
               
               
               
                param_df = ContextInfo.get_market_data_ex(  
                        fields=fields[1:],
                        stock_code=[stock_code],  
                        count=int(periods)+1,  
                        dividend_type='front'  # 前复权
                        )  
                print(param_df)
注释掉的get_market_data能在我设定的起始时间段内回测能一根一根K线的推数据。而get_market_data_ex都是推了今天最新的数据,而且全是一样的。
        param_df = ContextInfo.get_market_data_ex(  
                fields=fields[1:],  
                stock_code=['603660.SH'],  
                period='follow',
                start_time='',  
                end_time='',
                count=int(5)+1,  
                dividend_type='follow',
                fill_data=True,
                subscribe=True
                )  
        print(param_df)
这样,根据手册所有参数都写上,也不行啊,加测时都不是设定日期内的数据,而是全推今天最新的数据啊,怎么回事??

总的时间顺序如:第一周期20240213、20240214、20240215、20240216、20240219;第二周期20240214、20240215、20240216、20240219、20240220;……;最后一个周期20240311、20240312、20240313、20240314、20240315。在运行回测时get_market_data可以做到上而的效果,而get_market_data_ex全是一样的数据。

我昨晚弄了7个小时,没找到原因在哪…………

评论5

*******6310
发表于 2024-3-29 17:42:27 | 显示全部楼层
get_market_data_ex 需要手动指定end_time, 否则默认到最后, gmd不需要, 默认到历史k线位置. 两个接口都可以用.
*******5858楼主
发表于 2024-4-1 12:23:55 | 显示全部楼层
*******6310 发表于 2024-3-29 17:42
get_market_data_ex 需要手动指定end_time, 否则默认到最后, gmd不需要, 默认到历史k线位置. 两个接口都可 ...

多谢你的回复。
如果需要手动指定end_time,回测逻辑就不通了啊,因为回测时是从start_time到end_time一根一根K线推送的。get_market_data_ex还是不正常啊,迅投技术能解答一下吗?
*******5858楼主
发表于 2024-4-1 12:30:37 | 显示全部楼层
版主能解答一下这个问题吗?
本来get_market_data用得非常好,但因为我现在需要使用1分钟K线,而get_market_data没有1分钟数据的,不得不改用get_market_data_ex,但get_market_data_ex数据推送模式就不符合回测逻辑。请问如何解决?
*******6310
发表于 2024-4-1 18:19:26 | 显示全部楼层
*******5858 发表于 2024-4-1 12:23
多谢你的回复。
如果需要手动指定end_time,回测逻辑就不通了啊,因为回测时是从start_time到end_time一 ...
  1. def handlebar(C):
  2.         d = C.barpos
  3.         # 获取当前 K 线时间
  4.         bar_date = timetag_to_datetime(C.get_bar_timetag(C.barpos), "%Y%m%d")
  5.         data = C.get_market_data_ex(['close'], ['600000.SH'], end_time = bar_date, period ='1d', count = 10)
  6.         print(data)
复制代码

回测这么用就行。
*******5858楼主
发表于 2024-4-2 12:03:56 | 显示全部楼层
*******6310 发表于 2024-4-1 18:19
回测这么用就行。

非常的感谢!使用上面的代码问题已解决。:handshake

回复

您需要登录后才可以回帖 登录 | 立即注册

客服专线

400-080-8112

用思考的速度交易,用真诚的态度合作,我们是认真的!
  • 关注公众号
  • 添加微信客服
Copyright © 2001-2025 迅投QMT社区 版权所有 All Rights Reserved. 蜀ICP备19002686号-2
关灯 快速发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表