TradingView-Machine-Learning-GUI
TradingView-Machine-Learning-GUI(核心项目 HyperView)是一款面向量化交易者的终端策略实验室。它将 TradingView 上的图表想法转化为可验证的 Python 交易系统,有效解决了 Pine 脚本难以深度开发与本地回测的痛点。
传统模式下,开发者往往需要在 Pine 脚本、CSV 导出和自定义笔记本间反复切换,导致效率低下。它提供了一个流畅闭环:直接从 TradingView WebSocket 拉取历史数据,利用 TA-Lib 计算指标,并以接近 Pine 脚本的执行行为进行回测。这意味着在本地调优的参数,应用到 TradingView 时依然保持一致。
它特别适合希望像工程师一样构建策略的交易员和量化研究人员。无需复杂的 API 配置或浏览器自动化,付费账户甚至能下载 4 万根 K 线。内置的贝叶斯优化功能可自动搜索最佳止损止盈参数,配合 Rich 库生成的清晰终端报表,让策略验证更高效、更精准,真正实现快速迭代与严谨验证。
使用场景
量化交易员李明需要将他在 TradingView 上验证过的 Pine 脚本策略迁移到本地 Python 环境进行深度回测和参数优化,以确保策略在实盘中的稳定性。
没有 TradingView-Machine-Learning-GUI 时
- 需手动导出 CSV 数据,格式清洗耗时且容易因编码问题丢失关键行情信息。
- Pine 脚本与 Python 逻辑难以对齐,回测结果不一致导致策略信任度低,无法确认盈利来源。
- 调整止损止盈参数需反复修改代码并重新运行,效率极低且容易在人工操作中引入错误。
- 缺乏专业的终端输出,难以直观对比多标的组合表现和资金曲线统计。
使用 TradingView-Machine-Learning-GUI 后
- 直接通过 WebSocket 下载历史 K 线,支持付费账号获取 4 万根 K 线,无需手动处理 CSV 文件。
- 内置 TA-Lib 确保指标计算与 Pine 脚本完全一致,回测结果高度可信,填补了本地开发与平台测试的鸿沟。
- 利用 Optuna 自动搜索最佳 SL/TP 参数组合,快速锁定最优解并生成预设文件,大幅缩短迭代周期。
- 提供 Rich 库驱动的精美终端表格,直观展示盈亏、回撤及期望值,便于快速决策。
实现了从图表实验到工程化策略的快速闭环验证,让策略开发像工程师一样严谨高效。
运行环境要求
- Windows
- macOS
- Linux
未说明
未说明

