本项目是一个面向合约量化刷量/做市场景的交易 Bot,支持:
- Backpack USDC 永续合约刷量 / 做市(重点)
- 默认使用 DeepSeek,通过任意 OpenAI Chat Completions 兼容接口(由
LLM_API_BASE_URL/LLM_API_KEY/LLM_API_TYPE配置)进行交易决策 - 支持纸面回测/回放、风险控制、Telegram 通知等
运行方式以 Docker 为主,核心逻辑和配置都已经封装好,你只需要:
- 注册并开通 Backpack 交易所账号
- 申请 API Key,并填入
.env - 配置为
backpack_futures模式 - 启动 Bot,即可在 Backpack 上进行刷量/交易
下图为在 Backpack USDC 永续合约上刷量约 7 天的实测效果:第四季度第二周获得518积分 累计成交额约 40 万 USDC,整体亏损约 50 USDC(主要来自手续费和点差,实际盈亏仍取决于市场波动和具体策略)。
上图仅为历史示例,不代表任何未来收益承诺,请务必结合自身风险偏好谨慎使用。
不想自己折腾部署、服务器、环境?可以找我代部署。
- 🖥️ 无需本地电脑 7x24 小时开机:部署在海外服务器,全天候运行
- 🌍 网络稳定:服务器位于海外,访问交易所 API 更稳定
- 🔧 省心省力:系统安装、依赖配置、Docker、定时任务、监控等一站式搞定
费用说明(参考):
- 服务器成本:约 40 元/月(按实际服务商为准)
- 代部署服务费:可面议(视你的需求复杂度)
- 大模型 API:我用 GLM 的编程套餐,第一个月只需要 100 元,API 调用次数基本用不完。购买地址:https://www.bigmodel.cn/claude-code?ic=TVUZHTWCW9
联系微信:gptkit
代部署包含:环境配置、代码部署、配置指导、简单使用说明。如有定制需求(策略改造、风控规则、指标调整等),可另行沟通。
推荐使用下面的注册链接创建 Backpack 账号(网页打开即可):
https://backpack.exchange/join/86324687-8d6e-45f4-a477-7499a8aedd1a
注册完成后:
- 绑定邮箱/手机号,完成基础安全设置
- 按平台要求完成 KYC(如需)
- 开通 USDC 永续合约交易权限
在完成账号注册与安全设置后,前往 Backpack 的 API 管理页面:
步骤示例:
- 登录 Backpack 官网
- 打开上面的 API Keys 页面
- 创建新的 API Key
- 权限建议:
- 开启 读取账户 / 读取持仓
- 开启 交易权限(合约下单)
- 不建议开启提现权限
- 创建完成后,你会获得一对 Base64 编码的 ED25519 密钥:
- 公钥(Public Key)
- 私钥种子(Secret Seed)
请妥善保管,不要泄露,也不要提交到 Git 仓库。
- 推荐:Ubuntu 等 Linux 云服务器(也可本地 macOS)
- 已安装:
- Docker 24+(或兼容版本)
- Git
拉取代码:
git clone https://github.com/terryso/LLM-trader-test.git
cd LLM-trader-test项目提供了示例配置:.env.example,你可以复制一份:
cp .env.example .env然后使用你熟悉的编辑器修改 .env,重点是 Backpack 相关配置。
在 .env 文件中,找到并配置以下几个关键变量:
TRADING_BACKEND=backpack_futures
MARKET_DATA_BACKEND=backpack
BACKPACK_API_PUBLIC_KEY=你的_Backpack_API_Public_Key
BACKPACK_API_SECRET_SEED=你的_Backpack_API_Secret_Seed
# 可选:如不填则使用默认官方地址与 5000ms 窗口
#BACKPACK_API_BASE_URL=https://api.backpack.exchange
#BACKPACK_API_WINDOW_MS=5000
# 统一的实盘总开关(建议手动确认后再打开)
LIVE_TRADING_ENABLED=true说明:
TRADING_BACKEND=backpack_futures:选择 Backpack 作为交易后端MARKET_DATA_BACKEND=backpack:选择 Backpack 公共行情 API 作为价格/K 线来源,用于技术指标计算和 Dashboard 展示;在只关心 Backpack 场景下,可以让行情与交易保持一致、完全自洽BACKPACK_API_PUBLIC_KEY/BACKPACK_API_SECRET_SEED:- 对应你在 Backpack 后台申请到的 API 公钥/私钥种子
- 必须是 Base64 编码的 ED25519 密钥(按官方文档生成)
LIVE_TRADING_ENABLED=true:- 当且仅当你确认要在 Backpack 上真实下单/刷量时再开启
- 如果不想立刻上实盘测试,可以先不设置或设为
false,只跑纸面回测逻辑
除了 Backpack 之外,.env 里还需要:
-
LLM 相关(推荐直接使用 GLM 的 OpenAI Chat Completions 兼容接口):
LLM_API_BASE_URL:你的 LLM 网关地址,例如https://open.bigmodel.cn/api/coding/paas/v4/chat/completionsLLM_API_KEY:在 bigmodel.cn 后台创建的 GLM API KeyLLM_API_TYPE:接口类型标记,GLM 推荐设置为custom
示例:使用 GLM 编程套餐(推荐)
# LLM 模型配置 TRADEBOT_LLM_MODEL=glm-4.6 TRADEBOT_LLM_TEMPERATURE=0.3 TRADEBOT_LLM_MAX_TOKENS=4000 #TRADEBOT_LLM_THINKING={"budget_tokens":512} # GLM 接口配置 LLM_API_BASE_URL=https://open.bigmodel.cn/api/coding/paas/v4/chat/completions LLM_API_KEY=你的_GLM_API_Key LLM_API_TYPE=custom
-
资金风控相关(可选):
PAPER_START_CAPITAL/LIVE_START_CAPITAL- 风险控制开关与每日亏损限制(
RISK_CONTROL_ENABLED、DAILY_LOSS_LIMIT_PCT等)
-
行情数据来源(可选):
MARKET_DATA_BACKEND=binance:从 Binance 现货接口拉取行情(默认)MARKET_DATA_BACKEND=backpack:从 Backpack 公共行情 API 获取价格和 K 线,在纯 Backpack 场景下更统一
你可以只先配置 Backpack + LLM,其他参数保持默认即可开始试跑。
推荐在本地开发、调试策略或先小规模试跑时使用本方式。
-
(可选但推荐)创建虚拟环境并安装依赖:
python3 -m venv .venv source .venv/bin/activate # Windows 使用 .venv\\Scripts\\activate pip install -r requirements.txt
-
确保项目根目录下已经配置好
.env文件(包括 Backpack、LLM、风控等变量)。 -
启动 Backpack 刷量 Bot:
python3 bot.py
-
启动监控 Dashboard(可选,与本地
./data目录共用数据):streamlit run dashboard.py
说明:默认情况下,bot.py 和 dashboard.py 都会读取项目根目录下的 .env,并将运行数据写入 ./data(可通过 TRADEBOT_DATA_DIR 环境变量修改)。
在项目根目录执行:
docker build -t tradebot .mkdir -p ./dataBot 运行时会把交易记录、AI 决策、持仓状态等信息写入 ./data 目录,方便后续分析与对账。
确认 .env 已正确设置(尤其是 Backpack API 与 LLM),然后:
docker run --rm -it \
--env-file .env \
-v "$(pwd)/data:/app/data" \
tradebot此时:
- 如果
TRADING_BACKEND=backpack_futures且LIVE_TRADING_ENABLED=true:- Bot 会根据 DeepSeek 的决策,在 Backpack USDC 永续合约上真实下单/刷量
- 如果未开启实盘:
- 仍然会生成完整的交易决策与日志,但不会向交易所发送真实订单
项目自带一个 Streamlit Dashboard,用于查看 Bot 的表现、收益曲线等:
docker run --rm -it \
--env-file .env \
-v "$(pwd)/data:/app/data" \
-p 8501:8501 \
tradebot \
streamlit run dashboard.py浏览器访问:http://localhost:8501
你可以看到:
- 资金曲线、回撤、Sharpe/Sortino 等指标
- 具体每笔交易和 AI 决策内容
在正式高频刷量前,建议先做一笔非常小金额的联通测试,确认:
- API Key 权限正确
- 延迟/撮合正常
- 账户有足够 USDC 作为保证金
项目提供了一个 Backpack 永续合约的手动 smoke 测试脚本:
./scripts/run_backpack_futures_smoke.sh \
--coin BTC \
--size 0.001 \
--side long该脚本会:
- 在
BTC_USDC_PERP市场开一笔极小头寸 - 等待几秒
- 再通过 reduce-only 市价单平掉该头寸
如果脚本运行失败,请重点检查:
.env中BACKPACK_API_PUBLIC_KEY/BACKPACK_API_SECRET_SEED是否正确- 是否有网络问题/时间窗口配置不正确(
BACKPACK_API_WINDOW_MS)
在 .env 末尾,你可以看到一整段中文风控说明,主要变量包括:
RISK_CONTROL_ENABLED:是否启用风控总开关KILL_SWITCH:紧急停止新开仓(保留平仓/止损)DAILY_LOSS_LIMIT_ENABLED:是否启用每日亏损限制DAILY_LOSS_LIMIT_PCT:每日最大亏损占比(达到后自动拉闸)
建议在实盘刷量前,按自己可承受风险合理调整这些参数。
如需用 Telegram 实时接收 Bot 的交易情况,可在 .env 配置:
TELEGRAM_BOT_TOKENTELEGRAM_CHAT_ID- 可选:
TELEGRAM_SIGNALS_CHAT_ID(只推送开仓/平仓信号)
配置完成后,每次迭代、开平仓、异常告警等信息都会推送到你的 Telegram。
运行过程中,如果已经配置好 Telegram 管理员(.env 中设置 TELEGRAM_ADMIN_USER_ID,值为你的 Telegram user_id),可以通过 /config 命令在不重启 Bot 的前提下临时调整部分关键配置。
/config list:列出所有支持的运行时配置项及其当前生效值(已经包含 runtime overrides 的结果)。/config get KEY:查看某个配置项的详情,包括当前值和合法取值说明。/config set KEY VALUE:设置运行时覆盖值(runtime override),仅管理员可用,并会写入审计日志。
当前版本中,可以通过 /config 直接修改的运行时配置项为 3 个:
TRADEBOT_INTERVAL- 含义:交易循环的主时间框架(如
15m、1h) - 合法值:
1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d - 生效方式:
- 通过
/config set TRADEBOT_INTERVAL 1m等命令设置后,下一轮迭代开始即生效; - 会影响:
- 主循环
_run_iteration的休眠时间(日志中Waiting XXXs...的数值); - 计算 Sortino Ratio 时的时间粒度;
- 构造给 LLM 的 prompt 中的 timeframe 描述,以及用于指标计算的 K 线间隔。
- 主循环
- 通过
- 含义:交易循环的主时间框架(如
TRADEBOT_LLM_TEMPERATURE- 含义:LLM 采样温度
- 合法范围:
0.0–2.0(超出范围会被拒绝或忽略,沿用 env/default) - 生效方式:
- 通过
/config set TRADEBOT_LLM_TEMPERATURE 1.2等命令设置后,下一次 LLM 调用立即使用新的温度; - 该值会体现在发送给 LLM 的请求 payload 中,并记录在
data/ai_messages.csv的 metadata.temperature 字段中,方便回溯决策环境。
- 通过
TRADEBOT_LOOP_ENABLED- 含义:主循环总开关(
false= 暂停 Bot 主循环,只保留 Telegram 等外围线程;true= 正常运行) - 合法值:
true/false(常见等价写法如1/0、on/off也会被解析) - 生效方式:
- 当设置为
false时,主循环会跳过交易逻辑,只按get_effective_check_interval()轮询休眠; - 当设置为
true时,主循环恢复正常迭代。
- 当设置为
- 含义:主循环总开关(
此外,runtime overrides 层本身仍支持对 TRADING_BACKEND / MARKET_DATA_BACKEND 等 key 进行进程内覆盖,但当前实现中:
- 这两个 backend 相关 key 只能通过
.env与重启进程生效; /config命令不会接受TRADING_BACKEND/MARKET_DATA_BACKEND作为合法 key,输入时会返回「无效配置项」提示;- 建议继续使用
.env管理交易/行情后端,避免在运行中试图热切换 backend 导致状态不一致。
权限与风险提示:
- 只有
TELEGRAM_ADMIN_USER_ID对应的管理员账号可以成功执行/config set,普通用户调用会被拒绝并在日志中记录。 - 所有运行时修改都通过
RuntimeOverrides容器保存在内存中,不会自动写回.env;一旦进程重启,所有 runtime overrides 会被丢弃,配置会回到.env/ 默认值。 - 建议在纸上交易模式或小仓位下先验证
/config行为,再在实盘环境中使用;不要通过过大的 temperature / 过短的 interval 让 LLM 行为过于激进,注意 API 费用与交易风险。
Bot 支持通过 Telegram /symbols 命令动态管理交易 Universe(可交易的币种列表),无需重启即可调整交易范围。
/symbols list:查看当前交易 Universe(任何用户可用)/symbols add SYMBOL:添加交易对到 Universe(仅管理员)/symbols remove SYMBOL:从 Universe 移除交易对(仅管理员)
示例:
/symbols list
/symbols add BTCUSDT
/symbols remove SOLUSDT
- 默认 Universe:由
config/settings.py中的SYMBOLS列表定义 - 运行时覆盖:通过
/symbols add/remove命令修改,存储在内存中 - 重启行为:进程重启后,Universe 会恢复到默认值
添加新 symbol 时,系统会根据当前 MARKET_DATA_BACKEND 进行校验:
- Binance 后端:验证 symbol 是否存在于 Binance Futures 市场
- Backpack 后端:用户仍使用 USDT 风格的 symbol(如
BTCUSDT),系统内部会自动映射到 Backpack 的 USDC 合约格式(如BTC_USDC_PERP)
重要行为约定:
/symbols remove只影响后续新开仓,不会强制平掉已有持仓- 已有持仓继续由现有 SL/TP、Kill-Switch、每日亏损限制等机制管理
- 若 Universe 中移除了仍有持仓的 symbol,日志中会有 WARNING 提示(orphaned position)
- 回测模式:使用
BACKTEST_SYMBOLS环境变量或 CLI 参数控制 symbol,与 Telegram/symbols命令完全独立 - Paper/Live 模式:受
/symbols命令和 Universe override 影响
这种设计确保回测结果的可重复性,不会因为运行时的 Universe 调整而改变。
所有 /symbols add/remove 操作都会记录审计日志,格式如下:
SYMBOLS_AUDIT | action=ADD | symbol=BTCUSDT | user_id=123456 | chat_id=789 | old_universe=5 symbols | new_universe=6 symbols | success=True | timestamp=2024-01-01T12:00:00+00:00
被拒绝的操作(非管理员、无效 symbol)也会记录,包含当前 Universe 上下文:
SYMBOLS_AUDIT | action=DENY | symbol=INVALIDUSDT | user_id=456789 | chat_id=789 | old_universe=5 symbols | success=False | reason_code=add_invalid_symbol | reason=Symbol 'INVALIDUSDT' 不在已知交易对列表中 | timestamp=2024-01-01T12:00:00+00:00
日志字段说明:
reason_code:机器可读的原因代码(如add_permission_denied、add_invalid_symbol)reason:人类可读的详细说明
日志级别:
- 成功的 add/remove:INFO
- 被拒绝的修改:WARNING
注意:内部异常由调用方使用
logging.error()单独记录,不通过SYMBOLS_AUDIT前缀。
-
交易所活动刷量:
- 需要在指定永续合约上达到一定成交量
- 使用本 Bot 持续小额下单+平仓,生成连续成交记录
-
做市/挂单深度(需视策略微调):
- 通过修改系统 Prompt 或策略逻辑,让 Bot 更偏向挂单成交
-
策略研究/回测:
- 先在纯纸面模式下调参
- 再切换到 Backpack 实盘进行小额验证
如果你有更复杂的刷量/做市需求(如双边对敲、多账号协同、细粒度手续费/返佣优化等),可以在微信沟通定制开发。
本仓库及相关代码仅用于技术研究和教育演示:
- 不构成任何投资建议或交易建议
- 不保证任何收益或回报
- 使用本项目产生的任何直接或间接损失,均由使用者自行承担
在你开始实盘刷量或交易之前,请务必:
- 充分理解永续合约、高杠杆交易的风险
- 先在纸面/小额资金环境中长期验证
- 仔细评估自己的风险承受能力
- 使用 Docker 运行时,日志与数据统一写入
/app/data(映射到本地./data) - 不会自动覆盖已有数据文件,如需迁移旧数据请手工处理
- 项目包含完整的单元测试与回测脚本,适合二次开发和策略研究
如果你只关心 Backpack 刷量,把注意力放在:
.env中 Backpack 与风险控制相关变量scripts/manual_backpack_futures_smoke.py联通测试脚本- Docker 启动命令
即可完成从 0 到 1 的搭建与上线。
