目前的新建策略和各个默认策略模板的OnStart中的初始登录代码是这样的

#开始时间,用于初始化一些参数 def OnStart(context) : print("I\'m starting...") #登录交易账号,需在主页用户管理中设置账号,并把期货测试替换成您的账户名称 context.myacc = None if "回测期货" in context.accounts : print("登录交易账号[回测期货]") if context.accounts["回测期货"].Login() : context.myacc = context.accounts["回测期货"]

这样在回测时没有问题
但是很多人在把回测代码迁移到模拟或者实盘上就会出现各种报错
会提示context.myacc是None导致策略崩溃
这里是因为这份代码中的

if context.accounts["回测期货"].Login() :

这个条件导致的,回测中不会存在账号登录失败的问题,而模拟实盘可能因为各种原因(账号密码错误/柜台关闭)等原因登录失败,导致没有执行

context.myacc = context.accounts["回测期货"]

这一句,导致的问题

建议修改成

#开始时间,用于初始化一些参数 def OnStart(context) : print("I\'m starting...") #登录交易账号,需在主页用户管理中设置账号,并把期货测试替换成您的账户名称 context.myacc = None if "回测期货" in context.accounts : context.myacc = context.accounts["回测期货"] print("登录交易账号[回测期货]") context.accounts["回测期货"].Login() else: print("该账号未配置")