2.6 KiB
2.6 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 导入。
两表使用 SDK 同名字段;另有自增主键 id,成交表增加从 remark 提取的 order_local_id:
| 表 | 数据模型 | 索引 |
|---|---|---|
positions |
PositionItem:stock_code、stock_name、direction、volume、open_price、open_cost、float_profit、market_value、stock_holder、frozen_volume、can_use_volume、on_road_volume、yesterday_volume、last_price、profit_rate、future_trade_type、expire_date |
stock_code 唯一索引 |
deals |
DealItem:stock_code、order_sys_id、ref、order_ref、direction、offset_flag、price、volume、trade_amount、trade_date、trade_time、remark、close_profit,以及 order_local_id |
order_sys_id 唯一索引;order_local_id;stock_code;trade_date |
load() 只更新 positions、deals、deals_sys_ids 缓存,无返回值。
sync_positions(list[PositionItem]) 保存完整持仓快照,同一证券更新时保留自增 ID。
sync_deals(list[DealItem]) 按系统订单号去重后批量写入;同批重复记录仅写一次。
order_local_id 取 DealItem.local_order_id(remark 首段),为空时拒绝写入。
成交日期规范为 YYYY-MM-DD,金额缺失时用成交价格乘数量补足。
ZT 使用 volume/open_price 保存底仓数量与成本,做 T 轮次从成交历史恢复,
不再使用持仓表的旧状态、底仓订单或补仓字段。买卖方向由 offset_flag 计算,
本地订单号从 remark 提取。持仓与新增成交在同一事务提交,失败时回滚并恢复内存。