用 TradingView、Python 与 Heroku 搭建实时交易机器人

·

关键词:交易机器人、TradingView、Python Webhook、Binance API、Heroku 自动化、量化策略、Pine Script、 REST API、云部署、量化交易教程

一、为什么要自己动手做交易机器人

当手动挂单、熬夜盯盘成为痛点,用 交易机器人 可以用毫秒级速度响应市场。这套方案把「策略信号」与「订单执行」打通:

👉 零基础也能部署,点击详细了解完整流程


二、搭建路线图总览

阶段目标关键词
1设置 TradingView 信号Pine Script, 策略报警
2拿到 Binance API 密钥安全校验, API 权限
3配置环境变量Windows / macOS / Linux
4本地 Python 项目Flask, python-binance
5REST 接口测试Insomnia 模拟
6代码管理Git 版本控制
7部署到云端Heroku dyno
8启动实盘去注释, 监控日志

三、实战:创建 TradingView 策略与报警

1. 在图表里写策略

  1. 登录 TradingView → 选择交易对,以 ADAUSD 为例。
  2. 底部点击「Pine 编辑器」→ 贴入以下非盈利示例逻辑:

    • 两条 SMA(2 日 / 5 日)金叉做多,死叉平仓。
    • 可自行修改节点名称 strategy.entry("ADA door", …) 以二选一建仓。
  3. 点击「Add to Chart」→「策略测试」查看回测曲线。
  4. 点击闹钟图标创建报警,Condition 选刚才的脚本名「ADA SMA」。
  5. 在 Message 区插入模板 JSON:

    {
      "passphrase": "abcdefgh",
      "time": "{{timenow}}",
      "exchange": "{{exchange}}",
      "ticker": "{{ticker}}",
      …
    }
  6. URL 地址留空,稍后改成 Heroku Webhook 地址

2. 密钥与安全


四、本地开发:60 分钟完成 MVP

1. 环境 & 依赖

2. 项目结构

my-trading-bot/
├─ app.py
├─ requirements.txt
└─ Procfile  # web: gunicorn app:app

3. 核心代码示例

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. 配置环境变量


五、本地测试:用 REST Client 秒级验证

  1. 打开 Insomnia / Postman,新建 POST:http://127.0.0.1:5000/webhook
  2. Body 选 JSON,填入上一步样本。
  3. 点击「发送」→ 右侧看到 {"code":"success"} 即连通。
  4. 若有 Binance 错误码 -2010 -1013,参考下方 FAQ 解决精确度。

👉 调试到这一步需要更多示例?数万开发者都在用的实用方案


六、云端部署:Heroku 7×24 在线

1. 创建应用

heroku login
heroku create mywebhook

2. 保存密钥

3. 推送代码

git init
heroku git:remote -a mywebhook
git add .
git commit -m "first deployment"
git push heroku main

4. 健康检查

打开 https://mywebhook.herokuapp.com/
若无报错,执行

heroku logs --tail

关注 Starting process with command gunicorn app:app


七、打通「信号→订单」最后一步

  1. TradingView 报警 → Webhook URL 改为 https://mywebhook.herokuapp.com/webhook
  2. Python 中取消注释 # client.create_order(...) 并重新 push Heroku。
  3. 盯紧 Binance App 观察成交记录,一条龙完成。

八、常见问题与解答(FAQ)

QA
如何防止环境变量泄露?一律用操作系统级或 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 等。

九、进阶优化清单

  1. 算法风控:引入最大回撤、仓位系数 kelly.
  2. 监控告警:接入邮件 / Telegram,异常实时推送。
  3. 容灾:本地 EDGE / VPS 双节点,主备无缝切换。

至此,你已拥有一套从策略到交割的完整量化 自动交易系统。别忘了高频测试小仓位,稳步盈利后逐步扩大投入。祝你交易愉快!