跳转到主要内容
LFG.RICH Community Trading Bot 是一个用于 BNB Smart Chain 的 Python 交易机器人示例,通过官方 LFG.RICH 协议合约交易 官方 LFG.RICH 发射台代币

自托管

在你自己的机器或 VPS 上运行机器人,并使用自己的钱包和配置。

支持 V5 流程

机器人会解析 Hook/Router 上下文,并使用官方 V5 交互流程。

仪表盘

本地查看仓位、lots、交易、已实现/未实现 PnL 和策略状态。

先 dry run

允许真实交易前,先使用 dry_run 和 smoke tests。
此版本仅兼容 LFG.RICH
  • 通过 LFG.RICH Swap Router 买入;
  • 通过 LFG.RICH Swap Router 卖出;
  • 根据 LFG.RICH Uniswap V4 Hook 的 BuySell 事件构建 K 线;
  • 使用 LFG.RICH Uniswap V4 Hook 获取价格和报价估算;
  • 不使用 PancakeSwap V2;
  • 不使用 PancakeSwap V3;
  • 不执行 borrow、borrow more 或 repay。
这是社区交易软件。请使用专用钱包,从小金额开始,并在使用真实资金前充分测试。

机器人如何工作

机器人从 config.yaml 监控一个或多个 LFG.RICH 代币。 对于每个配置的代币,它会:
1

通过 Hook 解析代币池

机器人使用 V5 pool 上下文,而不是猜测旧 pair 或 pool。
2

扫描 Hook 的 Buy 和 Sell 事件

事件数据用于构建本地市场历史。
3

构建内部价格 K 线

K 线用于策略指标和仪表盘。
4

计算策略指标

本地评估 EMA、RSI、趋势、pump、dump 和 bleed 条件。
5

判断 BUY、SELL 或 HOLD

策略根据配置规则和当前状态做出决定。
6

未启用 dry_run 时通过 Swap Router 执行

实盘交易使用官方 LFG.RICH Swap Router。
7

将交易和 lots 写入 SQLite

已确认成交会被持久化,用于会计、仪表盘和之后卖出。
机器人必须解析并使用代币的 LFG.RICH 池数据。它不应该假设存在传统 pair 地址或 PancakeSwap 风格的池。

环境要求

测试环境

机器人已在以下环境测试:
新用户推荐使用:
机器人包中包含的固定依赖版本仍然支持 Python 3.8。 不要使用 Python 2 运行机器人。如果看到类似路径:
说明你正在使用错误的 Python 版本。

必需系统组件

机器人需要:
  • Python 3;
  • Python virtual environment 支持;
  • pip
  • SQLite;
  • 支持 eth_getLogs 的 BNB Smart Chain RPC 端点;
  • 用于真实交易的钱包私钥。

Python 依赖

运行依赖固定在:
仪表盘依赖单独固定在:
重要兼容性说明:
  • 故意不使用 aiohappyeyeballs==2.6.1,因为它不兼容 Python 3.8。
  • 使用 streamlit==1.40.1,因为测试的 Python 3.8 环境无法安装 1.40.2
  • 仪表盘使用 use_container_width=True,不是较新的 Streamlit width="stretch" 语法。
  • 代码在需要的地方包含 Python 3.8 兼容修复。

Linux / VPS 安装

以下步骤适用于 Ubuntu/Debian 风格服务器。

1. 安装系统包

对于 Python 3.8:
如果服务器使用其他 Python 3 版本,可安装通用 venv 包:

2. 下载或克隆项目

示例:
如果使用 ZIP,请上传/解压后进入项目目录。

3. 创建干净的虚拟环境

终端现在应该显示 (.venv)

4. 升级打包工具

5. 安装机器人依赖

6. 创建本地配置文件

7. 确认环境

预期 which python 应该指向本项目内部:

Windows 安装

Windows 支持本地测试、开发和社区使用。Linux/VPS 更适合 24/7 长期运行。 使用 PowerShell。

1. 安装 Python

从 Python 官方网站安装 Python 3.10 或 3.11。 安装过程中启用:

2. 打开 PowerShell 并进入项目文件夹

示例:

3. 创建并激活虚拟环境

如果 PowerShell 阻止激活,运行:
然后再次激活:

4. 安装依赖

5. 创建本地配置文件

环境配置

在项目根目录创建 .env 文件。 示例:

.env 设置

永远不要把 .env 提交到 GitHub,也不要分享你的私钥。

机器人配置

机器人通过以下文件配置:
先复制示例文件:
默认示例代币是 LFGBULL:
如果你在 LFG.RICH 创建了自己的代币,请替换 watchlist.tokens[] 中的 symbol 和 token address。

LFG.RICH 协议合约

默认配置使用官方 LFG.RICH BSC 合约:
除非 LFG.RICH 官方部署新的协议合约,否则不要更改这些地址。

Smoke test

运行完整机器人前,先运行 smoke test:
Windows PowerShell:
成功的 smoke test 应该输出类似内容:
报价值来自 LFG.RICH Hook。代币数量和 BNB 数量使用 18 位小数。

运行机器人

1. 从 dry-run 模式开始