快速开始
HyperView
将 TradingView 的想法转化为可测试、终端级速度的交易系统。
HyperView 旨在解决这样一个时刻:当 TradingView 策略不再仅仅是图表实验,而是需要确凿证据时。它直接从 TradingView 的 websocket (Web 套接字) 获取历史 K 线,在 Python 中运行你的策略逻辑,并以紧密模仿 Pine Script (TradingView 脚本语言) 的成交行为进行回测,这样你在本地 Python 中调优的结果将与你在 TradingView 策略测试器中看到的结果一致。
无需在 Pine 脚本、CSV 导出和临时笔记本之间来回切换,HyperView 提供了一个简洁的流程:获取多达 40K 根 K 线,基于 TA-Lib (技术分析库) 的 150+ 指标构建,模拟真实的止损/止盈 (SL/TP) 执行,并让贝叶斯优化 (Bayesian optimization) (Optuna TPE) 搜索更好的参数范围。无需 API 密钥。无需浏览器自动化。无需清理电子表格。只需更快的迭代、更精准的验证,以及专为希望像工程师一样开发策略的交易者打造的流程。
前置要求
- Python 3.11+
- TA-Lib — 由
pip install自动安装。Windows、macOS 和 Linux 上提供 Python 3.9–3.14 的预编译 wheel (Python 包格式) 包。 - rich — 自动安装。用于驱动样式化的终端输出(彩色表格、进度指示器、面板)。
- Firefox (可选) — 如果你有 TradingView 付费计划,HyperView 可以读取你的 Firefox 会话 cookie (会话凭证) 以下载多达 40K 根 K 线。如果没有,websocket 仍匿名下载多达 5K 根 K 线。要使用此功能,只需在下载数据前在 Firefox 中登录 tradingview.com。
快速开始
# Install in editable mode (creates the `hyperview` CLI command, installs all dependencies including TA-Lib)
pip install -e .
# Download data for specific pairs
hyperview download-data --pairs NASDAQ:NFLX NASDAQ:AAPL --timeframe 1h --session extended
# Or define your pairs in config.json and download multiple timeframes at once:
hyperview download-data --timeframe 1h 15m
# Run a single backtest (uses config pairlist)
hyperview backtest --sl 3.23 --tp 13.06 --mode long
# Or target a specific symbol using values from a hyperopt preset file
hyperview backtest --symbol NASDAQ:NFLX --preset-file results/adx_stochastic_presets.json
# Hyper-optimize SL/TP across all pairs in config
hyperview hyperopt --mode long
# List cached data and registered strategies
hyperview list-data
hyperview list-strategies
你也可以通过 python -m hyperview 运行,而不是使用 hyperview 命令。
Python 字节码 (bytecode) 被重定向到项目级别的 .pycache/ 目录,因此运行时导入不会在 hyperview/ 或 strategy/ 下创建分散的 __pycache__ 文件夹。
工作原理
- 下载 — 使用现有的 Firefox 会话 cookie 连接到 TradingView 的 websocket。付费计划支持多达 40K 根历史 K 线,并支持自动回填。
- 信号 — 在纯 Python 中运行可插拔策略(例如包含的 MACD+RSI 或 ADX+Stochastic),并与 TA-Lib 指标保持对等。
- 回测 — 使用 TradingView 对等的成交假设逐根 K 线模拟交易(次根 K 线开盘入场,根内止损/止盈出场顺序)。多对交易会产生真正的 PORTFOLIO 聚合行,包含合并后的权益曲线统计信息。
- 超优化 — 在 SL/TP 组合上运行贝叶斯优化 (Optuna TPE),然后更新策略预设文件,为每对/上下文保存最佳结果。
终端输出
回测和超优化命令均使用 rich 生成样式化的终端输出:
- 回测摘要 — 带有边框的表格,在收益率、回撤、期望值和最大单笔亏损上使用彩色方向箭头(▲ 绿色代表盈利,▼ 红色代表亏损),使用适合正常终端宽度的易读简短标签。当运行多个交易对时,会追加一个 PORTFOLIO 行,其中包含从合并权益曲线计算出的数学正确的聚合统计信息(而非简单平均值)。
- 超优化结果 — 面板标题显示策略/模式/时间框架,每个交易对的要点数据和信号摘要,以及一个顶部 N 结果表,其中参数列(SL/TP)用青色高亮显示,并在视觉上与指标列分开。
仓库布局
pyproject.toml Package metadata & CLI entry point
config.json Default configuration (timeframe, pairlist, opt ranges)
config.schema.json JSON Schema for editor validation & autocompletion
data/ Cached candle CSVs (auto-generated)
results/ Optimization presets & reports (auto-generated)
strategy/ — 可插拔策略框架
strategy/
├── __init__.py Plugin registry & auto-discovery
├── base.py BaseStrategy ABC & prepare_candles()
├── indicators.py TA-Lib wrappers, conversion helpers & signal toolkit
├── adx_stochastic.py ADX+Stochastic strategy
└── macd_rsi.py MACD+RSI strategy
hyperview/ — 核心引擎
hyperview/
├── __main__.py Module entry point (python -m hyperview)
├── config.py Config loader (JSON + CLI overrides + env vars)
├── models.py Shared dataclasses (CandleRequest, Trade, BacktestMetrics, …)
├── presets.py Preset load/save for optimized SL/TP parameters
├── validators.py Configuration & preset validation rules
├── runtime.py Bytecode cache redirection
│
├── cli/ CLI router & subcommand handlers
│ ├── __init__.py Argument parser & main() dispatcher
│ ├── formatting.py Shared formatting helpers (rich tables, arrow decorators)
│ ├── backtest.py backtest command
│ ├── download.py download-data command
│ ├── hyperopt.py hyperopt command
│ └── list.py list-data & list-strategies commands
│
├── backtest/
│ └── engine.py TradingView-parity OHLC simulator
│
├── downloader/
│ ├── client.py TradingView websocket downloader & cache orchestration
│ ├── cache.py CSV-backed local candle cache
│ ├── credentials.py Firefox credential extraction
│ ├── session.py WebSocket chart session manager
│ └── timeframes.py Timeframe constants & utilities
│
└── hyperopt/
└── optimizer.py Bayesian optimizer (Optuna TPE)
配置
HyperView 从项目根目录的 config.json 加载默认值。CLI(命令行界面)标志位始终覆盖配置值。
下方示例展示了自定义设置;如果省略某个键,HyperView 将回退到运行时默认值。
{
"timeframe": "1h",
"session": "regular",
"mode": "long",
"strategy": "adx_stochastic",
"initial_capital": 100000,
"data_dir": "data",
"output_dir": "results",
"pairlist": [
"NASDAQ:NFLX",
"NASDAQ:TSLA",
"COINBASE:BTCUSD",
"COINBASE:ETHUSD"
],
"optimization": {
"n_trials": 200,
"objective": "net_profit_pct",
"top_n": 10,
"sl_range": { "min": 1.0, "max": 15.0 },
"tp_range": { "min": 1.0, "max": 15.0 }
}
}
使用 --config /path/to/custom.json 加载不同的文件。
交易对列表 (Pairlist)
pairlist(交易对列表)数组定义了你想要处理的目标符号。每个条目必须使用 EXCHANGE:SYMBOL 格式——这允许你在单个配置中混合来自不同交易所的交易对:
"pairlist": [
"NASDAQ:NFLX",
"NASDAQ:TSLA",
"NASDAQ:AAPL",
"COINBASE:BTCUSD"
]
当你运行命令时未指定 --pairs 或 --symbol,HyperView 会自动使用配置中的 pairlist(交易对列表)——按顺序下载、回测 (backtesting) 或优化每个交易对。如果你在 CLI 上传递了 --pairs 或 --symbol,则本次运行将忽略配置中的 pairlist。
你可以为不同的资产类别维护单独的配置文件:
hyperview --config stocks.json download-data
hyperview --config crypto.json hyperopt --mode long
CLI 参考
download-data — 获取 K 线数据
# 下载配置 pairlist 中的所有交易对
hyperview download-data
# 或直接指定交易对,包括多个时间周期
hyperview download-data --pairs NASDAQ:NFLX NASDAQ:AAPL NASDAQ:TSLA --timeframe 1h 15m --start 2023-01-03
| 标志位 | 必填 | 默认值 | 描述 |
|---|---|---|---|
--pairs |
否 | 配置中的交易对列表 | 一个或多个 EXCHANGE:SYMBOL 交易对(覆盖 pairlist) |
--timeframe |
否 | 配置 | 一个或多个 K 线间隔 (timeframe):1m 5m 15m 1h 4h 1d 等 |
--start / --end |
否 | — | 日期范围(ISO 格式) |
--session |
否 | 配置 | 常规或盘后 (session) |
--adjustment |
否 | splits |
价格调整 (adjustment)(拆股、股息、无) |
backtest — 单一策略评估
# 回测配置 pairlist 中的所有交易对
hyperview backtest --sl 5.0 --tp 5.0 --mode long --start 2023-01-03
# 或使用 hyperopt 创建的预设文件针对特定符号
hyperview backtest --symbol NASDAQ:NFLX --preset-file results/adx_stochastic_presets.json --start 2023-01-03
如果省略了 --sl 和 --tp,HyperView 会使用 pair + timeframe + session + adjustment + mode 在提供的 --preset-file(预设文件)中查找匹配的条目。CLI 值仍然优先于 preset-file 的值。
| 标志位 | 必填 | 默认值 | 描述 |
|---|---|---|---|
--symbol |
否 | 配置中的交易对列表 | EXCHANGE:SYMBOL 交易对(覆盖 pairlist) |
--sl |
否* | — | 止损百分比 (%) (*除非存在匹配的 --preset-file 条目,否则必填) |
--tp |
否* | — | 止盈百分比 (%) (*除非存在匹配的 --preset-file 条目,否则必填) |
--preset-file |
否 | 自动检测 | 策略预设 JSON 路径(自动检测输出目录中的 <strategy>_presets.json) |
--strategy |
否 | 配置 | 策略名称(例如 macd_rsi, adx_stochastic) |
--mode |
否 | long |
做多、做空或双向 (long, short, or both) |
--timeframe, --session, --adjustment, --start, --end |
否 | 配置 / 默认值 | 标准过滤器 |
hyperopt — 超参数优化 (hyperopt) SL/TP
# 优化配置 pairlist 中的所有交易对(每个交易对运行一次优化)
hyperview hyperopt --n-trials 300
# 或针对特定符号
hyperview hyperopt --symbol NASDAQ:NFLX --n-trials 300
| 标志位 | 必填 | 默认值 | 描述 |
|---|---|---|---|
--symbol |
否 | 配置中的交易对列表 | EXCHANGE:SYMBOL 交易对(覆盖 pairlist) |
--sl-min, --sl-max |
否 | 配置 | 止损百分比 (%) 搜索范围 |
--tp-min, --tp-max |
否 | 配置 | 止盈百分比 (%) 搜索范围 |
--n-trials |
否 | 配置 | 贝叶斯优化 (Bayesian optimization) 试验次数(默认:200) |
--objective |
否 | 配置 | net_profit_pct profit_factor win_rate_pct max_drawdown_pct trade_count |
--top-n |
否 | 配置 | 保留的前 N 个候选数量 |
--strategy, --mode, --timeframe, --adjustment, 等 |
否 | 配置 / 默认值 | 标准过滤器 |
list-data — 显示缓存数据集
hyperview list-data
list-strategies — 显示可用策略
hyperview list-strategies
指标
HyperView 附带了 20 个由 TA-Lib(技术分析库)支持的封装指标,以及 4 个信号辅助函数。你还可以通过 to_numpy / wrap 转换辅助函数直接访问所有 150+ 个 TA-Lib 函数。
封装指标
| 类别 | 函数 |
|---|---|
| 移动平均线 | ema, sma, wma |
| 动量 | rsi, macd, stochastic, stochastic_rsi, cci, williams_r, momentum, roc |
| 趋势 | adx (返回 ADX, +DI, −DI), aroon (返回 down, up), psar |
| 波动率 | atr, bollinger_bands (返回 upper, middle, lower) |
| 成交量 | obv, mfi, ad, vwap |
信号辅助函数
| 函数 | 描述 |
|---|---|
crossed_above(a, b) |
当 a 上穿 b 的 K 线上返回 True |
crossed_below(a, b) |
当 a 下穿 b 的 K 线上返回 True |
barssince(cond) |
条件上次为 True 以来的 K 线数 |
to_unix_timestamp(dt) |
将 ISO 日期字符串转换为 UTC Unix 时间戳 |
直接使用 TA-Lib
对于上述未封装的 TA-Lib 150+ 函数中的任何一个,直接调用 talib 并使用转换辅助函数:
import talib
from strategy.indicators import to_numpy, wrap
df["cci"] = wrap(talib.CCI(to_numpy(df["high"]),
to_numpy(df["low"]),
to_numpy(df["close"]), timeperiod=20), df.index)
添加自定义策略
- 在
strategy/目录下创建一个新文件(例如my_strategy.py) - 继承
BaseStrategy(基础策略)类并实现generate_signals()、default_settings()以及required_columns()方法 - 使用
@register_strategy装饰器装饰该类
策略会在启动时自动发现——无需手动导入。
from strategy import register_strategy
from strategy.base import BaseStrategy
from strategy.indicators import ema, crossed_above
@register_strategy
class MyStrategy(BaseStrategy):
strategy_name = "my_strategy"
def default_settings(self):
return {"fast_period": 10, "slow_period": 20}
def required_columns(self):
return ["time", "open", "high", "low", "close"]
def generate_signals(self, candles, settings):
df = self.prepare_candles(candles)
fast = ema(df["close"], settings["fast_period"])
slow = ema(df["close"], settings["slow_period"])
df["buy_signal"] = crossed_above(fast, slow)
df["sell_signal"] = crossed_above(slow, fast)
df["in_date_range"] = True
df["enable_long"] = True
df["enable_short"] = False
return df
然后使用它:hyperview backtest --symbol NASDAQ:NFLX --strategy my_strategy --sl 5 --tp 5
输出文件
Hyperopt(超参数优化)会更新 results/ 目录下的策略预设文件:
results/macd_rsi_presets.json
每个文件为该策略存储每个精确的 pair + timeframe + session + adjustment + mode 组合的一个最佳预设。重新运行 Hyperopt 仅替换匹配的条目,并保留文件中已保存的其他上下文。
回测假设
模拟器近似模拟 TradingView(交易平台)的 intrabar(K 线内)填充行为:
- 入场:由信号生成的市价单将在下一根 K 线开盘时成交
- K 线内路径:如果一根 K 线开盘价更接近其最高价,路径是
open → high → low → close;更接近其最低价,路径是open → low → high → close - 仓位管理:每笔交易使用 100% 权益,无
pyramiding(金字塔式加仓) - SL/TP(止损/止盈)离场:在同一根 K 线内根据
intrabar价格路径进行检查
常见问题
相似工具推荐
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
NextChat
NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。