量化投资者在迅投中编写Python策略时,实际上是已经继承了一个来自底层的基类(class)。我们需要且仅能够在这个类(class)的框架之内,编写我们自己的程序来描述策略需求。其中有2个重要的函数“ init()和 handlebar()”以及一个重要的对象(Object) ContextInfo。
如需咨询了解或办理,欢迎点击头像与我联系,新开账户享受免费量化软件使用,支持快速交易通道,资金达标可申请股票万1及以下(港股通与沪深一致),ETF万0.5,可转债万0.5,逆回购1折等优惠佣金!还有更多福利活动,欢迎右上角与我们专属经理联系。
init()初始化方法(函数),只执行一次。一般是在程序开始启动的时候,在这个函数的代码中,把交易佣金、滑点、基准,订阅品种、账户等信息设置好。这些只需要设置一次的操作,就放在初始化方法init()中;
功能:初始化函数,只在整个策略开始时调用运行一次;
语法:def init(Contextlnfo)
参数:Contextinfo——继承自底层基类的策略运行环境对象,可以绑定自定义的属性、全局可见。
返回:无
示例:
def init(ContextInfo):
ContextInfo.initProfit = 0 # 这个initProfit绑定 ContextInfo 上,是一个全局可见的属性(变量)
handlebar()行情处理函数。当点击"运行"时,此方法会在每根K线上执行一次此函数。如果不点击"停止",并且没有休市,实时行情仍在跳动,则会在每一次价格跳动时,即每一个tick都会执行一次此函数。因此在这个方法中,书写整个策略的执行代码。
功能:此函数会在每根K线上运行一次;在实时联网,获取行情的状态下,会先根据附着的主图上的K线数量,每根K线运行一次;然后每接收到一次tick数据,即运行一次。
语法: def handlebar(Contextlnfo)
参数:Contextinfo——继承自底层基类的策略运行环境对象,可以绑定自定义的属性、全局可见。
返回:无
示例:
def handlebar(ContextInfo):
# 打印输出当前运行到的K线的索引编号(位置序号)
print (ContextInfo.barpos)
在迅投中,编写Python策略必须包含以上这两个基本函数,否则策略将运行不起来。
Contextlnfo是迅投QMT中策略程序运行环境中最重要的对象,没有之一。上面的 init() 和handlebar()这两个基本函数运行时必须要传入这个参数。
Contextinfo里面已经封装了多达100 个属性和方法。因版本变化,此数量仍在变化中。当然, Contextinfo这个对象(Object)也可以随时绑定自定义的属性和方法,如同使用一般对象(Object) 的方式一模一样,并无二致。
可多次调用Contextlnfo以设置多个账号,应在init()中设置完毕,init()执行之后再设置将无效;调用 passorder 交易指令时,如果传入的账号为空,将会使用最后一次设置的账号作为交易下单账号。设定交易帐号是最常用、也是必须用的第一个方法(函数),连帐号都没设置好,那程序就没法交易,也就无处下单。因此在 init()这个方法(函数)中,第一个要用到的,就是这个设置帐号的方法(函数),也必须写在init()这个方法(函数)中。
股票开户优惠费率及开通量化权限,专属经理一对一服务,咨询联系可添加微信或电话联系!