返回列表 发布新帖

【求助】QMT内置Python策略回测无成交记录,已按文档操作仍失败

25 0
发表于 7 小时前 | 显示全部楼层 阅读模式

大家好,我是从聚宽迁移过来的用户,在开发QMT内置Python策略时遇到几个问题,已经折腾了几天了,客服让我来社区求助。

一、核心问题:回测无成交记录

现象:

  1. 策略运行后,日志中有 [BUY] 和 [SELL] 打印
  2. 但回测报告窗口是空白的(只有框子,没有内容)
  3. 用 get_trade_detail_data('test', 'stock', 'deal') 获取成交记录,返回空
  4. 用 get_trade_detail_data('test', 'stock', 'position') 获取持仓,也返回空

回测参数设置:

  • 已按文档要求以"副图模式"执行
  • 最大成交比例设置为 100
  • 回测时间:2024-01-01 到 2024-12-31
  • 初始资金:500000

问题:

  1. 回测报告空白是什么原因?策略到底有没有实际成交?
  2. 如何确认回测是否成交?有没有可靠的查看方式?
  3. "当日买入"和"持仓明细"面板在回测中是否本来就没有内容?

二、下单函数选择疑问

我看到两种下单方式,不确定哪个对:

方式1(网上找的,8个参数): passorder(23, 1101, accountid, stock, 11, price, volume, ContextInfo)

方式2(官方文档,11个参数): passorder(opcode, ordertype, accountid, stock, price_type, price, volume, strategy_name, quicktrade, remark, C)

问题:

  1. passorder() 到底是 8 个参数还是 11 个参数?
  2. 官方文档写的是 11 个参数,但网上大部分示例是 8 个参数,哪个是对的?
  3. 回测中应该用哪种下单方式?

三、其他疑问

  1. order_target_value() 在回测中是否能用?官方文档没有提到这个函数
  2. get_bar_timetag(barpos) 在回测中返回 0,这是正常的吗?有没有其他获取时间的方法?
  3. 代码中已经加了 #coding:gbk,还有哪里需要注意?

四、测试代码(简化版)

coding:gbk

import pandas as pd import numpy as np

def init(C): C.accountid = "testS" C.set_universe(['000820.SZ', '601700.SH']) C.positions = {} print('Strategy initialized')

def handlebar(C): barpos = C.barpos

# Get current time
timetag = C.get_bar_timetag(barpos)
if timetag > 0:
    import datetime
    timestamp_sec = timetag / 1000.0
    dt = datetime.datetime.fromtimestamp(timestamp_sec)
    current_time = dt.hour * 100 + dt.minute
else:
    current_time = 0

# Check buy signal at 14:50
if current_time == 1450:
    for code in C.get_universe():
        # Buy logic (simplified)
        passorder(23, 1101, C.accountid, code, 5, -1, 100, C)
        print('BUY %s' % code)

# Check sell signal at 14:30
if current_time == 1430:
    for code in C.get_universe():
        if code in C.positions:
            passorder(24, 1101, C.accountid, code, 5, -1, 100, C)
            print('SELL %s' % code)

日志输出: Strategy initialized BUY 000820.SZ BUY 601700.SH SELL 000820.SZ SELL 601700.SH

但回测报告空白,get_trade_detail_data 返回空。

请问各位大佬,这是哪里做错了?是下单函数参数不对,还是回测配置有问题?

感谢!

回复

您需要登录后才可以回帖 登录 | 立即注册

客服专线

400-080-8112

用思考的速度交易,用真诚的态度合作,我们是认真的!
  • 关注公众号
  • 添加微信客服
Copyright © 2001-2026 迅投QMT社区 版权所有 All Rights Reserved. 京ICP备2025122616号-3
关灯 快速发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表