3.7 KiB
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 导入。
OrderBook 初始化后调用 load(),填充 positions(按代码)、deals(按系统订单号)
和 deals_sys_ids(系统订单号集合)。sync_deals(list[DealItem]) 根据该集合过滤已保存及
同批重复成交,再以单个事务批量插入,提交成功后刷新缓存;不修改持仓。
sys_order_id 对应 API 的 m_strOrderSysID,local_order_id 从 m_strRemark 的首段提取。
| 表 | 字段与用途 | 索引 |
|---|---|---|
positions |
自增 id、股票代码 code、底仓订单/数量/成本 base_order_id/base_qty/base_cost、补仓订单/次数/数量/成本 added_order_id/added_num/added_qty/added_cost、状态 status |
code 唯一索引;base_order_id;added_order_id |
deals |
id、系统/本地订单号、证券信息、方向、API 状态、剩余/成交数量、委托日期时间、备注、委托价格及成交均价/金额,字段映射见下表 |
id 主键;sys_order_id 唯一;local_order_id;(code, insert_date);(insert_date, insert_time) |
SDK 的 DealItem 与成交表业务字段一致:
| API 字段 | SDK / SQLite 字段 |
|---|---|
m_strOrderSysID |
sys_order_id |
m_strInstrumentID、m_strExchangeID |
instrument_id、exchange_id,组合生成 code |
m_strInstrumentName |
name |
m_nOffsetFlag |
offset_flag,解析生成买卖方向 side |
m_nOrderStatus |
status |
m_nVolumeTotal、m_nVolumeTraded |
remaining_volume、traded_volume |
m_nOrderTime |
order_time |
m_strInsertDate、m_strInsertTime |
insert_date、insert_time |
m_strRemark |
remark,提取 local_order_id |
m_dPrice、m_dTradePrice、m_dTradeAmount |
price、trade_price、trade_amount |
API 返回已成交数据,每个系统订单号仅入库一次;status 保存 API 原值,不增加确认流程。
成交金额缺失时仅使用成交均价乘成交数量补足,不使用委托价格。
买卖方向使用 side,ZT 通过本地委托号前缀区分底仓买入与做 T 买回。
ZT 根据实际成交数量及金额更新持仓,日期取 API 提供的 insert_date,入库时规范为 YYYY-MM-DD。
首次接管持仓仅写持仓表。活动委托和重复下单检查由 libs/order.py 的委托簿负责。
持仓快照与新增成交在同一事务内保存,历史成交只追加;写入失败回滚数据库并恢复内存状态。
持仓更新按 code 保留原有自增 ID。ZT 将轮次状态写入 status,卖出、买回数量及均价、
轮次日期在重启时从 deals 重建;补仓字段预留,ZT 买回不计为补仓。