Skip to content

About

一款科幻风ui,专注加密货币量化交易

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

ASTRA 星枢 · 量化驾驶舱

基于 OctoBot 执行策略、连接 Bitget 的量化交易系统,配一个 3D 科幻风格的实时驾驶舱。

Bitget ⇄ OctoBot(执行策略,下单)⇄ 桥接服务(读取数据)⇄ 驾驶舱 http://localhost:8080
  • OctoBot 负责连接 Bitget、运行网格或补仓策略、下单。官方开源项目,以独立容器运行,本项目没有修改它。
  • 桥接服务(bridge/)从 OctoBot 读取挂单、成交、持仓和盈亏,从 Bitget 读取行情,实时推送给驾驶舱。它不会自己下单。
  • 驾驶舱(web/)包含:3D 主视觉(时间光环 / 全息 K 线台)、概率栅格、市场脉搏、全息策略沙盘、账簿和控制台。

⚠️ 风险提示:量化策略不保证盈利。网格策略在单边下跌时会持续买入被套;补仓(马丁)策略越跌仓位越大,合约还有爆仓风险。请先用模拟盘跑,确认理解后再用小额资金实盘。本项目不构成投资建议。


一、准备工作(只需做一次)

  1. Windows 10/11 安装 Docker Desktop 下载:https://www.docker.com/products/docker-desktop/ ,安装时勾选 Use WSL 2。安装后打开 Docker Desktop,等左下角显示 Engine running。
  2. 网络 Docker 镜像和 Bitget 接口在中国大陆可能无法直接访问。最简单的办法是让代理软件开启 TUN / 全局模式。也可以只给驾驶舱设置代理:在 .env 里填 BITGET_PROXY=http://host.docker.internal:7890(端口改成你代理软件的端口)。

二、启动

  1. 双击 start.bat。第一次运行会下载 OctoBot 镜像、安装 OctoBot 插件并构建驾驶舱,需要几分钟。OctoBot 固定为 2.1.1 版本(3.0 改成了节点模式,驾驶舱读不到数据)。
  2. 浏览器会自动打开两个页面:
  3. 在 OctoBot 还没配置好之前,驾驶舱显示 演示数据(顶部有黄色提示条),可以先熟悉界面。

停止:双击 stop.bat。查看日志:双击 logs.bat。update.bat 会重新拉取 docker-compose.yml 中固定的 OctoBot 版本。

只想先看界面?直接用浏览器打开 web/index.html,会进入演示模式(不需要 Docker)。

三、在 OctoBot 里连接 Bitget 并选择策略

1. 创建 Bitget API 密钥(给 OctoBot 用)

Bitget 网站 → 头像 → API 管理 → 创建 API:

  • 权限:勾选 读取 和 交易(现货/合约按需),不要勾选提现。
  • 设置一个 Passphrase(API 密码),记住它。
  • 可以绑定 IP 白名单。家庭宽带 IP 会变,绑定后需要定期更新。

2. 在 OctoBot 中填入密钥

打开 http://localhost:5001。首次进入按引导完成欢迎页,然后: Accounts(账户)→ Exchanges(交易所)→ 添加 bitget → 填入 API Key、Secret、Password(即 Passphrase)→ 保存。

3. 选择 ASTRA 预设策略

推荐在驾驶舱里选:右上角 ⚙ 设置 → 策略 · 手动切换,点开一个策略再点“切换”,OctoBot 会自动重启(1–3 分钟)。也可以在 OctoBot 顶部 Profile(配置) 里选。

所有预设都是 Bitget 现货、默认模拟盘(OctoBot 的虚拟资金,在 Bitget 真实行情上模拟成交,不会动你的钱):

