内容
# 克劳德-忍者交易者-MCP
**一个只读的订单流/足迹桥,用于忍者交易者8,通过模型上下文协议(MCP)为克劳德(或任何MCP客户端)提供服务 - 另外还有防遮挡的图表截图。不需要订单流+ /体积许可。**
一个NinjaScript指标,从`OnMarketData`重建买入/卖出价格(使用与普通图表上的订单流工具相同的“BidAsk”方法),写入原子JSON快照,一个小型Python MCP服务器计算分析(不平衡,堆叠运行,delta分歧,POC,价值区域)并将它们作为工具暴露给您的LLM。 **足迹是数据,而不是图片** - 所以克劳德可以*读取和推理*实时订单流。
> ⚠️ **只读市场数据。无账户访问,无订单放置。** 在忍者交易者**模拟**账户上开发和测试。参见[安全性](#安全性)。
---
## 看看它的实际效果
附加指标,注册MCP服务器,并询问克劳德订单流正在做什么。它通过桥梁读取实时的买入/卖出阶梯,delta和不平衡,并将它们转化为读取:
> **您:** NQ订单流在本交易时段内表现如何?
>
> **克劳德:** *(调用`get_orderflow_summary`,`get_footprint`)* 早晨下跌至约30545(累计delta -698,五个堆叠卖出运行),被09:00 ET时单个3554合约的买入栏(delta +360,十个堆叠买入运行)所吸收,从而设定了交易时段低点。价格一路上涨至30700,然后一个-363 delta的栏拒绝了它。现在价格正在重新测试30700,伴随着看跌的delta分歧(价格上涨,delta -21)和累计delta回到-192。30700是供应区;30653和30545是下行参考点。

桥梁还提供了一个防遮挡的图表截图,由忍者交易者本身渲染,即使窗口被其他应用程序遮挡,也能保持正确:

---
## 为什么存在
大多数“NinjaTrader + AI”项目都是*通用*控制服务器(放置订单,读取仓位)。这个项目故意狭隘且安全:
- **订单流,特别是** - 买入/卖出阶梯 + delta + 不平衡,订单流交易者实际使用。
- **不需要体积许可** - 从原始tick流重建阶梯,因此在普通图表上有效。
- **只读** - 它从不触及您的账户或发送订单。安全运行,同时您可以交易。
- **数据,而不是像素** - 克劳德消耗结构化JSON,它可以推理,而不是截图它必须解释(尽管它也可以获取截图)。
## 功能
- **每栏足迹** - 每个价格水平的买入/卖出量,总量,delta,栏内最小/最大delta,会话累计delta,OHLC。
- **分析(可调,无需重新编译)** - 对角线**不平衡**(默认4:1),**堆叠**运行(≥3),**delta分歧**(蜡烛vs delta),**POC**,**价值区域**(70%)。所有阈值都位于`mcp-server/footprint.py`中。
- **防遮挡图表视觉** - `get_screenshot`通过忍者交易者自己的引擎渲染图表,因此即使窗口被其他窗口遮挡也有效(普通屏幕截图返回NT DirectX图表的黑色)。
- **两种传输方式** - 原子JSON文件投放**和**环回HTTP端点(`127.0.0.1:5670–5679`)。
- **100%体积核对** - 每个栏的阶梯总和正好等于栏的体积(一个保护检查,证明捕获完整性)。
## 架构
```
忍者交易者8图表(开启Tick Replay)
│ OnMarketData → 重建买入/卖出价格(无体积)
▼
克劳德忍者交易者MCP(NinjaScript指标)
│ 原子JSON快照 + 环回HTTP (/footprint, /screenshot, /health)
▼
Python MCP服务器 (stdio)→ 计算分析,暴露工具
▼
克劳德 / 任意MCP客户端
```
## 要求
- **忍者交易者8** (免费模拟账户即可)。在数据系列上启用**Tick Replay**以实现历史足迹准确性(仅实时有效,但无历史记录)。
- **Python 3.10+**。
- 一个**MCP客户端** (例如克劳德代码或克劳德桌面版)。
## 安装 - 步骤
**1. 安装NinjaScript指标**
- 复制`ClaudeNinjaTraderMCP/ClaudeNinjaTraderMCP.cs` → `Documents\NinjaTrader 8\bin\Custom\Indicators\`。
- 在忍者交易者中:**新建 → NinjaScript编辑器 → 按F5** 编译。(仅发送类 - 忍者交易者会在编译时生成自己的包装区域。)
**2. 将其添加到图表**
- 打开一个图表(例如MNQ,1分钟),**指标 → “克劳德忍者交易者MCP” → 添加**。
- 推荐:为该系列开启**Tick Replay**。指标运行`Calculate.OnEachTick`(只读)。
- 它默认将快照写入`Documents\NinjaTrader 8\OCM\footprint_snapshots\`(可在指标属性中配置)。
**3. 设置Python MCP服务器**
```bash
cd mcp-server
python -m venv .venv
# Windows:
.venv\Scripts\activate
pip install -r requirements.txt
```
**4. 在MCP客户端上注册服务器**
- 复制`.mcp.json.example` → 您的客户端的MCP配置(例如项目`.mcp.json`),并编辑绝对路径以指向您的`.venv` Python和`server.py`。
**5. 测试它**
- 重启您的MCP客户端,使其加载服务器,然后要求它调用 **`list_snapshots`** (确认桥梁正在馈送图表)和 **`get_footprint`** (返回实时阶梯 + 分析)。
## MCP工具
| 工具 | 返回内容 |
| --- | --- |
| `get_footprint(count)` | 完整的每栏足迹:OHLC,delta/min/max/cum,买入/卖出阶梯,POC,价值区域,分歧标志,以及对角线和堆叠不平衡。 |
| `get_orderflow_summary(count)` | 简洁的单行每栏摘要(方向,量,delta,累计Δ,POC,VA,分歧,不平衡计数)。 |
| `get_imbalances(count)` | 每栏的对角线买入/卖出不平衡 + 堆叠运行。 |
| `list_snapshots()` | 桥梁当前馈送的图表(工具,周期,捕获的栏数)。 |
| `get_screenshot(instrument, period)` | 防遮挡PNG图表窗口,由忍者交易者渲染。 |
可选过滤器`instrument` / `period`选择特定图表,当运行多个图表时。
### 示例 - `get_orderflow_summary`
```jsonc
{
"instrument": "MNQ 06-26", "barsPeriod": "1 Minute", "capturedBars": 30,
"bars": [
{ "timeUtc": "...T13:48:00Z", "direction": "down", "totalVolume": 2187,
"delta": -1060, "cumulativeDelta": -1060, "poc": 30560.5,
"valueAreaHigh": 30566.0, "valueAreaLow": 30551.25,
"deltaDivergence": null, "buyImb": 3, "sellImb": 57, "stacked": 2 }
]
}
```
## 配置
- **分析阈值** - 编辑`mcp-server/footprint.py`(`IMBALANCE_RATIO`,`STACK_COUNT`,`VALUE_AREA_PCT`)。无需重新编译NinjaScript。
- **快照/截图文件夹** - 指标属性(默认为`Documents\NinjaTrader 8\OCM\`)。MCP服务器遵循`OCM_SNAPSHOT_DIR`环境变量。
- **HTTP端口** - `5670–5679`(第一个空闲端口),仅限环回。
## 安全性
- 指标仅订阅**市场数据** - 它**没有账户访问权限,不会放置、修改或取消订单**。
- HTTP端点仅绑定到**127.0.0.1(环回)**。
- 在**模拟**账户上开发/测试。使用风险自负;市场存在损失风险。
## 工作原理
在每个`Last`交易时,桥梁会对攻击者进行分类(`price ≥ bestAsk` → 买入/卖出量;`price ≤ bestBid` → 卖出/买入量;否则使用tick规则回落),并为每个栏累积一个按价格划分的`买入/卖出`阶梯 - 标准的“BidAsk”重建,因此**不需要交易所的体积馈送**。在栏关闭时,它会写入原子JSON快照;Python服务器读取它并在其上添加分析。
## 开发工具(可选)
- `tools/compile_check.ps1` - NinjaScript的无头Roslyn编译,用于在安装前捕获C#错误。设置`-MsBuild`为您的MSBuild路径(任何VS版本或通过`vswhere`)。
- 桥梁公开一个`GET /recompile`端点,从代码调用忍者交易者自己的编译器(方便迭代)。 **诚实限制:** 它*编译*而无需手动F5,但**加载**新编译的代码到正在运行的图表仍然需要F5 - 忍者交易者将热重载绑定到其编辑器。
## 许可证
[MIT](LICENSE) © 2026 Travis Clement.
## 免责声明
与NinjaTrader, LLC或TradeDevils无关联或获得其认可。“NinjaTrader”是其各自所有者的商标。本软件用于研究/教育;此处内容均非财务建议。交易期货涉及大量损失风险。