国金QMT量化交易系统的Bug及应对策略

国金QMT量化交易平台的deal_callback函数在系统重连时会重复推送当天所有成交记录,导致用户策略错误执行。工程师建议用户在deal_callback中增加判断,并自建数据库记录交易状态以避免依赖系统推送。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

国金QMT量化交易系统中的 账号成交状态变化主推 deal_callback() , 当账号成交状态有变化时,这个函数被客户端调用。

我的策略是,在handlebar()里面挂单,等待成交,而判断成交的方式是根据系统主推deal_callback()通知。收到系统通知后,经过一系列的计算再次挂单,把成交反向操作,相应的买入或卖出。

第一次发现系统的BUG是在某交易日的晚上八九点钟,我正在调试策略代码,突然间我发现deal_callback()被调用了几十次,当时我以为是系统在清算,就没有在意,就默默的在我的策略的deal_callback()里面增加了一个时间判断,下午3点后,直接return。我还把这个发现的问题,跟我的国金客户经理讲了一下,他在公司内部反馈了一下之后,让提供截图,我没有截图,就过去了。

今天,这个Bug再次出现,导致我出现了亏损。在下午2点45左右,突然出现了十几个挂单,成交了好几个。我看着非常奇怪,一直在查代码的问题,最后才发现,是因为系统在这个时间点,把今天已经成交的十几条交易记录,在几秒内又重新发送给了deal_callback(),我的代码认为有新的成交,就相应的进行了买入卖出挂单。造成了实质性的亏损。我立刻联系了我的客户经理,进行了反馈,希望这个Bug可以被快速的修复。

我的客户经理还是比较给力的,直接给我拉了一个群,以下是券商的工程师给我的回复

基本的逻辑就是QMT在使用的过程中,可能会存在网络连接问题,系统重新进行连接。每当系统重新进行连接的时候,QMT就会把当天的所有的交易成交重新推送一次给deal_callback(),而且这个逻辑未来也会是这样。

大家一定要注意在deal_callback()处增加判断,不可相信系统推送。可以考虑自己搭建小数据库,记录自己的下单和成交记录,基于自己的数据库数据进行买卖。

 

<think>好的,我现在需要处理用户关于国金证券QMT量化策略代码的询问。首先,用户可能对QMT平台和其支持的量化策略开发不太熟悉,所以我应该先介绍一下QMT的基本情况。 接下来,用户提到的是策略代码,我需要明确QMT支持的语言,比如Python和VBA。要分点说明这两种语言在QMT中的应用,包括Python的第三方库支持和VBA的适用场景,比如高频交易。 然后,用户可能需要了解如何开始编写策略,所以得列举策略开发的基本步骤,比如数据获取、策略逻辑、回测和实盘交易。这部分需要结构清晰,步骤明确,确保用户能按步骤操作。 另外,示例代码部分很重要,用户可能需要一个简单的例子来理解。这里要提供一个Python的均线策略代码,并解释每部分的功能,比如数据获取、指标计算、信号生成和下单操作。要注意代码格式正确,使用$$包裹,并且语法正确。 同时,注意事项部分也不能遗漏,比如回测的可靠性、实盘前的模拟测试、风险控制等,这些都是用户在实际操作中容易忽视的问题,需要提醒。 最后,资源支持部分,用户可能需要进一步学习或获取帮助,所以提供官方文档、社区论坛和客户服务的联系方式是有必要的。 整个过程中要确保使用中文,术语准确,结构清晰,并且避免使用Markdown格式。需要检查是否符合系统级指令,特别是数学表达式和独立公式的格式是否正确,LaTeX语法是否无误。同时,回答要真实可靠,帮助用户逐步解决问题,满足他们的需求。</think>国金证券QMT(Quantitative Trading Platform)是面向专业投资者提供的量化交易开发平台,支持策略编写、回测和实盘交易。以下分步骤介绍其量化策略代码的核心要点: --- ### 一、QMT平台基础环境 1. **开发语言支持** - **Python**:主流选择,支持`pandas`、`numpy`等第三方库 - **VBA**:适用于简单策略及高频交易场景 2. **核心功能模块** $$ \text{策略代码} \rightarrow \text{历史回测} \rightarrow \text{风险控制} \rightarrow \text{实盘交易} $$ --- ### 二、量化策略代码开发步骤 #### 1. 数据获取 ```python # 获取历史K线数据(示例) data = get_history_data( stock_code="600519.SH", period="1d", count=100, dividend_type="backward" ) ``` #### 2. 策略逻辑实现 ```python # 示例:双均线策略 def initialize(context): # 初始化参数 context.short_window = 5 # 短期均线周期 context.long_window = 20 # 长期均线周期 def handle_data(context): # 计算均线 short_ma = MA(context.close, context.short_window) long_ma = MA(context.close, context.long_window) # 生成交易信号 if short_ma[-1] > long_ma[-1]: order_target_value(context.symbol, context.cash) # 全仓买入 elif short_ma[-1] < long_ma[-1]: order_target_value(context.symbol, 0) # 清仓卖出 ``` #### 3. 回测验证 $$ \text{收益率} = \frac{\text{最终净值} - \text{初始净值}}{\text{初始净值}} \times 100\% $$ 需关注最大回撤、夏普比率等关键指标。 --- ### 三、代码注意事项 1. **交易接口规范** - 使用`order_volume()`等内置函数下单 - 需处理滑点、手续费等摩擦成本 2. **风险控制** ```python # 设置止损 if context.price < context.stop_loss_price: order_target_percent(context.symbol, 0) ``` --- ### 四、策略部署流程 1. 本地IDE调试 → 2. XTP模拟交易 → 3. 实盘接入 --- ### 五、学习资源 1. 官方API文档 2. `qmt.ExampleStrategy`内置示例策略 3. 社区论坛(如JoinQuant、掘量化) > **提示**:实盘前需通过模拟交易验证策略稳定性,建议从分钟线级别策略开始实践。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值