真实交易前保持启用:
运行机器人:
在 dry-run 模式下,机器人会扫描事件、构建 K 线、计算信号并记录计划交易,但不会发送交易。

2. 测试一次小额真实买入

当 dry-run 日志看起来正常后,使用只存有少量 BNB 的专用钱包。 启用 test mode:
运行:
测试买入成功后,检查仪表盘并确认 lot 已创建。

3. 禁用 test mode 进入正常策略交易

然后运行:

4. 使用 PM2 保持运行

Linux 可选示例:
查看日志:

运行仪表盘

仪表盘是可选的,但有助于查看 open lots、PnL、交易、余额和机器人状态。

1. 安装仪表盘依赖

Windows:

2. 运行仪表盘

从项目根目录运行,不要在 bot/ 文件夹内部运行:
Windows 本地使用:
在浏览器打开:
本地使用:

3. SSH tunnel 选项

如果不想公开暴露 8501 端口:
然后打开:

4. 使用 PM2 保持仪表盘运行

Linux 可选示例:

SQLite 数据库和 lots

机器人使用本地 SQLite 数据库:
它会在机器人运行时自动在项目根目录创建。

仪表盘依赖机器人

仪表盘读取 state.db 仪表盘本身不交易,也不会自己创建仓位。它依赖机器人创建和更新交易、仓位和 lots。 如果机器人还没有确认任何买入交易,仪表盘可能没有 open lots 可显示。

什么是 lots?

lot 是机器人对买入仓位的本地记录。 当机器人确认成功买入交易后,会记录一个 lot,包含:
仪表盘使用 open lots 计算:
  • 当前仓位价值;
  • 未实现 PnL;
  • 卖出后的已实现 PnL;
  • 平均入场价;
  • 每个代币的 open exposure。
对于 LFG 代币,仪表盘按以下优先级为 open lots 定价:
1

使用最新有效 K 线收盘价

当 K 线数据可用时,这是首选当前价格来源。
2

Fallback 到 LFG Hook getEffectivePrice(poolId)

如果 K 线数据不可用,仪表盘会读取协议有效价格。
3

只有两个来源都不可用时才使用零

价格为零表示仪表盘没有找到安全的当前价格来源。

常用 SQLite 命令

除非你明确想重置本地交易历史、lots、冷却时间和 K 线缓存,否则不要删除 state.db

配置参考

本节说明 config.yaml 中的设置。

chain

rpc

lfg

bot 执行设置

bot 风险和交易规模

bot 事件扫描和 K 线

bot 策略设置

bot test mode

watchlist.tokens[]

每个 token entry 定义一个要监控和交易的 LFG.RICH 代币。

排查问题

出现 /usr/lib/python2.7/...SyntaxError

你正在使用 Python 2。 激活 venv 并使用 Python 3:

ModuleNotFoundError: No module named 'web3'

当前环境没有安装依赖:

ensurepip is not available

安装 venv 包:
然后重新创建 venv:

pip: command not found

安装 pip:

No matching distribution found for aiohappyeyeballs==2.6.1

你正在使用来自较新 Python 环境的旧/冻结依赖列表。 请使用 LFG.RICH 机器人包中包含的 requirements.txt

No matching distribution found for streamlit==1.40.2

使用包含以下固定版本的 requirements-dashboard.txt

invalid argument 0: hex string without 0x prefix

请使用最新的 LFG.RICH 机器人包。LFG pool id 和事件 topic 处理已更新,会规范化为带 0x 前缀的值。

仪表盘显示 lot_pnl_pct 为空或 None

仪表盘需要有效的当前价格。 对于 LFG 代币,仪表盘现在使用:
1

使用最新有效 K 线收盘价

当 K 线数据可用时,这是首选当前价格来源。
2

Fallback 到 LFG Hook getEffectivePrice(poolId)

如果 K 线数据不可用,仪表盘会读取协议有效价格。
3

只有两个来源都不可用时才使用零

价格为零表示仪表盘没有找到安全的当前价格来源。
如果该值仍然为空,请确认机器人和仪表盘使用同一个 state.dbconfig.yaml

安全运行检查表

真实运行前:
1

使用专用钱包

不要用主钱包运行自动交易机器人。
2

钱包中只保留少量 BNB

在测试和运行期间限制风险敞口。
3

先启用 dry_run

在允许真实交易前使用 dry_run: true
4

运行 smoke test

运行机器人前执行 python -m bot.smoke_test_lfg
5

确认 K 线和信号看起来正确

让机器人运行,并检查市场数据和决策是否合理。
6

在 test mode 中测试一次极小 BUY

使用 test_mode: truetest_action: "BUY" 和很小的 test_amount_bnb
7

确认仪表盘显示 lot

确认本地数据库和仪表盘结果符合预期。
8

然后再禁用 test_mode

只有确认小额测试后才进入实盘运行。

社区说明

这个机器人是对 LFG.RICH 社区的贡献,用于支持开发者、建设者和交易者探索 LFG.RICH 发射台和协议。 你可以使用、修改、改进和分享该项目。真实交易前,请检查配置、小额测试,并根据自己的需求调整策略。 该项目的目标是帮助 LFG.RICH 的采用、实验和社区驱动开发。