实盘报错、异常退出的常见原因
实盘无法启动
- 没有在线的托管者
实盘所选的托管者离线时实盘无法启动。在托管者页面确认托管者在线,或换一个在线的托管者。 - 账户余额不足
启动实盘需要预付第一个小时的费用,余额不足时无法启动;运行中余额耗尽,实盘会被平台停止。充值后重新启动,见实盘计费与充值。 - 租用的策略到期或并发数已满
租用的策略到期后,使用它的实盘会被停止且无法再启动;达到租用的最多并发实盘数后,无法再启动新的实盘。 - 密钥解密失败
报错中包含secret key decrypt failed (wrong password)。原因是修改了发明者量化交易平台的账号密码,原先配置的交易所密钥无法再解密。处理方法:- 在「交易所」管理页面重新填写交易所的密钥、密码等信息。
- 停止所有托管者,用新密码重新启动托管者。
- 凭据文件读不到
交易所配置中使用了file:///xxx.txt凭据文件,而实盘目录里没有该文件,报错中包含read key file;路径不合法时报key file path must be relative and cannot contain '..'或key file path escapes the robot directory。见本地凭据文件。
策略代码导致的错误
-
静态语法错误

此类错误比较明显,通常在策略编辑页面就能看到错误标记,回测时也能发现。
-
运行时错误
最常见的是对函数返回值不做合法性判断就直接使用。 -
过度占用内存
在全局变量里保存过多无法被垃圾回收的内容,导致内存占用过大。 -
未合理使用
exchange.Go并发请求
调用异步的exchange.Go后没有及时wait等待结果,导致并发任务数量过多。 -
递归调用过深
递归层数过多,超出调用栈大小。
其它报错
- 接口业务错误、网络请求错误
此类报错会显示相关的交易所对象名称、函数名称、错误消息和原因,本身不会导致实盘异常停止。它们通常是起因而不是直接原因,直接原因一般是没有判断接口返回值是否合法就直接使用而引发的程序异常。 interrupt错误
程序正在执行某个操作(例如访问交易所接口)时,用户点击了实盘页面上的停止按钮,停止中断了当前操作而打印的日志。它没有影响,只是一条记录。
更多问题见常见问题汇总。