策略 做什么 适合
现货网格 BTC/USDT 当前价上下各 8 档,间隔 400 USDT(约 0.5%),成交后在相邻价位挂反向单 震荡
移动网格 同上,价格突破上沿后网格整体上移 震荡、慢涨
阶梯挂单 60000–100000 区间按 1.5% 比例间距挂单 长期宽幅震荡
分批补仓 每 4 小时开一轮:首单 4% 资金,每跌 1.5% 补一单(6%,共 3 单),均价上方 1.2% 止盈,下方 6% 止损 震荡偏弱
智能补仓 4 小时 EMA 超跌才买,每次 5%、最多 3 档,小反弹分批止盈 上涨中的回调
趋势指标 1h/4h/1d 双均线 + RSI 顺势买卖,带止损 明确趋势
抄底分析 识别急跌低点加权买入,涨 4–10% 分 3 批卖(无止损) 剧烈波动
反转信号 布林带 + Klinger 找反转点高抛低吸,带止损 平稳震荡
指数持仓 BTC 50% / ETH 30% / SOL 20%,偏离 5% 再平衡 长期持有
AI 信号 DeepSeek 每小时读 K 线给看涨/看跌信号,看涨时分批买入、2% 止盈 需要 LLM Key
AI 仓位 OctoBot AI Trading:多个 AI 智能体综合指标、新闻、情绪决定 BTC/ETH/SOL/USDT 比例 暂停使用:新闻/市值数据源返回 401,完整调仓未通过测试
观望 不下新单,只看行情 下跌、剧烈波动时暂停
合约分批补仓 OctoBot 的 Bitget 插件不支持合约(模拟盘、实盘都不行),列表里显示为不可用;补仓逻辑可用“分批补仓”验证 —
  • 调整参数:OctoBot → 当前 Profile → Trading mode 设置(网格间距、档数、补仓比例等)。
  • 想要 ETH 等其他币:在 Profile 的币种设置里添加交易对,并在网格设置里加上对应参数。

交易方案、自动选策略和止损

驾驶舱 ⚙ 设置 → 交易方案 有四种方案,每种都能单独设置 最大止损 %:

