PyCryptoBot / 项目研究站
PyCryptoBot:一个没有 PyPI 包、主线停在 2024 年的加密货币交易机器人
PyCryptoBot 是一个用 Python 写的加密货币自动交易机器人,Apache-2.0 许可,仓库有 2056 Star、719 Fork。它的定位不是「帮你赚钱」,而是把你自己定好的交易规则,变成一台能 7×24 小时、按周期、按信号反复执行的程序——回测、模拟、实盘三种模式共用同一套策略代码。
但上手之前有三件事必须先说清楚,因为它们会直接改变你的操作步骤:① 它没有 PyPI 包,pip install 这条路不存在,只能 git clone 或跑容器;② 默认分支 main 的最后一个提交是 2024-03-04,最新发行版 8.2.4 也是同一天;③ beta 分支上有一条 2025-05-26 的修复,至今没有合并进 main。
本站用仓库源码、配置文件样本与公开接口做逐项核对,把「你现在拿到的是哪一版、装不装得上、信号到底怎么定、回测能信到什么程度」讲清楚。所有结论文末都标了验证环境,不做任何收益声明。
- PyCryptoBot v8.2.4(main=1fa9aaef,2024-03-04)
- Python 3.11(官方 Dockerfile 基线)
- 交易所范围:Binance / Coinbase / KuCoin
- 验证日期 2026-09-21
- 本站未实机运行机器人
项目来源
whittlem/pycryptobot(GitHub 仓库首页截图)
打开仓库 ↗
现在 clone 到的是哪一年的代码?
README 给的升级方式是「git checkout main 然后 git pull」。所以问题变成:main 上到底停在哪一天。下面这张表把几个容易混淆的时间点分开列。
| 观测项 | 具体值 | 依据 | 注意点 |
|---|---|---|---|
main 分支最后提交 | 1fa9aaef,2024-03-04 | GitHub Commits API | README 让你取的就是这一版,它是「你能拿到的官方主线代码」 |
| 最新发行版 | 8.2.4,2024-03-04 | GitHub Releases / Tags API | 与 main 同日,没有比它更新的发行版 |
| CHANGELOG 最后一条 | [8.2.0] - 2023-04 | CHANGELOG.md | 8.2.1 到 8.2.4 有 Release,但 CHANGELOG 没补条目,别用它判断最新版本 |
beta 分支最后提交 | f5319e42,2025-05-26 | GitHub Commits API | 比 main 新 14 个月,内容是「取回账户内全部钱包」的修复,未合并 |
| 全部分支数 | 18 个(含 dependabot/pip/requests-2.33.0、coinbase/advanced_trade_api、hotfix/coinbase) | GitHub Branches API | 说明依赖升级与 Coinbase 相关修复都处在未合并状态 |
仓库 pushed_at | 2026-03-26 | GitHub API | 该时间戳来自其它分支的活动,不代表 main 有更新——只看它会得出错误结论 |
| PyPI 上的包 | pycryptobot / pycryptobot-api / pycryptobotlib / py-crypto-bot 四个候选名全部 404 | PyPI JSON API 探测 | 结论限定为「这四个名字不存在」,不排除其它名字;但没有官方包就没有 pip install 路径 |
它能做什么,以及它明确不做什么
避免误解的最好办法是把两栏并排看。左边是代码里真实存在的功能,右边是它没有承担的职责。
| 维度 | 它能做什么 | 它不做什么 | 注意点 |
|---|---|---|---|
| 交易执行 | 按配置好的周期轮询行情,命中信号时用市价单买入或卖出 | 不预测市场,不提供「必胜策略」,也不保证盈利 | 官方 DISCLAIMER.md 明确写明「crypto trading is a risky business」,并以 as-is 提供、不作任何担保 |
| 运行方式 | 常驻进程,按 granularity 指定的周期反复评估 | 不做跨市场套利、不做做空(现货逻辑为主) | 杠杆相关开关在 scanner 配置里(enableleverage),默认关闭 |
| 回测与模拟 | 提供模拟运行与结果统计,可导出交易历史 | 不提供独立的向量化回测引擎 | 模拟结果不能当作未来收益预期,见回测与成本口径 |
| 市场范围 | Binance、Coinbase、KuCoin 三家现货(另有 dummy 假交易所用于测试) | 不支持 A 股、港股、美股,也不支持链上 DEX | 「支持」要分维度看,见交易所支持矩阵 |
| 配置方式 | 一份 config.json 控制币对、周期、策略开关与风控阈值 | 没有图形化安装向导,也没有官方云托管 | 同一个文件里两处 granularity 写法不一致,是真实易踩点 |
| 通知与遥控 | Telegram 机器人可查状态、手动买卖、启停;另有 Web GUI 与 Web Portal | 不提供短信、邮件或原生 App 推送 | 要自己申请 Bot Token 并绑定自己的 user_id |
| 策略扩展 | 可写自定义策略与自定义指标文件,升级时不被覆盖 | 没有策略市场,也没有官方策略考核 | 自定义文件的加载优先级是设计机制,详见策略信号 |
| 成本核算 | 手续费率从交易所接口读取,卖出时可用对应费率 | 仓库中没有滑点参数,也没有点差与最小下单量的显式配置项 | 这是回测可信度最关键的一环,务必自己补成本假设 |
它解决的是「纪律」问题
人不睡觉,但人会犹豫。机器的价值在于把已经写清楚的规则不折不扣地重复执行,而不是替你想出更好的规则。规则本身好不好,仍然取决于你。
它把风险留给你
风控开关确实很多(止损、移动止损、防亏损、防卖飞等),但开关的阈值要你自己定。设成什么样,决定了回撤是 5% 还是 50%。
它需要你懂一点运维
没有托管服务,意味着进程守护、日志轮转、断线重连、密钥保管都得自己安排。这部分常被入门教程略过,本站单列了运维与安全。
四种落地方式怎么选?从本地脚本到 K8s
既然没有 pip install,那么「怎么跑起来」就变成了选型问题。下面四张卡先给出取舍,表格再逐项对照。
本地 clone
克隆仓库、建虚拟环境、按 requirements.txt 安装依赖,然后直接跑 pycryptobot.py。最灵活,但环境要自己收拾干净,且三个钉死的依赖在 Python 3.11 上没有预编译轮子。
Docker 镜像
官方提供容器镜像,Dockerfile 是 multi-stage 构建,编译阶段装 build-essential,运行阶段以非 root 用户(UID 1000)执行。把编译麻烦留给镜像,是省事的一条路。
docker-compose
仓库自带 docker-compose.yaml,把 config.json、日志与图表目录挂载进去,并设置 restart_policy: on-failure。适合一台机器跑单个币对。
Helm chart
仓库里带 chart/ 目录,含 deployment、secret、configmap、serviceaccount 模板。已经用 K8s 的团队可以直接套;否则没必要为此上集群。
| 对照项 | 本地 clone | Docker / compose | Helm chart |
|---|---|---|---|
| 依赖编译 | 要自己解决;三个钉死依赖在 Python 3.11 上无 cp311 轮子 | 镜像内已完成编译 | 同 Docker |
| Python 版本 | 由你决定,但官方只以 3.11.4 为基线 | 固定为镜像内的 3.11.4 | 同 Docker |
| 运行身份 | 随你的登录用户,通常是 root 或管理员 | 非 root,UID/GID 1000 | 由 serviceaccount 决定 |
| 配置注入 | 直接编辑工作目录下的 config.json | 挂载宿主机文件到容器内 | 通过 configmap 与 secret |
| 进程守护 | 要自己写 systemd 或计划任务 | compose 的 restart_policy 兜底 | 由 Deployment 保证 |
| 适用场景 | 调试策略、改代码、看日志最直接 | 长期跑单个或少数币对,最平衡 | 已有集群、需要多实例编排 |
| 主要注意点 | 环境容易脏,换机难复现 | 要理解挂载路径与容器时区 | 学习成本明显高于收益,除非已有集群 |
信号不是「四个指标」,而是一组方法加一套点数制
网上不少文章把 PyCryptoBot 的描述成「四个指标一起判断就买入」。看源码会得到更准确的画面:策略是一个有明确方法清单的类,另有一套独立的点数制自定义策略。
七个方法构成策略面
models/Strategy.py 对外的方法依次是 is_buy_signal、is_sell_signal、is_sell_trigger、is_wait_trigger、check_trailing_buy、check_trailing_sell、get_action。买与卖是分开判断的,超时等待与移动止损也各自有方法。
点数制自定义策略
Strategy_CS.py 用的是「点数制」:一组信号各自投票,累计到阈值才动作。它不等于官方标准策略,而是给愿意调参的人准备的另一套入口。
你的改动不会被升级覆盖
如果创建 models/Strategy_myCS.py,导入时会优先使用你的版本,只有导入失败才回落到官方文件。这是刻意设计的升级安全机制,值得好好用。
| 配置分组 | 代表开关 | 它管什么 | 注意点 |
|---|---|---|---|
| 买入过滤(约 8 项) | disablebullonly、disablebuynearhigh、disablebuymacd、disablebuyobv、disablebuyelderray、disablefailsafefibonaccilow、disableprofitbankreversal(进阶样本另有 disablebuyema) | 控制买入前要过几道条件 | 开关的语义是「禁用该条件」,注意是「disable」而不是「enable」 |
| 卖出与风控(约 11 项) | sellatloss、sellatresistance、trailingstoploss、trailingstoplosstrigger、nosellmaxpcnt、nosellminpcnt,进阶样本另有 dynamictsl、tsl*、trailingsell*、preventloss*、selllowerpcnt | 决定什么时候认亏、什么时候锁定利润 | 卖出侧维度比买入侧多——风控是这套机器人真正的主战场 |
| 仓位与规模(约 3 项) | buymaxsize、buyminsize,进阶样本另有 buylastsellsize、trailingbuypcnt | 限制单笔投入的上限与下限 | 与交易所的最小下单量、精度规则配合不当会直接下单失败 |
| 模式与输出 | live、websocket、autorestart、graphs、stats、use_sell_fee | 决定实盘还是模拟、是否开推送、是否出图与统计 | live 是 0/1 开关;把它当布尔值看,不要留空 |
| 时间周期 | granularity:固定 7 档(1m / 5m / 15m / 30m / 1h / 6h / 1d) | 决定机器人多久评估一次 | 周期枚举是封闭集合,写别的字符串会报 Invalid Granularity |
| 写法不一致的坑 | 官方样本里 binance 写 "1hour",而 coinbase 与 coinbasepro 写 "3600" | 同一个字段两套写法 | 照抄样本时若把两种写法混用,容易配出意料之外的周期 |
按你的实际情况选路线,而不是按功能多少
下面三条路线的前置条件完全不同。先确认条件、再选工具,比先选工具再补条件省时间。
| 你的情况 | 建议路线 | 理由 | 第一件该做的事 |
|---|---|---|---|
| 会 Python,也愿意管进程与日志 | 本地 clone 或 compose 自建 | 机器人本身不复杂,难点在长期维护而不是启动一次 | 先读版本与分支现状,确认要取哪个分支 |
| 只想先看看它跑起来什么样 | Docker 路线,live 保持 0 | 把编译与环境问题交给镜像,先用模拟模式观察行为 | 准备一份最小 config.json,只配一个币对 |
| 目标是「拿到某个币的区间指标」 | 先用技能路线把数据拿到手 | 只为看一个指标而部署一台常驻机器人,成本明显不划算 | 看实盘运维与安全 |
| 想验证一套自己的规则是否可行 | clone 后用模拟模式反复跑 | 模拟模式可以低成本暴露规则本身的漏洞 | 把成本假设(手续费、滑点)先写下来 |
| 打算直接上实盘 | 先不要 | 仓库中没有滑点参数,回测与实盘之间的差距需要你自己量化 | 读实盘运维与安全的检查清单 |
| 需要跨市场编排多实例 | Helm chart | 仓库已提供 chart 目录;但只有已有集群时才值得 | 确认 secret 注入方式与镜像拉取权限 |
| 完全不想碰服务器 | 技能路线或其它托管产品 | 本项目没有官方托管,长期运行必须有人看着 | 明确「谁来负责半夜的三点挂掉」这件事 |
适合:想把纪律外包给机器的人
你的规则已经写得出来,缺的只是执行力。PyCryptoBot 的价值在于不知疲倦地重复,并且把每次动作记进日志与通知。你愿意花一两个小时把配置与运维补齐。
适合:能接受「先亏损也是结果」的人
模拟和实盘都会出现连续亏损与长时间空仓。如果这两件事会让你推翻规则,那么问题不在机器人,而在规则本身还没有被验证过。
不适合:想要收益承诺的人
它是执行工具,不是收益来源。官方免责声明明确写了加密交易有风险并以 as-is 提供;本站同样不做任何收益声明。任何把它的案例收益当作普遍结论的读法都是错的。
不适合:目标市场是 A 股的人
它只面向 Binance、Coinbase、KuCoin 的加密货币现货。A 股的行情、交易规则与结算方式都不同,这条路走不通,需要换别的工具组合。
如果只想拿数据而不想部署机器人,交互是什么样
下面这张是本机 EasyClaw 的实际对话截图——一句话取比特币近 30 天日线并计算区间指标。它展示的是「技能路线」的操作形态:不用建项目、不用管进程、不用配密钥。
关于 PyCryptoBot 的高频问题
以下回答基于 2026-09-21 的源码与公开接口核对;涉及代码行为的部分以官方仓库实现为准。本站未实机运行机器人,也不做收益声明。
PyCryptoBot 现在还能用吗?
能核对到的事实是:仓库未归档,许可为 Apache-2.0,main 分支与最新发行版 8.2.4 都停在 2024-03-04,beta 分支上有 2025-05-26 的提交尚未合并。这三条合起来说明「代码可用、但主线不再前进」。能不能用在你身上,取决于你的交易所是否仍在这三个之内、以及你能否接受一套 2024 年的依赖钉子。本站不替官方判断项目是否「还活跃」,也不写「已停止维护」这类结论。
为什么不能 pip install?
因为 PyPI 上不存在对应的包:我们探测的 pycryptobot、pycryptobot-api、pycryptobotlib、py-crypto-bot 四个名字全部返回 404。仓库里也没有 setup.py 或 pyproject.toml 这类打包元数据。所以安装只有两条路:git clone 仓库,或者使用官方提供的容器镜像。结论限定为「这四个名字不存在」,不排除其它名字,但在没有官方包的情况下,任何教程里的 pip install 都值得怀疑。
我该 clone 哪个分支?
README 给的是 main。如果你需要那个 2025 年的钱包修复,就得看 beta;但要注意它是 beta,未经发行验证。稳妥做法是:先按 README 取 main 跑通,确认问题确实出在那条修复上,再切到 beta。切之前先把 main 的 commit 记下来,方便回退。
Docker 和裸机,哪个更省事?
如果你只是想让它跑起来,Docker 更省事:官方镜像是 multi-stage 构建,编译阶段装了 build-essential,运行阶段以非 root 用户(UID 1000)执行,还设置了 matplotlib 的配置目录。而裸机安装要自己解决三个在 Python 3.11 上没有预编译轮子的钉死依赖(matplotlib==3.3.3、pyyaml==5.3.1、websockets==9.1)。反过来说,如果你要改代码、加自定义策略,裸机 clone 更方便,因为镜像里改完还要重新构建。
它支持哪些交易所?
交易所枚举里一共 5 个值:coinbase、coinbasepro、binance、kucoin,以及测试用的 dummy。但「支持」必须分维度说——行情取数、回测模拟、实盘下单在代码里由不同模块承担,不存在一个「全支持」的复选框。本站的矩阵页是按各交易所 api.py 的方法覆盖推导出来的,并已标明这是源码推导而非交易所官方口径。另外提醒:枚举名沿用 coinbasepro,但配置样本里它的 api_url 指向的是 api.exchange.coinbase.com。
跑起来就能赚钱吗?
不能这样理解。它是一台执行器:把你写清楚的规则不折不扣地重复执行,并记录下来。规则本身能不能盈利,取决于市场与你对成本、仓位、风控的判断。另外有三处需要你自己补齐的东西——仓库里没有滑点参数,手续费率虽然可以从交易所接口读,但离线评估时拿不到,最小下单量与精度规则也要和交易规则配合。这些都会改变「看起来盈利」与「实际盈利」之间的距离。官方免责声明明确写明加密交易有风险,软件以 as-is 提供、不作任何担保。
我该用它,还是先用技能盘把数据看一遍?
看你的下一步要交付什么。如果近期目标只是「搞清楚某个币现在什么情况」,用技能路线取数与算指标更快,成本也低得多;如果近期目标是「让一套规则 7×24 自动执行」,那就必须走机器人路线,并且要准备好承担运维。两者不冲突,常见做法是先用技能路线做探索,确认值得投入后再把规则写进机器人配置。需要提醒的是:本机技能目录里没有任何加密货币交易机器人技能,所以技能路线在「持续下单」这件事上没有对应能力。