QMT/iQuant居然禁止redis获取股票行情数据,如何破解
QMT禁止redis获取股票行情数据,如何破解
因为QMT没有转债的规模,而国信iquant本身又把requests 库给封禁了,它无法通过requests 获取任何外部数据,比如访问东财,tushare都会提示访问超时。(后面发现它修改了requests的源码)
于是发现iquant的redis是内置库,不需要pip安装,所以第一时间就想到使用redis获取转债数据。
简单测试了一下,redis是可以获取数据的。比如随便丢一个字符到redis,然后QMT可以获取到这个字符数据
于是就把原来的策略里,使用requests 调用API的部分,改成redis。
可是运行后发现报错:
2024-09-10 10:05:19,851 [INFO] [0x00000e24] [msg service] msg: 0C:\iquant\python\新建策略文件.py_SH00030021
DataError:Sensitive Data Detected, Forbidden!
报错信息说的很明显,敏感信息检测到,禁止!
居然对redis的数据进行检验,很明显这部分是QMT对redis的源码进行了修改。
于是根据报错的提示,找到 目录:
D:\tool\gjzq_qmt_simulation\bin.x64\Lib\site-packages\redis,下面的client.py
找到对应的行:
的确有一个check_response 的函数用于检测 redis的内容,看正则表达式和变量命名(search_stock),类似股票代码的数据传输被阻止了,检测到之后直接raise Error,程序会停止的。
解决办法,也很简单,直接把这一段 代码删除就好了。
然后需要重启你的QMT,不然修改的代码不会生效。
然后重新运行的你的策略,发现一起正常了。
需要开通QMT和代写量化策略,可以关注公众号:
因为QMT没有转债的规模,而国信iquant本身又把requests 库给封禁了,它无法通过requests 获取任何外部数据,比如访问东财,tushare都会提示访问超时。(后面发现它修改了requests的源码)
于是发现iquant的redis是内置库,不需要pip安装,所以第一时间就想到使用redis获取转债数据。
简单测试了一下,redis是可以获取数据的。比如随便丢一个字符到redis,然后QMT可以获取到这个字符数据
于是就把原来的策略里,使用requests 调用API的部分,改成redis。
可是运行后发现报错:
2024-09-10 10:05:19,851 [INFO] [0x00000e24] [msg service] msg: 0C:\iquant\python\新建策略文件.py_SH00030021
DataError:Sensitive Data Detected, Forbidden!
报错信息说的很明显,敏感信息检测到,禁止!
居然对redis的数据进行检验,很明显这部分是QMT对redis的源码进行了修改。
于是根据报错的提示,找到 目录:
D:\tool\gjzq_qmt_simulation\bin.x64\Lib\site-packages\redis,下面的client.py
找到对应的行:
的确有一个check_response 的函数用于检测 redis的内容,看正则表达式和变量命名(search_stock),类似股票代码的数据传输被阻止了,检测到之后直接raise Error,程序会停止的。
解决办法,也很简单,直接把这一段 代码删除就好了。
然后需要重启你的QMT,不然修改的代码不会生效。
然后重新运行的你的策略,发现一起正常了。
需要开通QMT和代写量化策略,可以关注公众号: