自托管
在你自己的机器或 VPS 上运行机器人,并使用自己的钱包和配置。
支持 V5 流程
机器人会解析 Hook/Router 上下文,并使用官方 V5 交互流程。
仪表盘
本地查看仓位、lots、交易、已实现/未实现 PnL 和策略状态。
先 dry run
允许真实交易前,先使用
dry_run 和 smoke tests。- 通过 LFG.RICH Swap Router 买入;
- 通过 LFG.RICH Swap Router 卖出;
- 根据 LFG.RICH Uniswap V4 Hook 的
Buy和Sell事件构建 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
已确认成交会被持久化,用于会计、仪表盘和之后卖出。
环境要求
测试环境
机器人已在以下环境测试:必需系统组件
机器人需要:- 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,不是较新的 Streamlitwidth="stretch"语法。 - 代码在需要的地方包含 Python 3.8 兼容修复。
Linux / VPS 安装
以下步骤适用于 Ubuntu/Debian 风格服务器。1. 安装系统包
对于 Python 3.8:2. 下载或克隆项目
示例: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. 创建并激活虚拟环境
4. 安装依赖
5. 创建本地配置文件
环境配置
在项目根目录创建.env 文件。
示例:
.env 设置
永远不要把
.env 提交到 GitHub,也不要分享你的私钥。
机器人配置
机器人通过以下文件配置:watchlist.tokens[] 中的 symbol 和 token address。
LFG.RICH 协议合约
默认配置使用官方 LFG.RICH BSC 合约:Smoke test
运行完整机器人前,先运行 smoke test:运行机器人
1. 从 dry-run 模式开始
真实交易前保持启用:2. 测试一次小额真实买入
当 dry-run 日志看起来正常后,使用只存有少量 BNB 的专用钱包。 启用 test mode:3. 禁用 test mode 进入正常策略交易
4. 使用 PM2 保持运行
Linux 可选示例:运行仪表盘
仪表盘是可选的,但有助于查看 open lots、PnL、交易、余额和机器人状态。1. 安装仪表盘依赖
2. 运行仪表盘
从项目根目录运行,不要在bot/ 文件夹内部运行:
3. SSH tunnel 选项
如果不想公开暴露8501 端口:
4. 使用 PM2 保持仪表盘运行
Linux 可选示例:SQLite 数据库和 lots
机器人使用本地 SQLite 数据库:仪表盘依赖机器人
仪表盘读取state.db。
仪表盘本身不交易,也不会自己创建仓位。它依赖机器人创建和更新交易、仓位和 lots。
如果机器人还没有确认任何买入交易,仪表盘可能没有 open lots 可显示。
什么是 lots?
lot 是机器人对买入仓位的本地记录。 当机器人确认成功买入交易后,会记录一个 lot,包含:- 当前仓位价值;
- 未实现 PnL;
- 卖出后的已实现 PnL;
- 平均入场价;
- 每个代币的 open exposure。
1
使用最新有效 K 线收盘价
当 K 线数据可用时,这是首选当前价格来源。
2
Fallback 到 LFG Hook getEffectivePrice(poolId)
如果 K 线数据不可用,仪表盘会读取协议有效价格。
3
只有两个来源都不可用时才使用零
价格为零表示仪表盘没有找到安全的当前价格来源。
常用 SQLite 命令
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 包:
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.db 和 config.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: true、test_action: "BUY" 和很小的 test_amount_bnb。7
确认仪表盘显示 lot
确认本地数据库和仪表盘结果符合预期。
8
然后再禁用 test_mode
只有确认小额测试后才进入实盘运行。

