关注我 X (Twitter): @yourQuantGuy
English speakers: Please read README_EN.md for the English version of this documentation.
一个支持多个交易所(目前包括 EdgeX, Backpack, Paradex, Aster)的模块化交易机器人。该机器人实现了自动下单并在盈利时自动平仓的策略,主要目的是取得高交易量。
EdgeX 交易所: https://pro.edgex.exchange/referral/QUANT
永久享受 VIP 1 费率;额外 10% 手续费返佣;10% 额外奖励积分
Backpack 交易所: https://backpack.exchange/join/quant
使用我的推荐链接获得 30% 手续费返佣
Paradex 交易所: https://app.paradex.trade/r/quant
使用我的推荐链接获得 10% 手续费返佣以及潜在未来福利
使用我的推荐链接获得 30% 手续费返佣以及积分加成
-
克隆仓库:
git clone <repository-url> cd perp-dex-tools
-
创建并激活虚拟环境:
python3 -m venv env source env/bin/activate # Windows: env\Scripts\activate
-
安装依赖:
pip install -r requirements.txt
Paradex 用户:如果您想使用 Paradex 交易所,需要额外安装 Paradex 专用依赖:
pip install -r para_requirements.txt
-
设置环境变量: 在项目根目录创建
.env文件,并使用 env_example.txt 作为样本,修改为你的 api 密匙。
重要提醒:大家一定要先理解了这个脚本的逻辑和风险,这样你就能设置更适合你自己的参数,或者你也可能觉得这不是一个好策略,根本不想用这个策略来刷交易量。我在推特也说过,我不是为了分享而写这些脚本,而是我真的在用这个脚本,所以才写了,然后才顺便分享出来。
这个脚本主要还是要看长期下来的磨损,只要脚本持续开单,如果一个月后价格到你被套的最高点,那么你这一个月的交易量就都是零磨损的了。所以我认为如果把--quantity和--wait-time设置的太小,并不是一个好的长期的策略,但确实适合短期内高强度冲交易量。我自己一般用 40 到 60 的 quantity,450 到 650 的 wait-time,以此来保证即使市场和你的判断想法,脚本依然能够持续稳定地下单,直到价格回到你的开单点,实现零磨损刷了交易量。
该机器人实现了简单的交易策略:
- 订单下单:在市场价格附近下限价单
- 订单监控:等待订单成交
- 平仓订单:在止盈水平自动下平仓单
- 持仓管理:监控持仓和活跃订单
- 风险管理:限制最大并发订单数
- 网格步长控制:通过
--grid-step参数控制新订单与现有平仓订单之间的最小价格距离 - 停止交易控制:通过
--stop-price参数控制停止交易的的价格条件
- quantity: 每笔订单的交易数量
- take-profit: 止盈百分比(如 0.02 表示 0.02%)
- max-orders: 最大同时活跃订单数(风险控制)
- wait-time: 订单间等待时间(避免过于频繁交易)
- grid-step: 网格步长控制(防止平仓订单过于密集)
- stop-price: 当市场价格达到该价格时退出脚本
- pause-price: 当市场价格达到该价格时暂停脚本
--grid-step 参数用于控制新订单的平仓价格与现有平仓订单之间的最小距离:
- 默认值 -100:无网格步长限制,按原策略执行
- 正值(如 0.5):新订单的平仓价格必须与最近的平仓订单价格保持至少 0.5% 的距离
- 作用:防止平仓订单过于密集,提高成交概率和风险管理
例如,当看多且 --grid-step 0.5 时:
- 如果现有平仓订单价格为 2000 USDT
- 新订单的平仓价格必须低于 1990 USDT(2000 × (1 - 0.5%))
- 这样可以避免平仓订单过于接近,提高整体策略效果
假设当前 ETH 价格为 $2000,设置止盈为 0.02%:
- 开仓:在 $2000.40 下买单(略高于市价)
- 成交:订单被市场成交,获得多头仓位
- 平仓:立即在 $2000.80 下卖单(止盈价格)
- 完成:平仓单成交,获得 0.02% 利润
- 重复:继续下一轮交易
- 订单限制:通过
max-orders限制最大并发订单数 - 网格控制:通过
grid-step确保平仓订单有合理间距 - 下单频率控制:通过
wait-time确保下单的时间间隔,防止短时间内被套 - 实时监控:持续监控持仓和订单状态
⚠️ 无止损机制:此策略不包含止损功能,在不利市场条件下可能面临较大损失
ETH:
python runbot.py --exchange edgex --ticker ETH --quantity 0.1 --take-profit 0.02 --max-orders 40 --wait-time 450ETH(带网格步长控制):
python runbot.py --exchange edgex --ticker ETH --quantity 0.1 --take-profit 0.02 --max-orders 40 --wait-time 450 --grid-step 0.5ETH(带停止交易的价格控制):
python runbot.py --exchange edgex --ticker ETH --quantity 0.1 --take-profit 0.02 --max-orders 40 --wait-time 450 --stop-price 5500BTC:
python runbot.py --exchange edgex --ticker BTC --quantity 0.05 --take-profit 0.02 --max-orders 40 --wait-time 450ETH 永续合约:
python runbot.py --exchange backpack --ticker ETH --quantity 0.1 --take-profit 0.02 --max-orders 40 --wait-time 450ETH 永续合约(带网格步长控制):
python runbot.py --exchange backpack --ticker ETH --quantity 0.1 --take-profit 0.02 --max-orders 40 --wait-time 450 --grid-step 0.3ETH:
python runbot.py --exchange aster --ticker ETH --quantity 0.1 --take-profit 0.02 --max-orders 40 --wait-time 450ETH(启用 Boost 模式):
python runbot.py --exchange aster --ticker ETH --direction buy --quantity 0.1 --aster-boostACCOUNT_NAME: 环境变量中当前账号的名称,用于多账号日志区分,可自定义,非必须
EDGEX_ACCOUNT_ID: 您的 EdgeX 账户 IDEDGEX_STARK_PRIVATE_KEY: 您的 EdgeX API 私钥EDGEX_BASE_URL: EdgeX API 基础 URL(默认:https://pro.edgex.exchange)EDGEX_WS_URL: EdgeX WebSocket URL(默认:wss://quote.edgex.exchange)
BACKPACK_PUBLIC_KEY: 您的 Backpack API KeyBACKPACK_SECRET_KEY: 您的 Backpack API Secret
PARADEX_L1_ADDRESS: L1 钱包地址PARADEX_L2_PRIVATE_KEY: L2 钱包私钥(点击头像,钱包,"复制 paradex 私钥")
ASTER_API_KEY: 您的 Aster API KeyASTER_SECRET_KEY: 您的 Aster API Secret
--exchange: 使用的交易所:'edgex'、'backpack'、'paradex'或'aster'(默认:edgex)--ticker: 标的资产符号(例如:ETH、BTC、SOL)。合约 ID 自动解析。--quantity: 订单数量(默认:0.1)--take-profit: 止盈百分比(例如 0.02 表示 0.02%)--direction: 交易方向:'buy'或'sell'(默认:buy)--env-file: 账户配置文件 (默认:.env)--max-orders: 最大活跃订单数(默认:40)--wait-time: 订单间等待时间(秒)(默认:450)--grid-step: 与下一个平仓订单价格的最小距离百分比(默认:-100,表示无限制)--stop-price: 当direction是 'buy' 时,price >= stop-price 停止交易并退出程序;'sell' 逻辑相反(默认:-1,表示不会因为价格原因停止交易)--pause-price: 当direction是 'buy' 时,price >= pause-price 停止交易并退出程序;'sell' 逻辑相反(默认:-1,表示不会因为价格原因停止交易)--aster-boost: 启用 Aster 交易所的 Boost 模式进行交易量提升(仅适用于 aster 交易所)--aster-boost的下单逻辑:下 maker 单开仓,成交后立即用 taker 单关仓,以此循环。磨损为一单 maker,一单 taker 的手续费,以及滑点。
该机器人提供全面的日志记录:
- 交易日志:包含订单详情的 CSV 文件
- 调试日志:带时间戳的详细活动日志
- 控制台输出:实时状态更新
- 错误处理:全面的错误日志记录和处理
- 为每个账户创建一个 .env 文件,如 account_1.env, account_2.env
- 在每个账户的 .env 文件中设置
ACCOUNT_NAME=, 如ACCOUNT_NAME=MAIN。 - 在每个文件中配置好每个账户的 API key 或是密匙
- 通过更改命令行中的
--env-file参数来开始不同的账户,如python runbot.py --env-file account_1.env [其他参数...]
将不同交易所的账号都配置在同一 .env 文件后,通过更改命令行中的 --exchange 参数来开始不同的交易所,如 python runbot.py --exchange backpack [其他参数...]
将账号配置在 .env 文件后,通过更改命令行中的 --ticker 参数来开始不同的合约,如 python runbot.py --ticker ETH [其他参数...]
- Fork 仓库
- 创建功能分支
- 进行更改
- 如适用,添加测试
- 提交拉取请求
本项目采用非商业许可证 - 详情请参阅LICENSE文件。
重要提醒:本软件仅供个人学习和研究使用,严禁用于任何商业用途。如需商业使用,请联系作者获取商业许可证。
本软件仅供教育和研究目的。加密货币交易涉及重大风险,可能导致重大财务损失。使用风险自负,切勿用您无法承受损失的资金进行交易。