Files
big-qmt/docs/zt.md
2026-09-07 14:04:26 +08:00

2.6 KiB
Raw Blame History

ZT 日内做 T 策略

启用时在账户 YAML 中设置:

strategy: zt
signal_allow: ["dcm"]
zt_sell_ratio: 0.5
zt_buy_fall_pct: 1.0
zt_max_price: 200
  • dcm 信号可建立底仓;建仓使用反弹确认,跳过价格高于 zt_max_price 的股票。
  • 对 dcm 底仓,盈利网格出现回撤时卖出 zt_sell_ratio 对应的可用整手;不卖出超过记录底仓的数量。
  • 每笔卖出成交直接累计做 T 数量;活动委托结束后,价格较卖出均价回落 zt_buy_fall_pct,并经反弹确认,买回实际卖出数量。
  • 每只股票每日只做一轮14:50 后不再开新卖单,已卖未买的仓位强制按市价买回,避免隔夜净减仓。
  • 仅支持标准 A 股的先卖后买,不把当日新买入股票作为可卖库存。

SQLite 状态存储

libs/orderbook.py 使用标准库 sqlite3,数据库路径为 {qmt_data_dir}/zt_{account_id}_state.db,每个账户/策略由单个实例串行更新。 启动时仅创建当前表结构和索引,不执行迁移或旧 JSON 导入。

两表使用 SDK 同名字段;另有自增主键 id,成交表增加从 remark 提取的 order_local_id

数据模型 索引
positions PositionItemstock_codestock_namedirectionvolumeopen_priceopen_costfloat_profitmarket_valuestock_holderfrozen_volumecan_use_volumeon_road_volumeyesterday_volumelast_priceprofit_ratefuture_trade_typeexpire_date stock_code 唯一索引
deals DealItemstock_codeorder_sys_idreforder_refdirectionoffset_flagpricevolumetrade_amounttrade_datetrade_timeremarkclose_profit,以及 order_local_id order_sys_id 唯一索引;order_local_idstock_codetrade_date

load() 只更新 positionsdealsdeals_sys_ids 缓存,无返回值。 sync_positions(list[PositionItem]) 保存完整持仓快照,同一证券更新时保留自增 ID。 sync_deals(list[DealItem]) 按系统订单号去重后批量写入;同批重复记录仅写一次。 order_local_idDealItem.local_order_idremark 首段),为空时拒绝写入。 成交日期规范为 YYYY-MM-DD,金额缺失时用成交价格乘数量补足。

ZT 使用 volume/open_price 保存底仓数量与成本,做 T 轮次从成交历史恢复, 不再使用持仓表的旧状态、底仓订单或补仓字段。买卖方向由 offset_flag 计算, 本地订单号从 remark 提取。持仓与新增成交在同一事务提交,失败时回滚并恢复内存。