迅投QMT使用小技巧: account未定义 account not defined

最近有朋友问我,在使用QMT自带的一些策略进行回测或实盘交易时,会提示错误,比如 account未定义、account未找到 或者 account not defined。 (大家如果有任何疑问可以通过 WTSolutions微信公众号的聊天窗口向我提问)

通常提出这些问题的朋友都是刚入门QMT,对代码还并不熟悉。其实这个错误非常常见,也很好解决。

问题出在哪

以迅投QMT自带的「双均线实盘示例」PY策略为例,代码(节选)中:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#encoding:gbk
import pandas as pd
import numpy as np
import datetime

"""
示例说明:双均线实盘策略,通过计算快慢双均线,在金叉时买入,死叉时做卖出
"""

class a():
pass
A = a() # 创建空的类的实例 用来保存委托状态
# ContextInfo对象在盘中每次handlebar调用前都会被深拷贝
# 如果调用handlebar的分笔不是k线最后分笔,ContextInfo会被回退到深拷贝的内容
# 所以ContextInfo不能用来记录快速交易的信号

def init(C):
A.stock = C.stockcode + '.' + C.market # 品种为模型交易界面选择品种
A.acct = account # 账号为模型交易界面选择账号

出错的就是这一行:

1
A.acct = account

为什么会报错

account 这个变量对于系统来说是没有定义的,QMT并不会自动把你的资金账户赋值给它,所以系统在运行到这里时就会报错 account not defined。

解决方法

这里的 account 应该替换成你登录QMT软件的实际资金账号。不同券商的账号格式可能不同,有的是纯数字,有的可能带字母,以券商提供给你的账户账号为准。

比如你的账户是 888666333,那么就把 account 改成带英文双引号的字符串 "888666333":

1
A.acct = "888666333"

修改后保存,再开启回测或实盘交易就可以正常运行了。


赞赏作者

赞赏码

本页面赞赏完全自愿,属于读者无偿鼓励,不提供任何商品、服务、答疑、内容解锁等对价。您可随意选择是否赞赏以及赞赏金额。

微信二维码 Share