关键词:交易机器人、TradingView、Python Webhook、Binance API、Heroku 自动化、量化策略、Pine Script、 REST API、云部署、量化交易教程
一、为什么要自己动手做交易机器人
当手动挂单、熬夜盯盘成为痛点,用 交易机器人 可以用毫秒级速度响应市场。这套方案把「策略信号」与「订单执行」打通:
- TradingView 识别买卖点 → 触发 Webhook 通知 → Python 服务器调用 Binance API → Heroku 7×24 小时在线。
既可回测验证,又能一键实盘。
二、搭建路线图总览
| 阶段 | 目标 | 关键词 |
|---|---|---|
| 1 | 设置 TradingView 信号 | Pine Script, 策略报警 |
| 2 | 拿到 Binance API 密钥 | 安全校验, API 权限 |
| 3 | 配置环境变量 | Windows / macOS / Linux |
| 4 | 本地 Python 项目 | Flask, python-binance |
| 5 | REST 接口测试 | Insomnia 模拟 |
| 6 | 代码管理 | Git 版本控制 |
| 7 | 部署到云端 | Heroku dyno |
| 8 | 启动实盘 | 去注释, 监控日志 |
三、实战:创建 TradingView 策略与报警
1. 在图表里写策略
- 登录 TradingView → 选择交易对,以 ADAUSD 为例。
底部点击「Pine 编辑器」→ 贴入以下非盈利示例逻辑:
- 两条 SMA(2 日 / 5 日)金叉做多,死叉平仓。
- 可自行修改节点名称
strategy.entry("ADA door", …)以二选一建仓。
- 点击「Add to Chart」→「策略测试」查看回测曲线。
- 点击闹钟图标创建报警,Condition 选刚才的脚本名「ADA SMA」。
在 Message 区插入模板 JSON:
{ "passphrase": "abcdefgh", "time": "{{timenow}}", "exchange": "{{exchange}}", "ticker": "{{ticker}}", … }- URL 地址留空,稍后改成 Heroku Webhook 地址。
2. 密钥与安全
- 登录 Binance → 进入「API 管理」→ 标记用途如
tradingbot。 - 妥善保存
API-KEY与SECRET,不要存入代码仓库。
四、本地开发:60 分钟完成 MVP
1. 环境 & 依赖
- 安装 Python 3.9+、Git、PyCharm Community。
在项目根目录创建:
pip install -r requirements.txtrequirements.txt内包含:flask gunicorn python-binance
2. 项目结构
my-trading-bot/
├─ app.py
├─ requirements.txt
└─ Procfile # web: gunicorn app:app3. 核心代码示例
from flask import Flask, request
from binance.client import Client
import json, os
app = Flask(__name__)
client = Client(os.getenv('API_KEY'), os.getenv('API_SECRET'), tld='us')
@app.route('/')
def hello():
return "交易机器人心跳正常"
@app.route('/webhook', methods=['POST'])
def webhook():
data = json.loads(request.data)
# 1. 校验短语
if data['passphrase'] != os.getenv('WEBHOOK_PASSPHRASE'):
return {"code": "error"}, 403
# 2. 解析参数
side = data['strategy']['order_action'].upper()
qty = data['strategy']['order_contracts']
symbol = data['ticker'].upper()
price = data['strategy']['order_price']
# 3. 下单(默认注释,未激活)
# client.create_order(...)
return {"code": "success", "msg": "收到信号"}
if __name__ == '__main__':
app.run()4. 配置环境变量
- Windows:系统变量中新增(例)
API_KEY=YOUR_BINANCE_KEYWEBHOOK_PASSPHRASE=abcdefgh
五、本地测试:用 REST Client 秒级验证
- 打开 Insomnia / Postman,新建 POST:
http://127.0.0.1:5000/webhook - Body 选 JSON,填入上一步样本。
- 点击「发送」→ 右侧看到
{"code":"success"}即连通。 - 若有 Binance 错误码
-2010 -1013,参考下方 FAQ 解决精确度。
六、云端部署:Heroku 7×24 在线
1. 创建应用
heroku login
heroku create mywebhook2. 保存密钥
Dashboard → Settings → Config Vars
创建与本地一致的键值对:API_KEYAPI_SECRETWEBHOOK_PASSPHRASE
3. 推送代码
git init
heroku git:remote -a mywebhook
git add .
git commit -m "first deployment"
git push heroku main4. 健康检查
打开 https://mywebhook.herokuapp.com/
若无报错,执行
heroku logs --tail关注 Starting process with command gunicorn app:app。
七、打通「信号→订单」最后一步
- TradingView 报警 → Webhook URL 改为
https://mywebhook.herokuapp.com/webhook - Python 中取消注释
# client.create_order(...)并重新 push Heroku。 - 盯紧 Binance App 观察成交记录,一条龙完成。
八、常见问题与解答(FAQ)
| Q | A |
|---|---|
| 如何防止环境变量泄露? | 一律用操作系统级或 Heroku Config Vars,切勿硬编码、上传 GitHub。 |
订单精度报错 PRECISION_OVER_MAX 怎么办? | 在 app.py 把价格四舍五入到 4 位小数: price = round(price, 4) |
余额不足 -2010 如何处理? | (1) 在服务器发起前查余量;(2) 自动调整 order_contracts 小于可用余额的 90%。 |
| Heroku 日志出现 H14「无 web 进程」? | 检查 Procfile 是否无扩展名且包含 web: gunicorn app:app,然后 heroku ps:scale web=1。 |
| Pine Script 如何接入更多标的? | 修改 ticker 字样为函数式如 {{ticker}},则同策略可重用于 BTC、ETH 等。 |
九、进阶优化清单
- 算法风控:引入最大回撤、仓位系数 kelly.
- 监控告警:接入邮件 / Telegram,异常实时推送。
- 容灾:本地 EDGE / VPS 双节点,主备无缝切换。
至此,你已拥有一套从策略到交割的完整量化 自动交易系统。别忘了高频测试小仓位,稳步盈利后逐步扩大投入。祝你交易愉快!