股票与 ETF / 方法速查与排查

股票与 ETF

方法速查与排查

股票与 ETF 回测策略常用方法一览及结果确认方式,以及没有订单、订单被拒、有订单无成交、买入后卖不出、融资融券失败等常见问题的排查方法。

一、方法速查

使用场景 方法或对象 结果如何确认
读取当前行情 data[symbol] 检查空值及价格有效性
读取资金持仓 context.stock_account_dict[account] cashtotal_valuepositions
按股/份买卖 order_shares 二级订单列表及订单、成交回调
按金额买卖 order_values 同上;传入金额不是保证的成交金额
全账户目标调仓 target_stock_group_order 返回 None,观察逐笔回报
撤二级订单 cancel_order 返回 None,观察订单与撤单回报
申购 ETF purchase 单个一级订单及申赎回调
赎回 ETF redeem 单个一级订单及申赎回调
撤一级申请 cancel_etf_cr_order 布尔值及一级撤单回调
融资买入、融券卖出 financing_buysecurities_lending_sell 二级订单列表及回报
卖券还款、买券还券 sell_repaymentbuy_to_cover 成交回报后查询负债
直接还款、直接还券 repay_financingreturn_securities 实际还款金额或还券数量,再查信用快照
查询信用业务 get_margin_snapshot 字典,先检查 enabled

「订单受理」「实际成交」「全部交收」是三种不同的结果,分别用对应的回报判断。

二、没有交易时怎么查

按顺序依次看:信号是否触发 → 行情是否有效 → 委托是否返回 → 订单状态和原因 → 成交回报 → 当前资产。申赎另外看 stage;两融另外看 risk_state、券源和债务。

三、常见问题

现象 检查方法
没有订单 检查账户市场、完整代码、行情价格、执行标记、时间条件;记录下单返回值是否为空
订单被拒 打印 order.message;核对资金、费用、整数股数、最小申报量、可卖数量和信用条件
有订单但无成交 检查终态、成交量和限价;以 on_stock_trade_rtn 和持仓变化确认实际成交
买入后卖不出 查询 sellable,检查是否同日买入、是否冻结、是否有未完成委托
分钟任务连续报相同订单 在下单前记录交易日和意图;用订单回调清理未完成状态
因子为空时被误清仓 保留「数据不足」的状态,只有成功产生目标组合后才执行调仓
融资启用但买入失败 检查任务授信是否大于 0、标的是否在两融名单、现金担保与费用是否足够
融券失败或还券失败 分别检查券源、欠券数量、未完成委托的预占和可交付现券;普通多头持仓不代表有券可借
卖出后仍有融资余额 查询实际卖出净收入、本金和利息;普通卖出与卖券还款用途不同
看见强平状态但债务未归零 检查强平委托和实际成交,保留未成交债务,不要自行把余额改成零
一级申请一直不完成 stagereason;检查任务是否有实际确认交收资料、额度是否足够、清单最小单位是否变化

四、日志怎么打

日志用 print,优先记录交易日期、代码、订单号、状态、实际成交数量和错误原因。空行情、空因子属于可以显式处理的分支;参数错误和字段错误应保留原异常,便于定位。

策略代码只使用任务提供的 API 和数据对象,把运行状态保存在 context 里;初始资金、授信、券源和风险条件始终由任务配置提供。