QMT系统函数的设定涉及多个方面,主要是基于策略的需求来配置的。以下是从初始化配置到交易策略函数编写的关键步骤和方法,以及对常见函数的介绍和设置:
初始化函数和配置(Init 函数)
Init 函数的角色: 初始化函数init在整个策略中只运行一次,它用于设定那些只需执行一次的参数。例如交易佣金、滑点、基准、资金账号、股票代码等,都可以通过该函数来配置。
行情事件处理(Handlebar 函数)
Handlebar 函数的角色: Handlebar 函数用于处理每根 K 线和每个 tick 数据,它在每根 K 线上(或在实时行情的 tick 到来时)运行一次。函数内将执行实际的策略逻辑,例如基于市场数据(开盘价、最高价、最低价、收盘价、交易量等)进行计算,以作出交易决策。
ContextInfo 策略环境对象
在QMT系统的函数中,ContextInfo 是一个重要的策略运行环境对象,它被 init() 和 handlebar() 两个基本函数用作参数传递,并提供以下常用的属性和方法设定:
设定股票池(ContextInfo.set_universe(stocklist)): 用于设置策略考虑的股票代码列表,以确保只针对指定的股票执行操作。
设定交易账号(ContextInfo.set_account(account)): 配置用于执行交易操作的账号信息。需要注意的是,如果需要多个账号进行交易,应该在 init() 阶段配置好所有的账号,之后的订单传递则会按设定来。
设定回测时间(ContextInfo.start, ContextInfo.end): 当进行历史数据回测时,指定测试的起止时间,用于生成测试结果并优化策略参数。
设定初始资金(ContextInfo.capital): 为历史数据回测过程中的虚拟账号指定起始资金。
设定策略回测滑点(ContextInfo.set_slippage()): 回测过程中的交易价格会基于实际情况存在一定误差(滑点),设置该值可以更好地模拟实盘交易中的情况。
函数实现的示例框架
以Python编写策略的上下文来看,通常包括以下两部分内容:
初始化函数(init函数示例代码片段):
行情处理函数(Handlebar 函数示例代码框架):
在实际使用过程中,具体调用的API、数据参数格式(如股票代码的格式、买卖下单的方法名称及参数等)将根据你所使用的QMT系统版本及其支持的Python库和API的不同而有所不同。建议参照所使用的QMT平台的官方API文档进行实际的调用和功能设置。