内容
# sq-mcp
Claude(或任何MCP客户端)与StrategyQuant X之间的桥梁。
我创建这个是因为手动驱动SQ X的速度太慢了。每次回测、重新测试、参数调整都意味着在GUI中点击操作。我希望可以用简单的语言描述我需要的事情,然后让它自动执行:克隆一个项目、新符号运行构建、监控进度、筛选幸存者、优化最好的策略,最终在磁盘上得到一个短列表,而无需手动干预。
该插件作为MCP服务器运行,通过StrategyQuant X内置的HTTP API在5050端口与其通信。
## 功能
**482种工具** — 查看 [工具列表](TOOLS.md) 了解完整目录, [示例工作流](EXAMPLES.md) 了解端到端工作流, [智能代理指南](AGENT_GUIDE.md) 了解AI代理使用模式, [架构图](ARCHITECTURE.md) 了解模块映射, [CLAUDE.md](CLAUDE.md) 了解新代理注册流程, [维护手册](MAINTENANCE.md) 了解模块重组/mypy/性能优化/PyPy/PyO3 — 分为二十多个领域:
**驱动SQ X.** 列出、启动、停止、暂停和恢复项目。加载和保存.cfx配置文件。管理数据银行(计数、列表、强制从JVM内存同步到磁盘、导出到CSV/XLSX)。导入、更新和导出历史数据。多项目批量编排,带有容量限制。
**创建项目.** 克隆一个有效的模板,将其重新定位到不同的符号,带有从SQ注册表中提取的正确经纪人代码,修补日期范围、时间范围、适应度标准、资金管理、SL/PT范围、遗传进化上限、最大策略和单个指标/操作块 — 每个都有自动快照和反向范围验证。在加载.cfx之前进行结构验证。
**静态分析.** 在纯Python中解析.mq5、.sqx和.cfx文件,无需触及引擎。可用于在运行策略之前进行审计 — 标记缺少止损、默认幻数、退出后1个柱状线在小时间范围内等问题。比较两个.sqx存档以查看实际更改的内容。
**投资组合分析.** 按交易哈希去重、防御性复合排名、多样化top-N选择、权益曲线上的Pearson相关性矩阵、Herfindahl集中度得分、分布风险指标、逆DD资本分配和通过汇总每个策略曲线进行合成投资组合权益模拟。
**A/B和回归测试.** 侧-by-side比较两个数据银行、快照指标以供后续迭代,并检测运行间的绿色/黄色/红色回归。
**MT5部署.** 定位MT5、列出已部署的EA、部署单个.mq5/.ex5文件、分配无冲突的幻数、手术修补源代码中的幻数文字、验证已部署的软件包与预期的SHA-256哈希值、将投资组合打包到具有JSON清单的命名子文件夹中,并在一次工具调用中链接完整的SQ → MT5管道(选择 → 审计 → 幻数分配 → 部署)。
**数据质量.** 跨检查SQ的SQLite注册表与磁盘上的.dat文件、柱密度覆盖分析(预期与估计)、mtime检查的过期、.dat头差异用于验证增量提取、整个工作区的质量报告。
**实时监控.** 轮询正在运行的构建、监控适应度曲线、在停滞时中止运行。基于可配置规则的自动停止(低适应度、样本外发散、增长停滞)。
**元数据 + 健康检查.** 自我描述的工具目录、完整环境健康探测(SQ X安装、sqcli二进制文件、引擎端口、data.db、MT5安装、Python依赖项)、工作区概述、$PATH依赖项检查、通用工作流配方。
**可视化 + 报告.** 权益曲线的ASCII Unicode块火花图、数据银行指标的ASCII直方图、投资组合指标的CSV导出、带有每个策略摘要部分的top-N策略的Markdown报告。
**持久化.** `<projects_dir>/.sq_mcp_state.json`(通过`SQ_MCP_STATE`覆盖)的扁平JSON状态存储,用于跨会话的代理内存(幻数、偏好、会话笔记)、工作区指纹哈希、清单差异。
**风险数学.** 加密货币/外汇/通用工具的仓位调整(风险百分比 + 凯利 + 金字塔 + 风险破产)、权益曲线上的蒙特卡罗自举(终端回报 + 最大DD分布 + 概率抽取)、walk-forward折叠分析(IS/OOS滑移、一致性评分)、k-means策略聚类和成对距离、绩效归因(按策略、按月、按状态、赫芬达尔集中度)、实时与回测漂移检测(Wilson CI on win rate, z-score on mean trade, two-sample KS).
**风险配置文件 + MT5代码生成.**精选的`ultra_conservative / conservative / moderate / aggressive`配置文件,捆绑风险交易、最大DD阈值、最大并发仓位和MM-method参数;应用或比较针对任何策略。生成生产形状的MT5 EA脚手架,带有正确的风险百分比调整、幻数过滤、最大批次上限和可选的盈亏平衡/追踪止损,或幂等地将这些防护措施注入现有的.mq5源代码。
**标签 + 通知.**用任意标签标记策略(`production`、`meanrev`、`do_not_deploy`),按标签查询(AND / OR),在所有地方重命名标签。格式化构建状态、审计摘要和部署清单以适用于Slack / Discord / email / one-line cron输出。
**符号智能.** 覆盖磁盘上每个请求的符号的时间范围的覆盖矩阵、新鲜度报告标记过时的.dat文件、单一符号深入研究、填充间隙导入的间隙分析,以及一个标准化器,解决常见的别名表单(BTCUSDT ↔ BTC/USDT ↔ BTC-USDT,...)。
**鲁棒性和推广.** 脆弱策略检测(Gini + Pareto on trade PnLs + consecutive loss streaks),压力测试(滑移、skip-best、random-skip、worst-case streak),声明警报规则,带有精选的工作区默认值,和一个门控推广工作流,它将指标 + 审计 + 漂移 + 压力测试结合成一个“approved / blocked”的裁决。
**操作.** 回测节奏推荐器(no_action / retest / rebuild driven by data freshness and drift),策略血统跟踪(parent → child relationships persisted with cycle safety),标签系统,带有AND/OR查询和重命名,完整的风险调整比率套件(Sharpe, Sortino, Calmar, MAR, Information, Omega, Pain Index, Ulcer Index),显式输入成本模型(commission + slippage overlay + break-even cost + sensitivity grid),日历效应分析(by hour, day-of-week, month, quarter, custom sessions),基准比较(alpha, beta, excess return, outperformance streaks),和Markdown年度/期间报告撰写。
**统计和管道.** 统计假设测试(paired t-test, sign test, Wilcoxon signed-rank, Welch's t-test)以证明“strategy A is really better than B”的主张。完整的“ship to live”管道编排器,链接推广门控 → 标签 → 谷谱注册 → 警报在一个调用中,带有dry-run预览。跨工具多样化评分(HHI on symbol weights)和资产类别分割。批量审计管道,将推广门控应用于每个.sqx,生成一个排名的ready / marginal / blocked队列。带有项目库存、标签库存、血统树大小和过时数据标记的工作区仪表盘,以Markdown格式呈现晨间简报。
**尾部风险 + 过拟合诊断.** 历史/参数VaR + CVaR(Expected Shortfall),收益与痛苦比率和尾部比率,Deflated Sharpe Ratio(Bailey/Lopez de Prado)和削减Sharpe以惩罚多重测试,概率回测过拟合(PBO)来自IS/OOS Sharpe对,声明显著性所需的最小跟踪记录长度与基准。
**状态 + 高级统计.** 滚动波动率和趋势状态分类器,状态条件下的PnL分割,带有交易/跳过建议,样本偏度/超额峰度/ Jarque-Bera正态性,单滞后自相关 + Ljung-Box,Wald-Wolfowitz运行测试,IRR(Newton-Raphson)和时间加权回报。
**指纹 + 投资组合优化.** 确定性策略指纹(参数哈希 + 数值桶哈希 + 权益曲线摘要),带有Jaccard+Pearson相似性评分和近似分组。等权重/逆波动率/迭代风险对冲/坐标下降最小方差分配器,以及多样化比率。
**交易重放 + 工作区操作.** 在不同的佣金/滑移、仓位调整政策(fixed_lot / fixed_fractional / percent_risk)、风险上限(每笔交易、日、周)或状态过滤下重放交易列表,并与原始交易列表进行比较。克隆.sqx文件,原子归档一组策略到zip,带有路径遍历过滤的存档恢复,批量重命名,带有冲突安全性的正则表达式。
**代码生成附加项.** Pine Script v5指标/策略脚手架(SMA/EMA交叉、RSI、MACD)带有TP/SL、大小和日期过滤器,以及警报Webhook模板和尽力而为的MT5 → Pine翻译。MT5 .set/.ini解析器、差异、合并、渲染和风险配置文件应用。
**数据健康.** 柱状间隙检测、新鲜度门控、单调性检查、预期与实际柱状计数,带有市场时间因子,以及一个结合它们的全端`workflow_data_health_check`。
**Lopez de Prado / AFML技术.** 三重屏障标签用于条目(利润目标/止损/时间范围屏障),元标签用于在主信号上堆叠次要分类器,根据概率进行仓位调整,分数微分以保留长内存同时实现平稳性,组合净化交叉验证,带有禁令的发行版OOS路径回测,以及AFML第2章信息驱动的条形构造(tick / volume / dollar / imbalance bars)。
**Hansen SPA + 现实检查 + 系统参数排列.** 多次测试校正的p值,用于“没有策略击败基准”,通过平稳的自举(White's Reality Check + Hansen's studentized SPA +每个策略的一致性报告)。QuantAnalyzer的旗舰系统参数排列:扰乱每个参数±x%,运行分布,推荐中位数-度量(典型的样本外)参数集,而不是样本内最佳。
**波动率估计器.** 5种高频OHLC波动率估计器,带有并排比较:close-to-close,Parkinson,Garman-Klass,Rogers-Satchell,Yang-Zhang。
**Walk-Forward矩阵 + 效率.** WF效率=OOS/IS度量比率,带有判决(优秀/良好/边缘/过拟合/破坏性)。锚定与滚动WF比较。自动推荐WF矩阵中的最佳(IS,OOS)组合,加权平方(oos_bars)以获得统计能力。
**加密永续期货修正.** 资金费率调整后的PnL(从longs中减去8小时资金支付,添加到shorts;当资金>策略PnL的10%时标记)。清算价格+距离计算器,intra-bar清算压力测试,contango / 中性 / backwardation资金费率分类器。
**均值回归诊断.** Hurst指数(R/S),Ornstein-Uhlenbeck半寿命,CUSUM变更点检测器,启发式ADF平稳性测试。
**信息理论.** Shannon熵,KL散度,互信息(捕捉非线性依赖,相关性会遗漏),Schreiber的传输熵,用于方向信息流,投资组合级别的Jensen-Shannon多样性指数。
**执行指标 + 经典水平.** VWAP和TWAP计算,bps滑移测量,带有判决的市场参与率,带有影响层标签的会话VWAP分割。经典/斐波那契/卡马利拉/伍迪/德马克枢轴点,带有并排比较工具。
**条形重采样 + MCP特定安全.** 将OHLCV重采样为任意新间隔(M1→M5,M5→H1,...),无需重新导入数据,并进行会话对齐和时间范围字符串转换。 + 提示注入检测器和递归输出净化器, escapes Markdown fences and fake role tags so untrusted sqcli output can't hijack the LLM, + naive PII redaction.
**滚动窗口实时监控.** 滚动夏普率、回撤率、波动率、相关性、beta/alpha和胜率,在用户提供的跟踪窗口上。捕捉夏普率下降、边缘侵蚀或相关性漂移,比每周一次的全回测刷新更早。
**回撤形状 + 配对交易.** 每集回撤分解(持续时间/深度/下降柱/恢复柱/正在进行),水下时间分数带有判决,按深度桶进行痛苦分解。Engle-Granger协整测试用于配对交易,带有Ornstein-Uhlenbeck半寿命的价差序列,滚动z-score信号,和O(N²)配对扫描,以找到一系列集合中的最协整组合。
**实时敞口 + 信号质量.** 净/总敞口,HHI集中度,杠杆突破检测 vs 政策,相关性加权有效敞口,投资组合VaR分解,按符号贡献。信息系数和信息系数衰减跨期,带有分位数排序和命中率按桶划分,dB中的信号噪声比,信号周转(原始或标准化)。
典型的会话如下:
```
Me: Analyze ~/Downloads/myStrategy.mq5
Claude: One critical risk. The strategy declares a per-trade risk of $100 via
sqMMFixedAmount, but sl=0 that risk parameter is fiction without an
actual stop. Three medium risks too: default magic number 0 (will
collide with anything else running on the same chart), ExitAfterBars=1
on M5 (positions close at the next bar regardless of P/L), no time
filter on a strategy that's clearly intraday.
```
或:
```
Me: Start the Builder, monitor every minute, stop it if it stalls.
Claude: Started. After 6 minutes: 87 strategies, growth flat for the last
3 cycles, OOS/IS ratio drifting down. Stopped. The building blocks
are probably too narrow try widening the indicator pool or
relaxing the entry conditions.
```
## 它不做的事情(诚实)
- **导出.sqx到.mq5.** Build 143中的GUI独有功能。CLI不公开MQL5代码生成。您仍然需要在想要上线策略时自己点击“导出到MT5”。
- **编辑策略逻辑.** .sqx文件是部分编译的二进制文件。您可以读取规则,改变SL/PT或日期范围,重新定位符号,但不能从外部重写入口/出口逻辑。
- **创建新经纪人.** 持有经纪人元数据的H2数据库在引擎运行时被锁定。外汇/通用注册实际上存在于一个SQLite文件中,我可以在不锁定的情况下读取,但写入仍然需要GUI。
- **Windows或macOS.** 我在Fedora 43上运行此平台依赖部分代码(sqcli可执行文件名称、进程标志、安装路径检测)是针对跨平台编码的,但尚未在Windows上进行端到端验证。
## 安装
如果您有`uvx`(推荐 无需Python安装):
```json
{
"mcpServers": {
"strategyquant": {
"command": "uvx",
"args": ["sq-mcp@latest"],
"env": {
"SQX_HOME": "/path/to/StrategyQuantX",
"SQX_HTTP_URL": "http://localhost:5050"
}
}
}
}
```
将此添加到`~/.claude.json`(或您的MCP客户端使用的任何配置文件)并重启。
从源代码:
```bash
git clone https://github.com/DAVIDAROCA27/sqx-mcp
cd sqx-mcp
pip install -e ".[dev]"
sq-mcp # 在stdio上运行服务器
```
## 配置
所有环境变量都是可选的。
| 变量 | 功能 | 默认值 |
| --- | --- | --- |
| `SQX_HOME` | StrategyQuant X安装根目录 | 自动检测自`~/Apps/StrategyQuantX`,`/opt/StrategyQuantX`,`C:/Program Files/StrategyQuant X`,`/Applications/StrategyQuantX.app/...` |
| `SQX_HTTP_URL` | SQ HTTP API基准URL | `http://localhost:5050` |
| `SQX_HTTP_PORT` | 启动sqcli时使用的端口 | `5050` |
| `SQX_LOG_PATH` | sqcli写入日志的位置 | 自动检测(如果存在 `/tmp/sqcli.log`) |
如果sqcli已经在:5050上运行,插件启动时将附加到该实例,而不是启动自己的实例。因此,如果您通常手动启动GUI,插件会无冲突地与其配合使用。
## 工具
所有工具在调用时都带有命名空间 `mcp__strategyquant__*`。完整的工具目录及其描述请参见 [TOOLS.md](TOOLS.md)。以下是按类别划分的工具概览:
**项目 + cfx 编作者**
`project_list`, `project_start`, `project_stop`, `project_pause`, `project_resume`, `project_status`, `project_inspect_cfx`, `project_config`, `project_remove`, `project_force_remove`, `project_load_and_start`, `project_precheck`, `project_clone`, `project_create_from_template`, `project_snapshot`, `cfx_validate`, `cfx_apply_patch`, `cfx_set_instrument`, `cfx_set_fitness_criterion`, `cfx_set_money_management`, `cfx_set_data_range`, `cfx_set_trade_caps`, `cfx_set_sl_pt_range`, `cfx_set_genetic_options`, `cfx_set_max_strategies`, `cfx_list_building_blocks`, `cfx_toggle_building_blocks`, `cfx_configure_robustness`, `cfx_configure_walkforward`, `projects_batch_status`, `projects_batch_start`, `projects_batch_stop`, `projects_inventory`, `workspace_overview`
**数据仓库 + .sqx**
`databank_list`, `databank_count`, `databank_save`, `databank_load`, `databank_clear`, `databank_export`, `databank_force_sync`, `databank_top_n`, `databank_filter`, `databank_promote`, `databank_merge`, `databank_snapshot_metrics`, `databank_regression_check`, `databank_correlation_matrix`, `sqx_inspect`, `sqx_extract_source`, `sqx_diff`, `strategy_orders_export`
**投资组合 + 策略分析**
`portfolio_dedupe`, `portfolio_rank`, `portfolio_summary`, `portfolio_select_diverse`, `portfolio_ab_test`, `portfolio_risk_metrics`, `portfolio_concentration`, `portfolio_capital_allocation`, `portfolio_combined_equity`, `portfolio_combined_equity_explicit`, `strategy_compare_two`, `strategy_summarize`, `strategy_equity_curve_stats`, `strategy_monthly_returns_estimate`, `strategy_export_pipeline`, `strategy_ready_for_deploy`
**MT5 部署**
`mt5_locate`, `mt5_list_experts`, `mt5_list_indicators`, `mt5_deploy_ea`, `mt5_log_tail`, `mt5_assign_magic_numbers`, `mt5_patch_magic_in_source`, `mt5_verify_deployment`, `mt5_strategy_pack`, `pipeline_export_to_mt5`
**历史数据 + 质量**
`data_import`, `data_update`, `data_export`, `data_list_local`, `data_timezones`, `data_coverage_check`, `history_data_summary`, `history_disk_inventory`, `broker_data_integrity`, `data_bar_density`, `data_workspace_quality_report`, `data_dat_header_diff`, `data_age_check`
**符号,仪器,注册表**
`symbol_list`, `instrument_list`, `instrument_add`, `instrument_delete`, `data_registry_lookup`, `broker_registry_query`
**静态分析(无需引擎)**
`analyze_mq5_file`, `compare_mq5_files`, `inspect_cfx`, `inspect_cfx_robustness`, `strategy_audit`, `project_audit`, `workspace_audit`, `pre_live_checklist`
**引擎生命周期 + 诊断**
`engine_start`, `engine_stop`, `engine_status`, `engine_log_stream`, `license_info`, `task_progress`, `health_check`, `environment_health_check`, `tools_catalog`, `env_path_tools_check`
**主动监控**
`monitor_start`, `monitor_stop`, `monitor_list`, `monitor_status`, `monitor_alerts`, `monitor_default_rules`
## 斜杠命令
这些是插件附带的更高级别的工作流程:
- `/sq:analyze-mq5 <file.mq5>` 对一个或多个 EA 进行风险审计。
- `/sq:test-strategy <file.sqx>` 加载并使用默认鲁棒性重新测试。
- `/sq:walk-forward <project>` 协调一个 Walk-Forward 优化。
- `/sq:monitor-build <project> [interval] [auto-stop|alert-only]` 监督长时间运行。
- `/sq:portfolio-build <folder>` 组装一个多元化的投资组合。
- `/sq:data-fix <symbol> [tf]` 诊断和修复数据问题。
- `/sq:ship-to-mt5 <project> <databank> <pack_name> [N]` 选择 → 审计 → 将一个投资组合部署到 MT5。
- `/sq:portfolio-deck <project> [databank] [N]` 具有审计判决的 top-N 策略的 Markdown 卡片。
- `/sq:rebuild-and-compare <project>` 快照,重新构建,快照,回归检查。
- `/sq:health` 完整的环境审计,带有交通灯阻塞器。
- `/sq:cfx-lint <project>` 启发式 lint 一个构建者/优化器的配置。
- `/sq:bootstrap` 首次调用定位:健康 + 工作区 + 状态 + 下一步建议。
- `/sq:overview` 工作区范围的快照:运行中的项目 + 最近的活动 + 数据质量 + 状态指纹。
- `/sq:risk-audit <project>` 依次运行每个风险分析工具:集中度,审计,多样性,相关性,分布。
## 子代理
对于任务,模型受益于在其自己的上下文窗口中运行:
- `sq-strategy-reviewer` 具有明确的运输/不运输判决的第二意见审查。
- `sq-build-watcher` 照顾长时间运行的构建。
- `sq-data-curator` 保持历史数据干净。
- `sq-portfolio-architect` 从候选策略设计投资组合。
## 组织结构
```
src/sq_mcp/
engine.py sqcli 子进程 + HTTP 客户端 + 日志尾部
config.py SQ X 安装路径检测
monitor.py 带有规则的主动构建监视器
parsers/ .mq5/.sqx/.cfx 的纯 Python 解析器
tools/
projects.py 项目 + cfx + 引擎生命周期
databanks.py 数据仓库 + .sqx + 结果集工具
symbols.py 符号/仪器 + SQLite 注册表读取
data.py 历史导入/更新/导出
monitor.py 监视器会话 MCP 工具
analysis.py 静态分析 MCP 工具
audit.py 启发式风险查找扫描
robustness.py Walk-Forward / Monte-Carlo / Retest 配置助手
cfx_config.py 外科手术 cfx 修补程序(适应度,MM,日期)
cfx_advanced.py 更深的 cfx 修补程序(SL/PT,遗传,构建块)
portfolio.py 去重 / 排名 / 摘要 / 多样化选择
portfolio_risk.py 分布风险 + HHI + 资本分配
comparison.py 投资组合 A/B + Pearson 相关性矩阵
pipeline.py 端到端选择 → 审计 → 交通灯判决
pipeline_mt5.py SQ 数据仓库 → MT5 包大型管道
regression.py 迭代的快照/回归检查
integrity.py SQLite 注册表 ↔ 盘上 .dat 交叉检查
data_quality.py 条形密度,头部差异,过期
mt5.py MT5 安装检测 + EA 部署 + 日志尾部
mt5_extra.py 魔术号码分配 + 验证 + 包
batch.py 多项目编排(启动/停止/状态)
strategy_inspect.py 每策略摘要 + 比较 + 曲线统计
analytics.py 组合股权模拟 + 每月回报
meta.py 自描述目录 + 健康探测
diagnostics.py 引擎健康 + 许可证 + 最近的致命错误尾部
```
工具层与两个表面对话:SQ X 的 HTTP API(:5050)用于实时引擎工作,以及文件系统用于离线解析和 SQLite 数据注册表。构建 143 的 CLI 有一些真正的怪癖,我已经解决了(命令只是说“未实现”,引号和空格的解析器错误,数据仓库同步是异步的,没有承诺)那些在代码注释和内存笔记中被注意到,如果你在 Claude Code 中加载项目。
## 开发
```bash
pip install -e ".[dev]"
pytest -q # 520+ 个单元 + 解析器 + 集成测试
ruff check src tests # lint
```
要在 MCP 客户端中使用开发中的版本,请将其配置指向本地 `sq-mcp` 脚本,而不是 `uvx`。
## 许可证
MIT。参见 [LICENSE](LICENSE)。
MCP 配置
以下是此 MCP Server 的配置信息,可直接复制到 Cursor 或其他 MCP 客户端中使用。
mcp.json
连接信息
猜你喜欢
暂无推荐服务器