# Live Trading System **Repository Path**: hkcodex/live-trading-system ## Basic Information - **Project Name**: Live Trading System - **Description**: Live Trading System 是一个基于 miniQMT 的本地量化交易框架,包含策略选股、下单、再平衡与风控的全流程模块,支持状态恢复与策略定制,可用于 live trading 与研究使用(不构成任何投资建议)。 - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: https://gitee.com/hkcodex/live-trading-system - **GVP Project**: No ## Statistics - **Stars**: 12 - **Forks**: 11 - **Created**: 2025-12-01 - **Last Updated**: 2025-12-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Live Trading System 基于 miniQMT 的自动化股票交易脚本(示例策略为 ETF 轮动)。包含选股、再平衡、风控、交易记录,并支持通过 Redis 将纸盘信号转交另一台机器执行实盘。 ## 仓库包含 - `live_trading.py`:主交易循环。加载配置与历史持仓,按选股结果做再平衡/风控,下单并记录组合与成交。 - `generate_stock_selection.py`:示例选股脚本(简单 RSRS 评分,四只 ETF 轮动),生成当日持仓名单。 - `strategy_config.py`:策略与账户配置(资金、账户、频率、路径、手续费、持仓数量等)。 - `live_trading_redis_bridge.py`:在纸盘模式下拦截买卖单,将信号推送到 Redis(列表 + pub/sub),便于另一进程/机器实盘执行。 - `redis_miniqmt_executor.py`:订阅 Redis 信号并调用 miniQMT 下单(带去重与重试)。 - `requirements/`:pip / conda 依赖清单。 - `images/`:说明配图。 ## 环境要求 - Windows,已安装 miniQMT(或兼容 xtquant 接口),保证 `xtquant` 可导入。 - 本地量化接口库 `hkcodex` 位于 `C:/hkcodex`(脚本已添加到 `sys.path`)。 - Python 3.9,依赖见 `requirements/requirements.txt` 或 `requirements/environment.yml`。 ## 安装依赖 ```bash pip install -r requirements/requirements.txt # 或 conda env create -f requirements/environment.yml ``` ## 配置(`strategy_config.py`) 关键项: - `STRATEGY_NAME`:策略名/输出前缀。 - `QMT_USERDATA_PATH`、`ACCOUNT_ID`:miniQMT 用户目录与账户。 - `TRADING_TYPE`:`"paper"` / `"live"`;建议先纸盘。 - 手续费/印花税:`COMMISSION_RATE`、`TAX_RATE`。 - 再平衡频率与时间:`REBALANCE_FREQUENCY`(daily/weekly/monthly)、`REBALANCE_HOUR/MINUTE`,周/月模式对应 `REBALANCE_WEEKLY_DAY` / `REBALANCE_MONTHLY_DAY`。 - 风控检查时间:`CHECK_HOUR/MINUTE`(检查昨日涨停今日开板)。 - 目标仓位与留存现金:`TARGET_POSITION_RATIO`、`MIN_CASH_LEFT`。 - 选股数量与输出路径:`STOCK_NUM`、`SELECTION_DIR`;组合/成交记录:`PORTFOLIO_RECORD_FILE`、`TRADE_RECORD_FILE`。 - 初始资金/持仓:`INITIAL_STRATEGY_CASH`、`INITIAL_STRATEGY_POSITIONS`(无历史记录时用于估算起始状态)。 ## 选股脚本(示例) 生成指定日期(或当天)的选股: ```bash python generate_stock_selection.py 20251201 1 ``` 默认输出到 `SELECTION_DIR` 下的 `.txt`,策略读取前 `STOCK_NUM` 只。 ## 运行方式 ### A. 本机直接运行(纸盘/实盘) ```bash python live_trading.py ``` - 纸盘:默认视为全额成交,仅做本地组合/成交记录。 - 实盘:需将 `TRADING_TYPE` 设为 `"live"`,并保证 QMT 已登录、配置路径/账户正确。 - 运行后常驻循环:每日首跑写一份持仓快照;到再平衡时间读取/生成选股,卖出非目标持仓(涨停跳过)、买入目标持仓;每日一次风控检查昨日涨停但今日开板的持仓;收盘后按配置刷新组合记录。 ### B. Redis 信号模式(纸盘调度 + 远端实盘执行) 1) 在纸盘机器上运行桥接: ```bash python live_trading_redis_bridge.py ``` 纸盘下单会被拦截并推送到 Redis,原有纸盘记账照常进行。 2) 在连接 miniQMT 的机器上运行执行器: ```bash set REDIS_URL=redis://:/ set REDIS_CHANNEL=trade_signals set REDIS_QUEUE_KEY=trade_signals_queue python redis_miniqmt_executor.py ``` 执行器会从列表和 pub/sub 拉取信号,按当前价下 FIX_PRICE 单,含去重与最多 5 次重试。务必在脚本内配置正确的 `QMT_USERDATA_PATH`、`ACCOUNT_ID`。 ## 输出文件(本地) - 选股:`SELECTION_DIR/.txt` - 组合快照:`_portfolio.csv`(日期、现金、净值、持仓明细) - 成交明细:`_trades.csv`(时间、方向、代码、名称、数量、价格、费用等) Redis 信号/实盘执行不写入仓库,仅用于运行时。 ## 常见问题 - 日志不及时刷新:已设置行缓冲,如仍有问题可用 `python -u live_trading.py` 启动或在关键 `print` 加 `flush=True`。 - 数据缺失/接口异常:风控与选股处均有简单兜底,仍建议在纸盘充分验证。 ## 风险提示 仅供学习与研究,不构成任何投资建议。实盘有风险,请先纸盘验证,责任自负。 ## 社区与交流 微信公众号推文里的相关代码都会提供在知识星球里,包括本地策略代码、接口、回测、测试等,欢迎加入交流。 ![hkcodex知识星球](images/zsxq.jpg) ![微信公众号](images/wxgzh.png) ![微信](images/wx.jpg)