基于FastMCP和XTQuant的模块化量化交易系统,提供智能策略生成、实时交易执行和回测分析功能。
</div><!-- 如果你准备了演示封面图,可以把下面这行的 docs/demo_cover.png 换成你的图片路径 -->📺 点击封面图片或链接在Bilibili上查看完整演示
https://www.bilibili.com/video/BV1SFGjz6EKN/?vd_source=26053b834f0ddd4f57b22169d74b6f78
国金QMT-MCP/
├── main.py # FastMCP服务器主入口
├── config.json # 系统配置文件
├── requirements.txt # 项目依赖
├── src/
│ ├── config.py # 配置管理模块(支持环境变量)
│ ├── tools/ # MCP工具实现
│ │ ├── trading_tool.py # 交易执行工具
│ │ └── qmt_tool.py # QMT策略工具
│ ├── strategies/ # 策略模块
│ │ ├── ma_strategy.py # 双均线策略
│ │ └── strategy_generator.py # 策略生成器
│ └── utils/ # 工具模块
│ ├── xtquant_client.py # XTQuant客户端
│ └── data_handler.py # 数据处理器
└── logs/ # 日志文件目录
git clone <repository-url>
cd Nondescript-MCP
pip install -r requirements.txt
创建.env文件并配置以下参数:
# =====================================================
# 国金QMT-MCP 环境配置文件
# 请根据你的实际环境修改下面的配置参数
# =====================================================
# 服务器配置
QUANTMCP_HOST=127.0.0.1 # MCP服务器监听地址,通常保持127.0.0.1
QUANTMCP_PORT=8000 # MCP服务器端口号,可根据需要修改
QUANTMCP_TRANSPORT=sse # 传输协议,保持sse即可
# XTQuant/QMT 交易客户端配置
# 重要:请修改为你的QMT安装路径和账户信息
QMT_PATH=你的QMT安装路径\userdata_mini # QMT客户端数据目录,如: D:\QMT\userdata_mini
QMT_SESSION_ID=你的会话ID # QMT会话ID,整数,如: 12345
QMT_ACCOUNT_ID=你的交易账户ID # 你的模拟或实盘交易账户ID
# QMT策略保存目录
QMT_STRATEGY_DIR=你的QMT策略目录\mpython # QMT策略文件保存目录,如: D:\QMT\mpython
# 交易风险控制配置
MAX_ORDER_VALUE=100000.0 # 单笔订单最大金额(元),防止误操作大额下单
MAX_POSITION_VALUE=500000.0 # 单只股票最大持仓金额(元),控制单股风险
MIN_ORDER_QUANTITY=100 # 最小下单数量(股),通常为100的整数倍
MARKET_ORDER_SPREAD=0.1 # 市价单价差比例(0.1=10%),避免成交价偏离过大
# 策略默认参数配置
DEFAULT_SYMBOL=000001.SZ # 默认股票代码,用于测试和演示
DEFAULT_START_DATE=20240101 # 默认回测开始日期,格式YYYYMMDD
DEFAULT_END_DATE=20241201 # 默认回测结束日期,格式YYYYMMDD
DEFAULT_SHORT_PERIOD=5 # 默认短期均线天数
DEFAULT_LONG_PERIOD=20 # 默认长期均线天数
# 日志配置
LOG_LEVEL=INFO # 日志级别: DEBUG/INFO/WARNING/ERROR
LOG_FILE=logs/quantmcp.log # 日志文件路径
python main.py
服务启动后,将在http://127.0.0.1:8000提供MCP服务。
# 通过MCP接口调用
place_order(
symbol="000001.SZ", # 股票代码
quantity=100, # 买入股数
price=10.5, # 下单价格
direction="BUY" # 交易方向
)
cancel_order(order_id="12345") # 撤销指定订单
generate_ma_strategy(
symbol="000001.SZ", # 目标股票
short_period=5, # 短期均线
long_period=20, # 长期均线
strategy_name="my_ma" # 策略名称
)
save_qmt_strategy(
strategy_name="custom_strategy",
code="""
def init(context):
# 策略初始化
pass
def handle_bar(context, bar_dict):
# 策略执行逻辑
pass
"""
)
系统提供了完整的策略回测功能,包括:
[OK] 双均线策略生成成功!
[DATA] 股票信息: 000001.SZ
[DATE] 数据期间: 20240101 至 20241201
[CHART] 数据条数: 242 条
[DATA] 交易天数: 242 天
[TARGET] 双均线策略参数:
* 短期均线: 5日
* 长期均线: 20日
[CHART] 策略表现:
* 总收益率: 15.23%
* 年化收益率: 18.45%
* 最大回撤: -8.67%
* 年化波动率: 22.15%
* 夏普比率: 0.845
* 交易次数: 24
* 胜率: 58.33%
[TIP] 策略评价:
[OK] 年化收益良好,超过15%
[OK] 风险控制优秀,最大回撤小于10%
[WARNING] 夏普比率一般,收益风险比有待提升
[OK] 胜率良好,超过50%
系统内置了多层风险控制机制:
国金QMT-MCP完全兼容Model Context Protocol,并可与支持MCP的AI助手集成
如果你只需要直接连接,访问已经启动的国金QMT-MCP服务器最简单且可靠的方式是使用SSE(Server-Sent Events) 直连。
{
"mcpServers": {
"qmt-mcp": {
"type": "sse",
"url": "http://127.0.0.1:8000/sse",
"timeout": 60,
"autoApprove": []
}
}
}
📌 为什么推荐SSE?
- 🛠️ 零依赖客户端不再需要执行Python/Node等命令。
- ⚡ 即插即用服务器启动后,任何支持MCP的应用都可以发现它。
- 🪶 最小配置只需
type和url两个关键字段。- 🌐 远程友好修改
url即可在局域网/云服务器上访问。
以下是不同工具(Claude Desktop/VS Code Cline/Cursor)的完整配置示例,也可以使用command/args模式自动拉起服务器。
添加:
{
"mcpServers": {
"quantmcp": {
"command": "python",
"args": ["path/to/Nondescript-MCP/main.py"],
"env": {
"QMT_PATH": "你的QMT安装路径\\userdata_mini"
}
}
}
}
place_order执行股票交易cancel_order: 取消订单save_qmt_strategy: 保存自定义策略generate_ma_strategy: 生成双均线策略| 配置项 | 描述 | 默认值 |
|---|---|---|
| QMT_PATH | QMT客户端安装路径 | 你的QMT安装路径 \ userdata_mini |
| QM_SESSION-ID | QMT会话ID | 你的会话ID |
| QMT_ACCOUNT-ID | 交易账户ID | 你的交易账户ID |
| MAX-ORDER-VALUE | 单笔订单最大金额 | 100000.0 |
| MAX-POSITIONVALUE | 单个标的的最大仓位 | 500000.0 |
| 配置项 | 描述 | 默认值 |
|---|---|---|
| DEFILT_SYMBOL | 默认股票代码 | 00000 1SZ |
| Default Short Term Average | 5 | |
| Default Long term Moving Average | 20 |
src/strategies/目录下创建策略模块strategy_generator.py中注册新的策略src/tools/目录下创建工具模块main.py中使用@mcp.tool()装饰器注册__init__.py导出新文件中的工具# 运行测试
pytest tests/
# 代码格式化
black src/
# 代码检查
flake8 src/
执行股票交易订单
参数:
symbol (str): 股票代码,例如 "00000 1 SZ"quantity (int): 交易数量必须是100的整数倍price (float): 订单价格direction (str): 交易方向,"BUY" 或 "SELL"返回:
str订单结果信息生成双均线策略
参数:
symbol (str): 目标股票代码short_period (int): 短期移动平均周期long_period (int): 长期移动平均周期strategy_name (str, 可选): 策略名称返回:
str策略生成和回测结果A: 确保QMT客户端已启动并登录,检查QMT_PATH配置是否正确。
A: 在.env文件中修改MAX_ORDER_VALUE、MAX_POSITION_VALUE等待参数。
A: 检查数据日期范围,确保XTQuant具有相应的历史数据权限。
A: 在src/strategies/目录下创建一个新的策略模块,参考ma_strategy.py的实现。
本项目采用MIT许可证 - 详情见LICENSE文档
欢迎提交Issue和Pull Requests以改进项目!
🌟 如果这个项目对你有帮助,请给予Star支持! 🌟
</div>