3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 QMT 平台(包括内置 Python API 的 passorder 以及独立版 xtquant 的 order_stock 接口)中,底层是通过 C++ 结构体与交易柜台进行交互的,因此对字符串类型的字段有严格的字节长度限制。
关于您提到的两个参数,具体的长度限制如下:
order_remark (委托备注 / userOrderId)正如您在 XtOrder 结构体中所见,委托备注字段通常被限制为 24个字节(部分券商柜台可能放宽至 32 个字节,但为了兼容性,建议以 24 字节为准)。
strategy_name (策略名称 / strategyName)在 QMT 的底层结构中,strategy_name 字段的长度限制通常为 32个字节(即底层 C++ 的 char[32])。如果传入的字符串超过这个长度,底层会自动截断,这可能会导致您在通过 get_trade_detail_data 或 get_last_order_id 根据策略名查询委托和成交时匹配失败。
需要特别注意的是,这里的限制是字节数(Bytes),而不是字符数:
建议:
为了避免因长度超限或编码问题导致的截断和乱码,强烈建议在 strategy_name 和 order_remark 中仅使用简短的英文、数字或下划线组合。
示例:
# 推荐的命名方式(安全长度内)
strategy_name = "MACD_Strategy_01" # 16字节,远小于32字节限制
order_remark = "Order_0001" # 10字节,远小于24字节限制
# 在内置API中使用 passorder
passorder(23, 1101, '您的资金账号', '000001.SZ', 5, -1, 100, strategy_name, 2, order_remark, ContextInfo)
总结来说,为了保证策略的稳定运行,请将 strategy_name 控制在 32字节以内,将 order_remark 控制在 24字节以内。