-
Notifications
You must be signed in to change notification settings - Fork 1.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
在0.3.14版本可用的代码,在2.0.6不可以用了,如何解决? #79
Comments
配置文件有比较大的改动,包括系统Mod的配置。 请参考 http://rqalpha.readthedocs.io/zh_CN/stable/api/config.html#rqalpha 或者您把你的配置信息贴出来 我帮您看一下哪里出错了也OK |
我今天再试了一次,C:\Users\Administrator.rqalpha目录下的config.yml和C:\Anaconda3目录下的config.yml配置相同,我仅修改了 股票起始资金,默认为0stock_starting_cash: 100000 期货起始资金,默认为0future_starting_cash: 100000 cmd:rqalpha run -f rsi.py -s 2014-01-01 -e 2016-01-01 -o result.pkl --plot --progress --stock-starting-cash 100000 而在rqalpha2.0文档中说到: 注1: 如果没有指定 config.yml, RQAlpha 在运行时会自动在当前目录下寻找 config.yml 文件作为用户配置文件,如果没有寻找到,则按照默认配置运行。 注2: 您只需要指定需要修改的配置信息,您没有指定的部分,会按照默认配置项来运行。 优先级 策略代码中配置优先级 > 启动策略命令行传参 > 用户配置文件 > 系统配置文件 我认为出错的原因可能是系统配置文件> 用户配置文件,导致用户配置文件不起作用.因为报错的代码,我发现有stock starting cash and future starting cash can not be both 0的字眼,而我已经在config.yml 指定了相关配置. |
你可以直接用example的原生代码buy_and_hold.py和rsi.py,在cmd里rqalpha run -f buy_and_hold.py或者rqalpha run -f rsi.py都会报错,报错代码是一样的.而在0.3.14版本中,我配置好了C:\Users\Administrator.rqalpha目录下的config.yml,我直接cmd运行rqalpha run -f xxx.py不会报错的. |
注:我现在的config.yml是2.0.6版本的,不是0.3.14版本的. |
@myz8110 http://rqalpha.readthedocs.io/zh_CN/latest/history.html#id4 RQAlpha不再默认选择 ~/.rqalpha/config.yml 作为用户配置文件了。这种默认的方式不太好。取而代之的是RQAlpha 会根据用户 通过 |
寻找 当前执行命令的目录下是否包含 config.yml,我把config.yml放到example下,确实可以了.但是报错name error:name 'logger' is not defined,把我代码中的logger.info改成print就没有报错了.logger是改了吗? |
@myz8110 这个很奇怪哎 logger 我这里运行没有问题呀 logger 是在 |
是这样,我有个testpp.py,代码如下: #coding=utf-8
from rqalpha.api import *
#------判断类--------
class judge(object):
min={}
#储存指数最高点
max={}
#储存指数涨幅
rate={}
quotation={}
net_point={}
cash={}
#---------判断牛熊-------------
def cow_bear(self,context,bar_dict,index,date,x=1.5,y=1.5):
dt=context.now
logger.info(dt)
在另一个test.py,代码如下:
import testpp as mc
def initialize(context):
mc.judge()
def before_trading(context):
pass
def after_trading(context):
pass
def handle_bar(context, bar_dict):
index='000300.XSHG'
date='date2'
mc.judge().cow_bear(context,bar_dict,index,date) 然后我在cmd运行rqalpha run -f test.py时就会报错:name 'logger' is not defined |
而在之前的版本并没有这个问题. |
@myz8110 我怀疑是有别的报错 导致初始化没有完成,从而产生了logger没有初始化的问题。您看一下是否是错误日志您只看了最后的报错,但是没有看完整。 您直接执行 |
我已经把C:\Users\Administrator.rqalpha目录下的的config,C:\Anaconda3目录下的config删除掉,仅保留C:\Anaconda3\examples目录下的config. |
config全配置如下:
|
运行test.py报错如下: C:\Anaconda3\examples>rqalpha run -f test.py NameError: name 'logger' is not defined C:\Anaconda3\examples> |
我觉得如果是config设置有问题,那rsi.py也应该报错才对,但是并没有. |
@myz8110 原因是这样的, 是通过如下方式注入进去的: def create_base_scope():
import copy
from . import user_module
scope = copy.copy(user_module.__dict__)
scope.update({
"logger": user_log,
"print": user_print,
})
return scope 之所以这么做的原因是不想覆盖用户 也就是说,您额外写的文件通过 在下一个版本中,我们将 logger 通过API 暴露出去了,下一个小版本更新后您就可以使用这种方式来输出日志信息了。 如果您现在就想使用的话,也可以通过如下方式引入 from rqalpha.utils.logger import user_log as logger |
我原先用的是0.3.14版本,,为了方便重复使用,不必每次都敲一大堆字,我修改了C:\Users\Administrator.rqalpha目录下的config.yml很多参数,cmd命令行下直接cd example,rqalpha run -f XXX.py,这样是不会报错的.但是更新到2.0.6之后,报错了.但是cd example,rqalpha run -f XXX.py -s 2014-01-01 -e 2016-01-01 -o result.pkl --plot --progress --stock-starting-cash 100000 这样又不会了.我尝试了以下几种方法都不行:1.修改C:\Anaconda3目录下的config.yml;2.把C:\Anaconda3目录下的config.yml和C:\Users\Administrator.rqalpha目录下的config.yml都删除掉.以上方法都不起效.
我想问下有什么解决方法??每次运行代码都要在后面敲一大堆参数觉得很麻烦.其中甚至有个name error:name 'logger' is not defined.
报错如下,以前报错是红字,我还会修改自己的代码,而现在报错的是白字.完全看不懂.(抱歉下面显示乱码的都是空格,我在cmd命令行里复制过来的):
The text was updated successfully, but these errors were encountered: