聚宽代码和QMT代码结构有何异同

企业微信

聚宽与QMT的平台定位差异

聚宽是一个云端量化交易平台,代码运行在聚宽服务器上,用户通过网页界面编写策略,平台提供统一的API接口获取股票、期货等行情数据,并支持回测和模拟交易。QMT(迅投极速交易系统)是本地化的量化交易终端,代码运行在用户本地计算机上,需要连接券商交易接口,直接管理账户和订单。两者在代码结构上的根本区别源于运行环境的不同。

策略初始化与生命周期函数

聚宽策略使用initialize函数进行全局初始化,handle_data函数处理每日或每分钟行情,before_trading_start在开盘前执行,after_trading_end在收盘后执行。聚宽框架自动处理时间调度,用户只需填充逻辑。

QMT策略使用init函数初始化,handlebar函数处理行情事件,after_init在初始化后执行。QMT的事件驱动模型更底层,用户需要手动管理订阅的股票池和周期。QMT没有自动的盘前盘后函数,需要自行通过定时器或条件判断实现。

聚宽代码和QMT代码结构有何异同

股票交易中,聚宽的handle_data默认按分钟或日线频率触发,QMT的handlebar由订阅的K线周期决定。期货交易中,两者都支持主力合约和指数合约,但聚宽的期货代码更简洁,QMT需要显式指定合约乘数、保证金等参数。

数据获取与API调用

聚宽提供get_priceget_fundamentalsget_bars等函数,直接返回DataFrame或列表,数据字段标准化。期货数据通过get_future_contracts获取合约列表,get_dominant_contract获取主力合约。

QMT使用ContextInfo.get_market_data获取行情,参数包括股票代码、周期、字段等。期货数据需要指定dividend_typesubscribe。QMT的数据接口更接近底层,返回的是字典或numpy数组,用户需要自行转换为DataFrame。

代码示例(聚宽获取股票行情):


def initialize(context):

    g.security = '000001.XSHE'

def handle_data(context, data):

    price = data[g.security].close

    order(g.security, 100)

代码示例(QMT获取股票行情):


def init(ContextInfo):

    ContextInfo.set_universe(['000001.SZ'])

def handlebar(ContextInfo):

    close = ContextInfo.get_market_data(['close'], ['000001.SZ'], period='1d')

    passorder(23, 1101, 'account', '000001.SZ', 5, -1, 100, ContextInfo)

订单执行与交易接口

聚宽使用orderorder_targetorder_value等函数,自动处理订单类型、价格和数量。期货交易使用order并指定sideamount。聚宽模拟交易和实盘交易通过券商接口自动完成。

QMT使用passorder函数,参数包括操作类型、订单类型、账户、代码、价格类型、价格、数量等。期货交易需要指定prtypemodelprice。QMT的订单执行更灵活,但需要用户管理账户和风控。

股票交易中,聚宽的order默认使用市价单,QMT的passorder需要指定prtype(如5为市价)。期货交易中,聚宽自动处理保证金和强平,QMT需要用户计算保证金和设置止损。

回测与实盘迁移

聚宽策略回测和实盘代码几乎一致,只需切换运行模式。QMT策略回测需要配置回测参数,实盘需要连接券商并启动交易线程。QMT的回测和实盘代码差异较大,回测时使用ContextInfo模拟,实盘时使用真实ContextInfo

股票期货策略迁移时,聚宽代码可以较快适应QMT,但需要重写数据获取和订单执行部分。QMT代码迁移到聚宽需要简化底层操作,利用聚宽的高级API。

代码组织与调试

聚宽代码在网页编辑器中编写,支持在线调试和日志输出。QMT代码在本地IDE中编写,支持Python调试器,但需要配置环境。聚宽的代码结构更统一,QMT的代码结构更灵活但容易出错。

股票交易中,聚宽的context对象包含账户和持仓信息,QMT的ContextInfo对象包含类似信息但方法名不同。期货交易中,聚宽的context提供保证金和合约信息,QMT需要从ContextInfo中提取。

聚宽代码结构适合快速开发和回测,API简洁,适合股票期货策略原型。QMT代码结构适合实盘交易和低延迟场景,需要更多底层配置。选择平台时,考虑交易频率、资金规模和开发效率。高频期货交易倾向QMT,中低频股票策略倾向聚宽。

理解两者代码结构异同,有助于量化交易者高效迁移策略,避免重复开发。

转载请注明出处:https://www.lianghuajiaoyi.top/wenzhang/jukuan-QMT-daima-jiegou-578.html