rqalpha
rqalpha copied to clipboard
分钟频率回测open_auction函数报错
(base) PS D:\rqalpha-mod-xtdata> python --version Python 3.8.8 (base) PS D:\rqalpha-mod-xtdata> rqalpha version xtquant文档地址:http://dict.thinktrader.net/nativeApi/start_now.html
Current Version: 5.5.3 $ cat test_openauction.py
可以自己import我们平台支持的第三方python模块,比如pandas、numpy等。
import talib
在这个方法中编写任何的初始化逻辑。context对象将会在你的算法策略的任何方法之间做传递。
def init(context): # 实时打印日志 logger.info("RunInfo: {}".format(context.run_info)) print("运行模式:",context.run_info.run_type)
before_trading此函数会在每天策略交易开始前被调用,当天只会被调用一次
def before_trading(context): logger.info("盘前执行函数,当前时间:",context.now)
你选择的证券的数据更新将会触发此段逻辑,例如日或分钟历史数据切片或者是实时数据切片更新
def open_auction(context, bar_dict): logger.info("开盘集合竞价时执行函数,当前时间:",context.now) bar_data=bar_dict['300925.XSHE'] print("bar_data:",bar_data,type(bar_data)) print("涨停价:",bar_data.limit_up) print("跌停价:",bar_data.limit_down) order_shares("300925.XSHE",500)
def handle_bar(context, bar_dict): pass
after_trading函数会在每天交易结束后被调用,当天只会被调用一次
def after_trading(context): logger.info("盘后执行函数,当前时间:",context.now)
(base) PS D:\rqalpha-mod-xtdata> rqalpha run -f .\test_openauction.py -s 2025-05-09 -e 2025-05-09 --frequency 1d xtquant文档地址:http://dict.thinktrader.net/nativeApi/start_now.html
[2025-05-14 17:00:23.358065] INFO: user_log: XTQuant DataSource is starting up... [2025-05-14 17:00:23.358065] INFO: user_log: Tushare Pro initialized [2025-05-14 17:00:23.358065] INFO: user_log: Loading instrument info from XTQuant... ***** xtdata连接成功 ***** 服务信息: {'tag': 'sp3', 'version': '1.0'} 服务地址: 127.0.0.1:58610 数据路径: D:\迅投QMT实盘交易端_万和证券版\bin.x64/../userdata_mini/datadir 设置xtdata.enable_hello = False可隐藏此消息
[2025-05-14 17:00:29.382806] INFO: user_log: Loaded 6895 instruments [2025-05-14 17:00:29.382806] INFO: user_log: Loading trading calendar... [2025-05-14 17:00:29.463706] INFO: user_log: Successfully loaded 4943 trading days [2025-05-14 17:00:29.464248] INFO: user_log: Current run type: BACKTEST, frequency: 1d, realtime mode: False [2025-05-14 17:00:29.465870] INFO: user_log: XTQuant数据源初始化完成 [2025-05-09 00:00:00.000000] INFO: user_log: RunInfo: RunInfo({'start_date': datetime.date(2025, 5, 9), 'end_date': datetime.date(2025, 5, 9), 'frequency': '1d', 'stock_starting_cash': 100000.0, 'future_starting_cash': 0, 'slippage': 0, 'matching_type': MATCHING_TYPE.CURRENT_BAR_CLOSE, 'commission_multiplier': None, 'stock_commission_multiplier': 1, 'futures_commission_multiplier': 1, 'margin_multiplier': 1, 'run_type': RUN_TYPE.BACKTEST}) [2025-05-09 00:00:00.000000] INFO: user_log: 运行模式: RUN_TYPE.BACKTEST [2025-05-09 00:00:00.000000] INFO: user_log: 盘前执行函数,当前时间: [2025-05-09 00:00:00.000000] INFO: user_log: 开盘集合竞价时执行函数,当前时间: [2025-05-09 00:00:00.000000] INFO: user_log: bar_data: PartialBarObject(order_book_id=300925.XSHE, datetime=2025-05-09 09:30:00, open=22.79, limit_up=27.36, limit_down=18.24, last=22.79) <class 'rqalpha.model.bar.PartialBarObject'> [2025-05-09 00:00:00.000000] INFO: user_log: 涨停价: 27.36 [2025-05-09 00:00:00.000000] INFO: user_log: 跌停价: 18.24 [2025-05-09 00:00:00.000000] WARN: user_system_log: 300925.XSHE 下单量 500 超过当前 Bar 成交量的 25.0%,实际成交 200 [2025-05-09 15:30:00.000000] INFO: user_log: 盘后执行函数,当前时间: [2025-05-09 15:30:00.000000] INFO: user_log: XTQuant DataSource is tearing down... [2025-05-09 15:30:00.000000] INFO: user_log: XTQuant数据源已关闭 (base) PS D:\rqalpha-mod-xtdata> rqalpha run -f .\test_openauction.py -s 2025-05-09 -e 2025-05-09 --frequency 1m xtquant文档地址:http://dict.thinktrader.net/nativeApi/start_now.html
[2025-05-14 17:01:18.206437] INFO: user_log: XTQuant DataSource is starting up... [2025-05-14 17:01:18.206998] INFO: user_log: Tushare Pro initialized [2025-05-14 17:01:18.209174] INFO: user_log: Loading instrument info from XTQuant... ***** xtdata连接成功 ***** 服务信息: {'tag': 'sp3', 'version': '1.0'} 服务地址: 127.0.0.1:58610 数据路径: D:\迅投QMT实盘交易端_万和证券版\bin.x64/../userdata_mini/datadir 设置xtdata.enable_hello = False可隐藏此消息
[2025-05-14 17:01:21.902244] INFO: user_log: Loaded 6895 instruments [2025-05-14 17:01:21.902545] INFO: user_log: Loading trading calendar... [2025-05-14 17:01:21.927355] INFO: user_log: Successfully loaded 4943 trading days [2025-05-14 17:01:21.927355] INFO: user_log: Current run type: BACKTEST, frequency: 1m, realtime mode: False [2025-05-14 17:01:21.927355] INFO: user_log: XTQuant数据源初始化完成 [2025-05-09 00:00:00.000000] INFO: user_log: RunInfo: RunInfo({'start_date': datetime.date(2025, 5, 9), 'end_date': datetime.date(2025, 5, 9), 'frequency': '1m', 'stock_starting_cash': 100000.0, 'future_starting_cash': 0, 'slippage': 0, 'matching_type': MATCHING_TYPE.CURRENT_BAR_CLOSE, 'commission_multiplier': None, 'stock_commission_multiplier': 1, 'futures_commission_multiplier': 1, 'margin_multiplier': 1, 'run_type': RUN_TYPE.BACKTEST}) [2025-05-09 00:00:00.000000] INFO: user_log: 运行模式: RUN_TYPE.BACKTEST [2025-05-09 09:01:00.000000] INFO: user_log: 盘前执行函数,当前时间: [2025-05-09 09:28:00.000000] INFO: user_log: 开盘集合竞价时执行函数,当前时间: [2025-05-14 17:01:21.982486] ERROR: system_log: unsupported trading_calendar_type EXCHANGE Traceback (most recent call last): File "d:\anaconda3\lib\site-packages\rqalpha\model\bar.py", line 358, in getitem return self._cache[order_book_id] KeyError: '300925.XSHE'
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "d:\anaconda3\lib\site-packages\rqalpha\data\trading_dates_mixin.py", line 45, in get_trading_calendar return self.trading_calendars[trading_calendar_type] KeyError: TRADING_CALENDAR_TYPE.EXCHANGE
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "d:\anaconda3\lib\site-packages\rqalpha\model\bar.py", line 364, in getitem trading_date = self._dt if self._frequency == "1d" else self._data_proxy.get_trading_dt(self._dt).date() File "d:\anaconda3\lib\site-packages\rqalpha\data\trading_dates_mixin.py", line 82, in get_trading_dt trading_date = self.get_future_trading_date(calendar_dt) File "d:\anaconda3\lib\site-packages\rqalpha\data\trading_dates_mixin.py", line 87, in get_future_trading_date return self._get_future_trading_date(dt.replace(minute=0, second=0, microsecond=0)) File "d:\anaconda3\lib\site-packages\rqalpha\data\trading_dates_mixin.py", line 110, in _get_future_trading_date trading_dates = self.get_trading_calendar(TRADING_CALENDAR_TYPE.EXCHANGE) File "d:\anaconda3\lib\site-packages\rqalpha\data\trading_dates_mixin.py", line 47, in get_trading_calendar raise NotImplementedError("unsupported trading_calendar_type {}".format(trading_calendar_type)) NotImplementedError: unsupported trading_calendar_type EXCHANGE [2025-05-09 09:28:00.000000] ERROR: user_system_log: 策略运行产生异常 Traceback (most recent call last): File "d:\anaconda3\lib\site-packages\rqalpha\model\bar.py", line 358, in getitem return self._cache[order_book_id] KeyError: '300925.XSHE'
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "d:\anaconda3\lib\site-packages\rqalpha\data\trading_dates_mixin.py", line 45, in get_trading_calendar return self.trading_calendars[trading_calendar_type] KeyError: TRADING_CALENDAR_TYPE.EXCHANGE
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "d:\anaconda3\lib\site-packages\rqalpha\model\bar.py", line 364, in getitem trading_date = self._dt if self._frequency == "1d" else self._data_proxy.get_trading_dt(self._dt).date() File "d:\anaconda3\lib\site-packages\rqalpha\data\trading_dates_mixin.py", line 82, in get_trading_dt trading_date = self.get_future_trading_date(calendar_dt) File "d:\anaconda3\lib\site-packages\rqalpha\data\trading_dates_mixin.py", line 87, in get_future_trading_date return self._get_future_trading_date(dt.replace(minute=0, second=0, microsecond=0)) File "d:\anaconda3\lib\site-packages\rqalpha\data\trading_dates_mixin.py", line 110, in _get_future_trading_date trading_dates = self.get_trading_calendar(TRADING_CALENDAR_TYPE.EXCHANGE) File "d:\anaconda3\lib\site-packages\rqalpha\data\trading_dates_mixin.py", line 47, in get_trading_calendar raise NotImplementedError("unsupported trading_calendar_type {}".format(trading_calendar_type)) NotImplementedError: unsupported trading_calendar_type EXCHANGE
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "d:\anaconda3\lib\site-packages\rqalpha\core\strategy.py", line 99, in open_auction self._open_auction(self.user_context, bar_dict) File ".\test_openauction.py", line 17, in open_auction bar_data=bar_dict['300925.XSHE'] File "d:\anaconda3\lib\site-packages\rqalpha\model\bar.py", line 372, in getitem raise patch_user_exc(KeyError((u"id_or_symbols {} does not exist").format(key))) KeyError: '您选择的证券[300925.XSHE]不存在。'
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "d:\anaconda3\lib\site-packages\rqalpha\main.py", line 228, in run executor.run(bar_dict) File "d:\anaconda3\lib\site-packages\rqalpha\core\executor.py", line 52, in run self._split_and_publish(event) File "d:\anaconda3\lib\site-packages\rqalpha\core\executor.py", line 99, in _split_and_publish self._env.event_bus.publish_event(e) File "d:\anaconda3\lib\site-packages\rqalpha\core\events.py", line 46, in publish_event if listener(event): File "d:\anaconda3\lib\site-packages\rqalpha\core\strategy.py", line 34, in wrapper return func(*args, **kwargs) File "d:\anaconda3\lib\site-packages\rqalpha\core\strategy.py", line 99, in open_auction self._open_auction(self._user_context, bar_dict) File "d:\anaconda3\lib\site-packages\rqalpha\core\execution_context.py", line 100, in exit raise user_exc rqalpha.utils.exception.CustomException: Traceback (most recent call last): File .\test_openauction.py, line 17 in open_auction bar_data=bar_dict['300925.XSHE'] --> context = Context({}) --> bar_dict = BarMap()
KeyError: '您选择的证券[300925.XSHE]不存在。' [2025-05-09 09:28:00.000000] ERROR: user_system_log: Traceback (most recent call last): File .\test_openauction.py, line 17 in open_auction bar_data=bar_dict['300925.XSHE'] --> context = Context({}) --> bar_dict = BarMap()
KeyError: '您选择的证券[300925.XSHE]不存在。' [2025-05-09 09:28:00.000000] INFO: user_log: XTQuant DataSource is tearing down... [2025-05-09 09:28:00.000000] INFO: user_log: XTQuant数据源已关闭 (base) PS D:\rqalpha-mod-xtdata>
您好,您的邮件已收到,我会尽快给您回复。 祝您工作顺利,生活愉快!
已经确认本地数据源已有数据,日线open_auction执行正常 $ cat test_min.py
可以自己import我们平台支持的第三方python模块,比如pandas、numpy等。
import talib
在这个方法中编写任何的初始化逻辑。context对象将会在你的算法策略的任何方法之间做传递。
def init(context): # 实时打印日志 logger.info("RunInfo: {}".format(context.run_info)) print("运行模式:",context.run_info.run_type)
before_trading此函数会在每天策略交易开始前被调用,当天只会被调用一次
def before_trading(context): logger.info("盘前执行函数,当前时间:",context.now)
你选择的证券的数据更新将会触发此段逻辑,例如日或分钟历史数据切片或者是实时数据切片更新
def open_auction(context, bar_dict): logger.info("开盘集合竞价时执行函数,当前时间:",context.now)
def handle_bar(context, bar_dict): hour=context.now.hour minute=context.now.minute if hour==9 and minute<32 : bar_data=bar_dict["300925.XSHE"] print(bar_data)
after_trading函数会在每天交易结束后被调用,当天只会被调用一次
def after_trading(context): logger.info("盘后执行函数,当前时间:",context.now) (base) PS D:\rqalpha-mod-xtdata> rqalpha run -f .\test_min.py -s 2025-05-09 -e 2025-05-09 --frequency 1m xtquant文档地址:http://dict.thinktrader.net/nativeApi/start_now.html
[2025-05-14 17:18:22.795762] INFO: user_log: XTQuant DataSource is starting up... [2025-05-14 17:18:22.795762] INFO: user_log: Tushare Pro initialized [2025-05-14 17:18:22.795762] INFO: user_log: Loading instrument info from XTQuant... ***** xtdata连接成功 ***** 服务信息: {'tag': 'sp3', 'version': '1.0'} 服务地址: 127.0.0.1:58610 数据路径: D:\迅投QMT实盘交易端_万和证券版\bin.x64/../userdata_mini/datadir 设置xtdata.enable_hello = False可隐藏此消息
[2025-05-14 17:18:26.458557] INFO: user_log: Loaded 6895 instruments [2025-05-14 17:18:26.458557] INFO: user_log: Loading trading calendar... [2025-05-14 17:18:26.500869] INFO: user_log: Successfully loaded 4943 trading days [2025-05-14 17:18:26.500869] INFO: user_log: Current run type: BACKTEST, frequency: 1m, realtime mode: False [2025-05-14 17:18:26.500869] INFO: user_log: XTQuant数据源初始化完成 [2025-05-09 00:00:00.000000] INFO: user_log: RunInfo: RunInfo({'start_date': datetime.date(2025, 5, 9), 'end_date': datetime.date(2025, 5, 9), 'frequency': '1m', 'stock_starting_cash': 100000.0, 'future_starting_cash': 0, 'slippage': 0, 'matching_type': MATCHING_TYPE.CURRENT_BAR_CLOSE, 'commission_multiplier': None, 'stock_commission_multiplier': 1, 'futures_commission_multiplier': 1, 'margin_multiplier': 1, 'run_type': RUN_TYPE.BACKTEST}) [2025-05-09 00:00:00.000000] INFO: user_log: 运行模式: RUN_TYPE.BACKTEST [2025-05-09 09:01:00.000000] INFO: user_log: 盘前执行函数,当前时间: [2025-05-09 09:28:00.000000] INFO: user_log: 开盘集合竞价时执行函数,当前时间: [2025-05-09 09:31:00.000000] INFO: user_log: BarObject(order_book_id=300925.XSHE, datetime=2025-05-09 09:31:00, open=22.78, close=22.77, high=22.860000000000003, low=22.69, limit_up=27.36, limit_down=18.24) [2025-05-09 15:30:00.000000] INFO: user_log: 盘后执行函数,当前时间: [2025-05-09 15:30:00.000000] INFO: user_log: XTQuant DataSource is tearing down... [2025-05-09 15:30:00.000000] INFO: user_log: XTQuant数据源已关闭
code_list = ["300925.SZ"] period = "1m" data=xtdata.get_market_data_ex(field_list=[], stock_list=code_list, period=period, start_time='', end_time='20250509093100', count=2, dividend_type='none', fill_data=False) data {'300925.SZ': time open high low close volume amount settelementPrice openInterest preClose suspendFlag 20250509093000 1746754200000 22.79 22.79 22.79 22.79 919 2094401.0 0.0 14 22.80 0 20250509093100 1746754260000 22.78 22.86 22.69 22.77 7555 17218352.0 0.0 13 22.79 0}
从现象看,应该是你的 data source 中 get_trading_calendars 接口没有返回类型为 EXCHANGE 的交易日历?