方案 说明
手动 自己在策略列表里挑,不自动切换
AI 交易 运行“AI 信号”或“AI 仓位”策略
AI 选策略 每 30 分钟让 DeepSeek 分析 BTC 行情(震荡 / 上涨 / 下跌 / 剧烈波动)并挑选策略;连续 2 次判断一致、置信度 ≥ 50% 才切换
指标选策略 每 10 分钟用 ADX、ATR、均线斜率、布林带宽度判断行情并映射到策略;连续 3 次一致才切换。不需要 Key
  • 自动切换只在 模拟盘 下工作,每个策略至少运行 12 小时才会被换掉(.env 中可调)。
  • 首次使用向导:第一次打开时一步步检查连接、选策略(默认推荐现货网格)、设止损、配置通知,确认后才在模拟盘启动;简洁首页可随时重开。
  • 简洁首页(默认):一个数字看资产,一句话看状态(在干什么、为什么、下一步),体检指示灯,以及“停止并卖出全部”按钮。右上角可切回“专业”驾驶舱。
  • 每日报告:每天北京时间 21:00(.env 里 DAILY_REPORT_HOUR,off 关闭)推送资产、今日盈亏、和持有 BTC 的对比、成交笔数、止损距离和体检问题。需要先配置通知渠道。
  • 系统体检与诊断包:设置里的“系统体检”逐项检查 OctoBot、Bitget 行情、交易模式、止损、模拟手续费、AI、通知和数据目录,异常项给出处理办法;“导出诊断包”下载运行状态和最近日志,不含任何密钥(只记录是否已填写,导出前还会把所有已配置的密钥值替换成 ***)。接口:/api/health/report、/api/diagnostics。
  • 三条止损线(每个方案单独设置,0 = 关闭):最大止损(从方案启动时的资金算起)、回撤止损(从运行期间最高资金算起,保护利润)、单日亏损上限(从当天北京时间第一笔资金算起)。最高的那条最先触发,驾驶舱会标出来。
  • 止损:从“启动方案时的资金”算起,亏损达到设定比例(连续约 9 秒确认)时,OctoBot 先 撤销所有挂单、全部卖成 USDT,驾驶舱从 OctoBot 的持仓表核实只剩 USDT 后再 暂停交易,并把配置改为“观望”,之后重启也不会恢复交易;没卖干净会明确提示“止损未完全执行”。OctoBot 重启后模拟资金被重置(离线前后相差超过 5%)会被识别为重置而不是亏损,止损起点随之调整。重新启动方案或手动选择策略后恢复。OctoBot 内部同时设置了一条同样动作的自动化作为备用(驾驶舱或桥接服务停止时也生效,从 OctoBot 本次启动算起)。
  • AI 功能:在 .env 填 LLM_API_KEY(DeepSeek 的 Key,https://platform.deepseek.com ),LLM_MODEL 默认使用 deepseek-flash,然后重新运行 start.bat。同一个 Key 同时给 OctoBot 的 AI 策略和驾驶舱的 AI 行情判断使用;AI 信号预设继承这个模型设置。Key 只保存在你本机的 .env。LLM_DAILY_TOKEN_LIMIT 可以限制 OctoBot 每天的用量。

2026-10-25 的真实行情模拟盘观察已完成 30 分钟,结果见 测试报告。这不是每个策略各跑 30 分钟,也不能证明胜率或持续盈利。启动时会自动应用固定版本 OctoBot 的 DeepSeek JSON 输出适配、跨策略模拟持币清算修复,并同步已安装插件的版本信息,避免把导入预设误判成插件过期。不要单独复制 octobot/ 目录运行,应从项目根目录启动。

4. 从模拟盘切换到实盘

OctoBot → Profile 页面 → 交易设置中关闭 Trader simulator(模拟交易),打开 Trader(实盘交易)→ 保存并重启。不同版本的菜单位置可能略有不同,认准这两个开关即可。 切换后驾驶舱顶部会变成红色的 实盘 LIVE 标记。

四、驾驶舱说明

区域 说明
3D 主视觉 两种风格,在右上角 ⚙ 设置(个人设置页)里切换(选择会记住):
时间光环 360°(默认):最近 72 根 1 分钟 K 线绕成一圈,角度是时间、高度是价格,缺口处是“现在”;挂单和压力/支撑是套在外面的圆环,最新 K 线上方以全息字样显示实时价格。可以从任何角度旋转查看。
全息 K 线台:传统横向 K 线立在桌面上,挂单是贯穿图表的激光面,适合正面细看。
镜头模式 自动环绕:光环顺时针缓慢转动(从上往下看),正面走势从左往右、新 K 线从右侧进入;可拖动到任意角度、滚轮缩放、双击复位。
跟随现价居中:光环停止自转,镜头以接近平视的角度正对整个光环,最新 K 线固定在画面正中、上方以全息字样显示实时价格,镜头高度随价格上下跟随;时间从左往右。拖动可以临时转开,松手 2 秒后自动回正;再点一次该按钮会立即回正。两种风格都支持。
全息 K 线台的镜头 镜头选项显示为“自动环绕 / 居中显示”。居中显示:镜头放平、正面居中显示整张图表,不再摇摆;选中后旁边出现 跟随现价 开关,打开后镜头跟随最新 K 线和实时价格移动。
个人设置 右上角 ⚙ 设置 打开侧边设置页:主视觉风格、镜头模式、跟随现价开关、指标开关(MA7 / MA25 / MA99、布林带(20, 2)、压力 / 支撑、网格挂单)。设置保存在本机浏览器,按 Esc 或点空白处关闭。
仓位与风险(3D 左下角) 未实现盈亏、持仓数、买/卖挂单数、距强平距离、持仓价值,以及现价在网格区间里的位置。
成交动态(3D 右下角) 近 1 小时成交额、买入/卖出笔数和均价、买卖成交额占比,以及最近 3 笔成交。
总权益 实盘且配置了只读密钥时,来自 Bitget 账户;模拟盘时,按 OctoBot 的虚拟资金和成交记录计算。
概率栅格 每个小球是一笔已平仓交易,按收益率落进格子。看胜率的同时也要看亏损落在哪里。
市场脉搏 订单簿深度、实时价格、你的挂单线、成交点和已实现盈亏。
策略沙盘 一张 0° 平视、固定正面的全息流程图(自动缩放到合适大小),从左往右五站:在哪交易(Bitget)→ 谁在执行(OctoBot)→ 用什么方法(现货 / 合约策略)→ 交易什么(交易对)→ 结果如何(挂单买卖数、持仓或近 1 小时成交)。连线越粗,投入的资金越多;光点流动表示正在运行,某一站断开时连线变成红色虚线、光点停止。每有一笔新成交,一颗蓝色(买)或橙色(卖)光球会沿流程跑到结果站,并显示成交价。点击任意站点,右侧显示详情(结果站会列出离现价最近的买单和卖单)。
账簿 / 控制台 挂单、持仓、成交明细,以及系统事件日志。
紧急停止 右上角红色按钮(.env 中 ENABLE_CONTROLS=true 时显示)。输入“确认”后,让 OctoBot 撤销全部挂单并停止运行。已有持仓不会自动平仓,需要你去 Bitget 处理。

OctoBot 短暂断开(重启、切换策略)时,驾驶舱保留断开前的最后数据并提示“OctoBot 重连中”,超过 15 分钟才回到演示数据。

顶部状态:演示 DEMO(未连接 OctoBot)、模拟盘 PAPER、实盘 LIVE、待机 IDLE(已连接但还没有订单)、只读 WATCH(只连了 Bitget 账户)。

回测与持仓交接

  • 回测:python tools/fetch_history.py --days 730 BTCUSDT ETHUSDT SOLUSDT 下载 Bitget 历史 K 线(国内网络可加 --proxy http://127.0.0.1:7890),然后运行 python tools/run_backtest.py(可加 --fee 0.002 做高手续费压力测试)。成交规则偏保守,包含手续费和滑点,并与持有 BTC 对比。最新结论见 docs/BACKTEST_2026-10-26.md:两年里只有网格接近持有 BTC 的收益且回撤小得多;自动选策略方案回测亏损,界面上标为实验功能。驾驶舱的策略卡片会显示每个策略的回测结果。
  • 持仓交接:设置页“切换策略时的持币”,默认切到“观望”时先卖出全部持币,核实只剩 USDT 后再切换,真正做到空仓;也可以改为保留持币,或每次切换都清仓。

安全与通知

  • 驾驶舱和 OctoBot 只监听本机 127.0.0.1。驾驶舱会拒绝其他网页发来的跨站请求和改写主机名(DNS 重绑定)的请求。
  • 建议给 OctoBot 网页设置密码(OctoBot → Accounts → Interfaces → Web),并在 .env 填同一个 OCTOBOT_PASSWORD,驾驶舱会自动登录。否则其他网页理论上可以通过 OctoBot 的 GET 接口让它停机或切换策略。
  • 手机通知:在 .env 填 Telegram(NOTIFY_TELEGRAM_TOKEN、NOTIFY_TELEGRAM_CHAT_ID)或 Webhook(NOTIFY_WEBHOOK_URL,NOTIFY_WEBHOOK_TYPE 可选 wecom / feishu / dingtalk / serverchan)。止损触发与核实结果、方案启动、策略切换、OctoBot 计划外离线超过 2 分钟、AI 失败都会推送。设置页有“发送测试通知”。
  • 审计日志:所有操作和事件保存在 data/logs/astra-日期.jsonl,保留 30 天。

可选:给驾驶舱配置 Bitget 只读密钥

在 Bitget 再创建一个只有读取权限的 API,填入 .env 的 BITGET_API_KEY / SECRET / PASSPHRASE,然后重新运行 start.bat。配置后,实盘时总权益直接取自 Bitget 账户余额。

五、常见问题

  • start.bat 提示启动失败 / 一直下载不动:通常是网络问题。打开代理的 TUN 或全局模式;或者在 Docker Desktop → Settings → Resources → Proxies 里设置代理,并在 .env 中把 PIP_INDEX_URL 改为 https://pypi.tuna.tsinghua.edu.cn/simple。
  • 驾驶舱 3D 区域显示“等待行情数据”:桥接服务连不上 Bitget。在 .env 设置 BITGET_PROXY 后重新运行 start.bat。
  • 一直显示“演示数据”:OctoBot 还没启动完成(第一次启动要安装插件,需要 1–3 分钟),或者在 OctoBot 中设置了登录密码。驾驶舱读取需要 OctoBot 网页不设密码。端口只绑定本机,外部访问不到。
  • OctoBot 页面打不开:运行 logs.bat 查看 astra-octobot 的日志。
  • OctoBot 一直重启,日志里有 KeyError: 'default':插件没装上。运行 docker compose run --rm --no-deps octobot tentacles --install --all 后再 start.bat(新版 start.bat 首次运行会自动执行)。
  • 电脑休眠或重启后 OctoBot 页面打不开(容器显示 unhealthy):Docker 启动时网络还没就绪,OctoBot 连不上交易所后卡住。运行 docker compose restart octobot 即可。
  • 切换策略提示“新加入的策略需要先重启一次 OctoBot”:OctoBot 只在启动时读取策略列表,运行 docker compose restart octobot 后再切换。
  • 电脑重启后 Docker Desktop 打不开或启动即退出:错误窗口或日志里有 initializing Secrets Engine ... docker-secrets-engine\engine.sock ... cannot be accessed。先点 Quit(不要点 Reset to factory defaults,会清空所有容器和数据)。这是关机时留下的 socket 文件,Windows 删不掉,在 PowerShell 运行 wsl -d Ubuntu-24.04 -- rm -f /mnt/c/Users/<你的用户名>/AppData/Local/docker-secrets-engine/engine.sock(发行版名称以 wsl -l 为准),再打开 Docker Desktop。
  • OctoBot 卡住不响应:容器里的看门狗会在 OctoBot 连续 10 分钟无响应后自动重启它(首次启动有 15 分钟宽限),一般不需要手动处理;急用时可运行 docker compose restart octobot。
  • 端口被占用:驾驶舱端口在 .env 里设 COCKPIT_PORT=8081(或其他空闲端口),然后用 http://localhost:8081 打开;OctoBot 的 5001 端口在 docker-compose.yml 里改。

六、项目结构

astra-quant/
├─ start.bat / stop.bat / logs.bat / update.bat   Windows 一键脚本
├─ docker-compose.yml                             OctoBot + 桥接服务
├─ .env.example                                   配置模板
├─ bridge/                                        桥接服务(Python · Starlette · ccxt)
│  └─ app/  main.py  state.py  autopilot.py(方案/自动切换/止损)  regime.py(指标行情)  llm.py(AI 行情)
│           strategies.py  octobot_client.py  bitget_client.py  config.py
├─ web/                                           驾驶舱前端(three.js r128,无需构建)
│  ├─ index.html  css/astra.css
│  └─ js/  halo.js(时间光环)  tower.js(全息 K 线台)  indicators.js  lattice.js  pulse.js  graph.js(全息沙盘)  panels.js  strategy.js(设置页方案/策略)  demo.js  feed.js
└─ octobot/user/profiles/                         ASTRA 预设策略
   └─ astra_*/(13 个预设:网格、补仓、指标、AI、观望等)

桥接服务接口:GET /api/state(完整状态 JSON)、WS /ws(每秒推送)、POST /api/focus、POST /api/control/cancel-all、POST /api/control/stop-bot、POST /api/strategy/select|scheme|stoploss|ai-refresh(策略与方案,仅模拟盘)。

七、许可说明

  • OctoBot:GPL-3.0,官方 Docker 镜像以独立服务运行。
  • three.js:MIT。字体 Instrument Serif、JetBrains Mono:SIL OFL 1.1(见 web/fonts/)。

八、指标怎么算

  • 均线:最近 7 / 25 / 99 根 1 分钟 K 线收盘价的简单平均。
  • 布林带:20 根均线 ± 2 倍标准差。
  • 压力 / 支撑:找出最近 200 根 K 线里的摆动高点和低点(比左右各 3 根都高或都低),把价格相近(0.18% 以内)的合并成一个价位,触碰次数越多越强。现价上方取最强的 2 个作为压力 R1、R2,下方取 2 个作为支撑 S1、S2,标签里的 ×N 是触碰次数。

这些指标只是辅助观察,不会影响 OctoBot 的下单逻辑。

About

一款科幻风ui,专注加密货币量化交易

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages