内容
<div align="center">
<img src="docs/hero.png" alt="交易传奇委员会" width="840">
<h1>⚖️ 交易传奇委员会(TLC)</h1>
<p><b>十位传奇交易者,每位重建为独立的Claude MCP子代理。</b><br>
他们读取相同的图表,盲投票,然后由主席发出一个风险管理的裁决。</p>
<p>
<img alt="Python 3.10+" src="https://img.shields.io/badge/Python-3.10%2B-3776AB?logo=python&logoColor=white">
<img alt="Claude MCP" src="https://img.shields.io/badge/Claude-MCP%20subagents-cc785c">
<img alt="数据:TradingView · MT5" src="https://img.shields.io/badge/Data-TradingView%20%C2%B7%20MT5-e8b64c">
<img alt="许可证:MIT" src="https://img.shields.io/badge/License-MIT-3ddc84">
<a href="https://fxdavid-offbeatforex.github.io/TLC/"><img alt="VPS 大小 - 直播" src="https://img.shields.io/badge/%E2%96%B6_VPS_Sizer-live-5b8cff"></a>
</p>
<sub>
<a href="#用法">用法</a> ·
<a href="#委员会">委员会</a> ·
<a href="#数据平台 - MT5 或 TradingView">数据平台</a> ·
<a href="#时间表 - 警报 - 24/7 信号推送到 Telegram">时间表</a> ·
<a href="#设置 - 无需 API 密钥">设置</a> ·
<a href="#工作原理">工作原理</a> ·
<a href="#常见问题">常见问题</a>
</sub>
</div>
---
**TLC 是一个多代理 AI 交易分析框架**,适用于 Claude Code 和任何兼容 MCP 的编码代理。十位传奇交易者 - Wyckoff、Gann、Elliott、DeMark 和其他六位 - 每位都作为独立的 Claude 子代理运行,读取相同的图表并盲投票。主席将他们的选票汇总成一个风险管理的信号(`LONG / SHORT / NO_TRADE`),包含入场、止损、目标和仓位大小。
您可以询问 **一位** 传奇交易者的意见,也可以召开整个委员会的会议。
**TLC 的功能:**
- 从您的 MT5 券商或 TradingView(通过 MCP 服务器)拉取实时行情数据
- 每个传奇交易者都作为一个单独、隔离的 Claude 子代理运行 - 它们无法看到彼此的推理
- 每个传奇交易者都生成一个结构化的选票:方向、入场、止损、目标、信念、理由
- 主席根据严格的共识规则汇总所有选票,并发出带有仓位调整的单一裁决
- 裁决被记录、评分,并可选地推送到 Telegram,定时运行
- 您可以从著名的名字或纯英文策略中打造自己的传奇交易者,并组装自定义委员会
---
## 用法
### 一位传奇交易者:`/<传奇交易者> <交易对> [时间框架]`
```
/wyckoff EURUSDzero 1h
```
传奇交易者通过他们自己的视角严格分析图表,并返回一个叙述,以他们的口吻呈现,随后是一个结构化的选票。
**示例输出:**
```
Richard Wyckoff — EURUSDzero 1h | 2026-06-26 07:00
综合操作员一直很忙。查看周线结构,我看到一个清晰的积累阶段,从 5 月初开始 - 一个宽阔的交易范围,重复测试下边界接近 1.1200。卖出高潮很明显:高成交量的下行拒绝,随后自动反弹和次要测试,成交量较轻。弹簧在上周出现:价格一度跌破 1.1185,然后收回范围内 - 经典的假突破,震出弱势手。
在 1 小时锚点上,我正在寻找力量信号。现在我们有了一个上升趋势,通过范围中点,成交量扩大。最后支撑点已经两次保持在 1.1380。回调时成交量正在减少 - 综合操作员没有分配,他正在吸收。
原因已经建立。效果是至少向 1.1560 移动。
{
"legend": "wyckoff",
"symbol": "EURUSDzero",
"timeframe": "1h",
"direction": "LONG",
"conviction": 0.82,
"entry": 1.13850,
"invalidation": 1.13200,
"target": 1.14800,
"regime_assumption": "range-to-markup",
"htf_bias": "up",
"thesis": "Spring confirmed on weekly range; SOS on 1h; LPS holding at 1.1380.",
"created_at": "2026-06-26 07:00"
}
```
---
### 完整委员会:`/convene <交易对> [时间框架]`
```
/convene EURUSDzero 1h
```
所有 10 位传奇交易者都独立且盲目地分析 **相同的市场数据包** - 他们无法看到彼此的投票。然后主席汇总并发出单一的裁决。
**示例输出:**
```
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
交易传奇委员会 · EURUSDzero 1h · 2026-06-26 07:00
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
选票
传奇交易者 方向 置信度 入场价 止损价 目标价 理由
───────── ───────── ───── ──────── ──────── ──────── ──────────────────────────────────
Wyckoff LONG 0.82 1.13850 1.13200 1.14800 Spring + SOS; LPS holding at 1.1380
Dow LONG 0.74 1.13870 1.13350 1.14700 HTF HH/HL confirmed; secondaries rising
Livermore LONG 0.71 1.13900 1.13450 1.14650 Pivotal point at 1.1390 cleared on volume
Elliott LONG 0.60 1.13840 1.13100 1.15200 Wave 3 of (3) after completed ABC low
Hosoda LONG 0.68 1.13880 1.13500 1.14600 Price above cloud; Tenkan/Kijun cross; Chikou clear
Weinstein LONG 0.76 1.13920 1.13500 1.14800 Stage 2 breakout from 6-week base; MA rising
O'Neil LONG 0.65 1.13910 1.13520 1.14750 Flat-base pivot cleared; volume 60% above avg
DeMark SHORT 0.72 1.13890 1.14250 1.12900 Sell Setup-9 completed; exhaustion of buyers
Gann FLAT 0.00 — — — No time/price square active; standing aside
Wilder FLAT 0.00 — — — ADX < 20; RSI 58 — no confirmed signal in either direction
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
主席裁决
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
决定: ✅ LONG
共识: 87% (7 directional for / 1 against / 2 abstain)
入场价: 1.13870
止损价: 1.13420 (LONG 无效价格的中位数)
目标价: 1.14757 (LONG 目标价的中位数)
风险回报比: 2.06
仓位大小: 0.58 of normal risk
支持: Wyckoff · Dow · Livermore · Elliott · Hosoda · Weinstein · O'Neil
反对: DeMark
弃权: Gann · Wilder
理由: 强烈的 LONG 共识(87%)跨趋势跟随、供需和突破方法。DeMark 的反趋势警告被注意到 - TD-9 在此水平意味着行情可能会暂停然后延伸; 在 DeMark 的第一个目标价时收紧止损。
Gann 和 Wilder 弃权:他们的策略中没有设置,这很诚实。他们的投票的缺失降低了总的信念;仓位大小 0.58 反映了这一点。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
选票保存 → data/ballots.jsonl
裁决保存 → data/verdicts.jsonl
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
```
> **NO-TRADE 的情况:** 如果 DeMark 和 Gann 在相反的方向上具有方向性,且共识低于 65%,主席将输出 `NO_TRADE` 及原因。 分裂的委员会是信息 - 这意味着图表确实是模糊的,正确的交易是平仓。
---
## 委员会
| 传奇交易者 | 学派 | 时间框架 |
|---|---|---|
| Charles Dow | 道氏理论(趋势 + 确认) | 多 |
| Richard Wyckoff | 供需,供需复合操作 | 多 |
| Jesse Livermore | 带状阅读 / 关键点 | 单 |
| Ralph N. Elliott | 波浪理论(分形) | 多 |
| W.D. Gann | 几何和时间循环 | 多 |
| Thomas DeMark | 反趋势耗竭(TD 序列) | 单 |
| J. Welles Wilder | 动量/波动性(RSI / ADX / ATR) | 单 |
| Goichi Hosoda | 一目均衡 | 多 |
| Stan Weinstein | 阶段分析(30-MA) | 多 |
| William O'Neil | CAN SLIM 突破,成交量 | 多 |
单一时间框架传奇(Livermore, DeMark, Wilder)仅分析您给出的时间框架。多时间框架传奇自动拉取更高的时间框架并报告其偏差。
---
## 建立您自己的委员会
上述 10 位是 **默认** 委员会。您可以锻造新的传奇 - 从一个著名的名字,或用 **纯英文** 描述一个策略(甚至您自己的),并将它们组合成一个自定义委员会。一切都是对话式的; `/forge-legend` 和 `/council` 只是快捷方式。
```
You: i want to build a council called "orderflow" with wyckoff and livermore,
plus an ICT order-block trader, plus my own strategy
TLC: Wyckoff and Livermore are in. Two to forge.
"ICT order-block" → drafted `ict_ob` (multi-TF; entry = mitigation of a
bullish order block in a killzone). One gap: what invalidates the trade?
You: a candle close back through the order block
TLC: Locked. ✅ lint passed ✅ audition on EURUSD 15m → valid ballot
Saved → my_legends/ict_ob.md
Now your own strategy — describe how you trade it.
You: buy when price sweeps the prior day's low then reclaims it on the 5m,
stop under the sweep, target the prior day high
TLC: Drafted `my_sweep` (single-TF 5m; invalidation = below the sweep low;
target = prior-day high). No gaps.
✅ lint passed ✅ audition on EURUSD 5m → valid ballot
Saved → my_legends/my_sweep.md
Council "orderflow": wyckoff, livermore, ict_ob, my_sweep. Threshold 0.65 —
keep it?
You: make it 60
TLC: Saved → councils/orderflow.yaml (4 members, threshold 0.60).
Run it: "convene the orderflow council on <symbol>".
```
然后像其他会议一样运行:
```
/convene EURUSD 15m --council orderflow # 或: "convene the orderflow council on EURUSD"
```
每个新传奇都必须通过 **检查**(有效模式 + 定义的无效规则,以便可评分)和 **现场试用**(它实际上生成有效的选票)才能投票 - 因此自定义委员会与默认委员会一样严格。您创作的传奇存放在 `my_legends/`(gitignored - 您的策略保留为您所有);委员会文件是小型可共享的列表。
---
## 设置 - 无需 API 密钥
**您的编码代理是 LLM.** 委员会作为您自己的计划(Claude Code, Codex, Cursor, Windsurf 等)的子代理运行 - 不需要我们的密钥。
(“无需 API 密钥”是指 **来自 TLC** - 委员会在您自己的代理订阅上运行。TradingView 平台使用来自 tvremix.xyz 的免费第三方密钥;MT5 平台不使用。)
**设置由代理在聊天中完成 - 无需终端。**
```bash
git clone <此仓库>
cd TA-Legends-Council
pip install -r requirements.txt
```
然后在您的 AI 代理(Claude Code, Cursor, Windsurf, Codex…)中打开文件夹,说些什么 - “hi”,“convene EURUSD”,什么都行。代理检测到缺少的配置文件,并通过对话引导您完成设置:
- 询问您选择哪个数据平台(MT5,TradingView 或两者)和哪些可选功能(定时引擎,Telegram 警报)。
- **MT5 路径:** 克隆 [MBT](https://github.com/FXDavid-OffbeatForex/MBT)(如果它不存在),安装其依赖项,写入 `.mcp.json` 以将其注册为 MCP 服务器,并询问您的 `mt5_path`(右键单击您的 MT5 快捷方式 → 属性 → 目标)或为您查找(如果您命名您的券商)。
- **TradingView 路径:** 写入一个空白的 `.env` 框架,并提供一个机会为您打开它,以便您粘贴您的免费 `tvr_…` 密钥(来自 [tvremix.xyz](https://tvremix.xyz))- 密钥从未通过聊天传递。
- 写入 `config.yaml` 并可选地验证连接。
一次性设置完成后,重启您的代理(以便 MBT MCP 加载),然后开始:
```
/convene EURUSDzero 1h` 或 `/wyckoff EURUSDzero 15m`.
```
**接受的时间框架格式:** `M15`, `15m`, `15` → `15m` · `H1`, `1h` → `1h` ·
`D1` → `1d` · `W1` → `1w`。符号自动转换为大写。
每个代理都通过打印 **TLC 标语**(在任何客户端中都有效 - 终端,IDE 面板或网络)来开启新会话。
### 可选:`tlc` 启动器 - 动画介绍
纯粹为终端爱好者准备。不要使用 `claude`,而是使用随软件包捆绑的启动器启动会话,您将看到 3.5 秒的“雷电”介绍,然后由 Claude Code 接管。直接从任何克隆中运行,无需安装:
```bash
./tlc.sh # 播放开场动画,然后在此处运行 `claude`
./tlc.sh convene EURUSD 1h # 参数直接传递
```
**可选 - 全局 `tlc` 命令。** 如果您更喜欢输入 `tlc` 而不是 `./tlc.sh`:
```bash
./tlc.sh install # 一次性;将启动器复制到 ~/.local/bin
```
这是故意与克隆无关的:它复制了一个通用启动器(它不指向此仓库),因此您可以删除克隆,拉取新的克隆,`cd` 进入它,并且 `tlc` 仍然有效 - 无需重新安装,任何东西都不会悬挂。开场动画从您所在的克隆中读取,因此新的克隆不需要额外的设置。
它特定于 Claude-Code,并且仅限于终端 - 动画在非交互式上下文(cron,`claude -p`,管道输出,IDE 面板)中无效,并尊重 `NO_COLOR`。直接运行 `claude` 与动画完全相同,只是没有动画。
---
## 数据平台 - MT5 *或* TradingView
委员会的读取方式与数据来源无关。您为每个请求选择**平台**(或让它自动路由):
| 平台 | 最适合 | 您安装的内容 |
|---|---|---|
| **MT5** (通过 MBT) | 券商原生外汇/金属 + 本地回测循环 | MT5 终端 + MBT MCP |
| **TradingView** (通过 [tvremix](https://tvremix.xyz)) | 股票,加密货币,**和** 外汇 - **无需安装** | 一个免费的 `tvr_…` API 密钥 |
**仅限 TradingView 的**用户无需 MT5,无需 MBT,无需 Wine,无需券商 - 只需从 [tvremix.xyz](https://tvremix.xyz) 获取密钥。
在您的代理打开仓库,说“hi”,选择 TradingView 进行设置,然后将从 [tvremix.xyz](https://tvremix.xyz) 获取的免费 `tvr_…` 密钥粘贴到代理创建的 `.env` 文件中。代理通过 `.mcp.json` 自动注册 tvremix MCP 服务器。
启用 **两者** 时,符号根据资产类别自动路由(外汇 → MT5,股票/加密货币 → TradingView),并且跟踪令牌覆盖:
/convene AAPL 1h # 股票 → 自动 TradingView
/convene EURUSD 1h # 外汇 → 您的券商(MT5)
/convene EURUSD 1h tv # 强制 TradingView 进行此调用
/gann BTCUSD 4h # 加密货币 → TradingView
```
纯英文同样适用 - *“给我来自 TradingView 的 EURUSD 的 Gann 读数”*,或设置一次 *“我只想要 TradingView”*,它将持续整个会话(参见 [CLAUDE.md](CLAUDE.md))。无代理头部检查:
```bash
python3 -m tlc.data_desk BTCUSD 1h # 直接构建 TradingView 数据包
```
每个选票和裁决都标记了其 `platform`,因此结果始终与其生成的相同数据源进行评分。
---
## 时间表和警报 - 24/7 信号推送到 Telegram
除了按需询问外,您还可以 **按时钟** 运行委员会,并在发出交易时收到 **Telegram** 消息。每分钟、每小时或每天 - `15m`、`2h`、`3d`,...
```
scan EURUSD every hour and alert me # 普通英文
/schedule set EURUSD 1h --every 1h # 命令
python3 -m tlc.cron list # 已列出
python3 -m tlc.cron stop EURUSD_1h # 删除它
```
**每次触发:** 构建一个新鲜的数据包 → 委员会盲投票 → 主席裁决 → 记录到 `data/` → 交易裁决推送到 Telegram(默认情况下 `NO_TRADE` 保持沉默)。
**多个符号?** 共享间隔的时间表 **自动交错** 跨周期 - 第一个在整点触发,第二个在 +30m,+15m,+45m,... - 因此它们永远不会同时启动。这样可以保持 RAM 峰值和 TradingView 每分钟预算平稳(通过 `--offset <minutes>` 覆盖每个作业;偏移量在 `cron list` 中显示为 `@+Nm`)。
### 2 分钟内设置 Telegram
1. 消息 **[@BotFather](https://t.me/BotFather)** → `/newbot` → 复制 **机器人令牌**。
2. 给您的新机器人发送任意消息,然后打开
`https://api.telegram.org/bot<TOKEN>/getUpdates` 并复制 `"chat":{"id":…}` 编号。
3. 将两者放入 `.env`,并在 `config.yaml` 中启用它:
```bash
# .env
TELEGRAM_BOT_TOKEN=123456:ABC...
TELEGRAM_CHAT_ID=987654321
```
```yaml
# config.yaml
alerts:
enabled: [telegram]
```
### 两个引擎 - 您的订阅,或您自己的密钥
调度触发器通过 **引擎**(`config.yaml → engine`)运行:
| | `engine: agent`(默认) | `engine: api` |
|---|---|---|
| 运行 | 您的编码代理 CLI 静默运行(`claude -p …`) | `python3 -m tlc.orchestrator …` |
| LLM 付费 | 您的 **订阅**(最便宜) | 您自己的 **API 密钥**(OpenRouter/Anthropic 在 `.env`) |
| 最适合 | 轻/中度调度 | 重度 24/7,多符号 |
无论哪种方式,裁决和警报都是相同的 - `api` 只需将大脑换成您自己的密钥。
### 在哪里 24/7 运行它(以及大小)
机器必须保持开启。大小先 - 大小执行确切的饲料/成本数学运算,并推荐适合的最小计划。选择您的车道:
| 数据 | 大小和运行它 | 为什么 |
|---|---|---|
| **TradingView**(api 或代理) | **[▶ VPS 大小工具](https://fxdavid-offbeatforex.github.io/TLC/)** → 最便宜的 **[InterServer](https://www.interserver.net/vps/?id=579551)** Linux 切片(从 **$3/月**,一键订购) | 便宜的 Linux;无 MetaTrader |
| **MT5** | **[▶ Windows VPS 大小工具](https://offbeatforex.com/best-forex-vps/)** - MetaTrader 必须 24/7 运行 | 仅限 Windows 的券商终端 |
首选 CLI?相同的数学运算,头部:
```bash
python3 -m tlc.vps_calc --jobs 3 --interval 1h --engine api --platform tv
# → 饲料预算 ✅ · ~vCPU/RAM · 推荐:InterServer 1-切片($3/月)+ 链接
```
> **TradingView 警告:** (MT5 免受影响)条形缓存 5m-1h 按大小,因此不要比这更快调度,并且免费密钥限制 **20/min · 200/hr · 1,500/天** - TLC 为您强制执行预算,大小工具会标记一个将超过它的调度。
## 工作原理
```
get_ohlcv (MBT MCP)
→ 市场数据包构建一次,相同地传递给所有传奇 tlc/market_packet.py
→ 10个传奇子代理并行运行 tlc/legends/*.md
→ 选票验证 + 持久化 tlc/ballot.py · tlc/sinks/
→ 主席聚合 → 裁决或不交易 tlc/chairman.py
→ (可选)评估选票历史与实际行情 tlc/scoring/score.py + MBT
```
**主席规则:** `consensus = winner_weight / all_directional_weight`。
分裂或低于65%的结果为`不交易`。弃权减少总体信念但不计入多数。这迫使系统至少30%的时间保持中立——任何信号系统可以拥有的最有利的纪律。
---
## 本地评分
每个选票和裁决都被记录到`data/`中。将它们转换为MBT兼容的信号CSV(可按传奇筛选),并在MT5运行时对它们进行评分:
```bash
# 所有传奇
python3 -m tlc.scoring.score data/ballots.jsonl signals_all.csv
# 单个传奇(用于每个传奇的跟踪记录)
python3 -m tlc.scoring.score data/ballots.jsonl signals_wyckoff.csv --legend wyckoff
# 然后在CSV上运行MBT的回测工具(需要MT5)
```
---
## 常见问题
<details>
<summary><b>这会进行实际交易吗?</b></summary>
<br>
不。TLC输出信号——方向、入场、止损、目标——但从不连接到券商账户。您可以决定是否采取行动。
</details>
<details>
<summary><b>我需要支付LLM API密钥吗?</b></summary>
<br>
TLC不需要密钥。议会运行在您现有的Claude Code(或Cursor/Windsurf)订阅上。TradingView路径需要来自<a href="https://tvremix.xyz">tvremix.xyz</a>的免费<code>tvr_…</code>密钥;MT5路径不需要。
</details>
<details>
<summary><b>什么是MCP,为什么TLC使用它?</b></summary>
<br>
MCP(模型上下文协议)是Anthropic的开放标准,允许AI代理访问外部工具。TLC使用两个MCP服务器:<a href="https://github.com/FXDavid-OffbeatForex/MBT">MBT</a>用于实时MT5券商行情,tvremix用于TradingView数据。每个传奇都作为一个隔离的Claude MCP子代理运行——在主席聚合所有选票之前与其他代理隔离。
</details>
<details>
<summary><b>它适用于股票、加密货币和外汇吗?</b></summary>
<br>
是的。TradingView涵盖股票(NASDAQ,NYSE)、加密货币(Binance,Coinbase)和外汇。MT5涵盖券商原生外汇和金属。启用两者,TLC会自动按资产类别路由。
</details>
<details>
<summary><b>我可以使用自己的交易策略吗?</b></summary>
<br>
是的。<code>/forge-legend</code>将任何策略的纯英文描述转换为可投票的传奇——您的ICT设置、扫荡和回收入口、您交易的任何内容。自定义传奇位于<code>my_legends/</code>(gitignored)并适用于任何议会。
</details>
<details>
<summary><b>TLC是否适用于Cursor / Windsurf / Codex?</b></summary>
<br>
任何MCP兼容的编码代理都适用。设置流程和斜杠命令是为Claude Code编写的,但底层Python在任何地方运行,任何可以调用MCP工具的代理都可以驱动它。
</details>
---
## 开发 / 测试
确定性核心(数据包构建、选票验证、主席聚合)是纯Python——无需MT5或LLM即可运行测试:
```bash
pip install -r requirements.txt
python3 -m pytest tests/ -q # 113个测试,~0.3s
```
---
## 更多来自FXDavid的信息
- **YouTube:** [youtube.com/@fxdavid9392](https://www.youtube.com/@fxdavid9392) — 通过此委员会的传奇进行TA教育
- **MT5数据桥:** [MBT](https://github.com/FXDavid-OffbeatForex/MBT) — TLC用于拉取实时券商行情的MCP服务器
*TLC输出信号,不输出订单。这里没有任何财务建议。*
MCP 配置
以下是此 MCP Server 的配置信息,可直接复制到 Cursor 或其他 MCP 客户端中使用。
mcp.json
连接信息
猜你喜欢
暂无推荐服务器