# miniQMT **Repository Path**: anhuazhang/miniQMT ## Basic Information - **Project Name**: miniQMT - **Description**: miniQMT for Arthur - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-11-14 - **Last Updated**: 2025-11-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # miniQMT - miniQMT for Arthur 我希望让AI帮我设计量化代码,包括系统架构与具体实现,以下是我的提词,请你给出修改建议,以让AI模型更精准地生成可用代码: 使用python写一个用迅投miniqmt进行量化交易的系统,功能包括: 1. 股票历史数据的获取并存储;对历史数据进行计算; 2. 计算的指标因子包括macd,换手率,10日均线,20日均线,30日均线,60日均线等; 3. 通过各个指标因子的权重发出自动交易指令,同时提供手动交易操作接口; 4. 存储当天交易成交的信息,必要时存储(用sqlite)持仓个股的价格信息,用于计算止盈止损; 交易策略遵循以下规则: 1. 分仓买入:(如每次20000元)按建仓成本价百分比向下买入补仓,如93%,86%等,达到仓位上限(如60000元)后停止买入; 2. 严格止损:整体持仓成本损失大于某个百分比(如-9.5%)后全仓止损; 3. 动态止盈:浮盈比例越大,动态止盈位越高,允许股价回调空间越大;首次浮盈大于一定比例时卖出一定仓位(如50%)仓以保证胜率,余下仓位按动态止盈位置卖出,比如以建仓后股价上涨到的最高价为基准, a) 最高价相比持仓成本价,小于10%时,止盈位为最高价*93% b) 最高价相比持仓成本价,小于15%时,止盈位为最高价*90% c) 最高价相比持仓成本价,小于30%时,止盈位为最高价*87% d) 最高价相比持仓成本价,大于30%时,止盈位为最高价*85% 4. 网格交易:自动对持仓个股进行网格交易,网格和交易仓位可配置(比如网格高度为5%,10%,15%等,交易仓位为持仓个股数量*20%); 5. 买入卖出时需要提前计算交易手数,避免资金不足或者仓位不足,以及交易所的规则(比如交易手数不能低于过100股,不能超过当日交易额度等);为了保证交易成功,交易价格需要根据市场情况动态调整,比如根据市场卖三价和买三价,避免价格过低和过高; 设计原则遵循以下规则: 1. 每个功能用一个py文件存储; 2. 所有可配置参数集中管理,有调试开关和丰富的代码注释和调试信息; 3. 如果有log文件,定期清理,不过多占用存储空间; 4. xtquant的api参考https://dict.thinktrader.net; # AI 优化提词 请按照以下架构使用QMT Python API实现量化交易系统: ```python 一、系统架构设计 1. 核心模块 |-- config.py # **集中管理所有可配置参数** |-- data_mgr.py # 历史数据获取存储(xtdata接口) |-- indicator_calc.py # 多周期均线/MACD计算(pandas向量化计算) |-- strategy_engine.py # **交易策略逻辑实现** |-- trade_executor.py # 交易指令执行器(xttrader接口) |-- position_mgr.py # **持仓管理与止盈止损计算** |-- grid_trader.py # 网格交易模块 |-- risk_mgr.py # 风控校验模块 二、关键实现要点 1. 数据管理 (data_mgr.py) - 使用xtdata.get_market_data获取股票历史数据 - 采用HDF5存储高频数据,SQLite存储元数据 - **实现增量更新机制**:last_update_date字段记录最后更新时间 2. 指标计算 (indicator_calc.py) def calculate_emas(df, periods=[10,20,30,60]): """带异常值处理的多周期均线计算""" # 使用pandas的滚动窗口计算 def calculate_macd(df, fast=12, slow=26, signal=9): """MACD指标计算(兼容空值处理)""" 3. 策略引擎 (strategy_engine.py) class TradingStrategy: def __init__(self, context): # 初始化策略参数(从configs.py加载) def on_tick(self, context): """**实现QMT的事件驱动机制**""" # 分仓补仓逻辑(示例): if current_price < avg_cost * 0.93: self._add_position(context) # 动态止盈逻辑 if max_gain > 0.15: self._dynamic_profit_control(context) 4. 交易执行 (trade_executor.py) class TradeExecutor: def smart_order(self, symbol, price, amount): """**智能下单模块** - 根据买三/卖三价动态调整委托价格 - 校验当日剩余交易额度 - 自动拆分大单(单笔≤1000股)""" 5. 风控管理 (risk_mgr.py) def check_position_risk(position): """实时计算持仓盈亏 - 整体亏损>9.5%时触发全平仓 - 个股持仓突破网格阈值触发交易""" 三、QMT API特别注意事项 1. 必须实现init和handlebar方法 2. 使用ContextInfo对象传递策略上下文 3. 区分模拟交易和实盘交易模式 4. 使用xtdata订阅实时行情数据 5. 采用异步订单查询接口 四、调试建议 1. 在config.py设置DEBUG模式: DEBUG = True # 启用详细日志输出 SIMULATION = True # 使用模拟交易模式 2. 日志管理建议: - 使用RotatingFileHandler实现日志轮换 - 保留最近7天日志,单个日志≤10MB