用 TradingView 做量化交易的人,迟早会遇到同一个问题:
策略信号出来了,但下单还是靠手动。警报响起的那一刻,你在睡觉、在开会、在看别的盘——等你反应过来,机会窗口早就关上了。
更根本的问题是:手动下单这件事本身,就和量化交易的逻辑相矛盾。 你写策略是为了排除情绪干扰,让规则执行,但只要还有"人"在中间,规则就不可能被严格执行。
这篇文章解决这个问题。读完你会理解整个自动化交易的工作原理,并完成从 TradingView 警报到 Binance 自动成交的完整配置。
在开始配置之前,花两分钟理解整个链路——这会让你后面的配置更清晰,出问题也更容易排查。
整个自动化交易链路由三个部分组成:
TradingView → FlamoTrade → Binance
(信号源) (执行中枢) (交易所)
TradingView 负责产生信号。你的策略或指标触发条件后,TradingView 会发出一个警报。这个警报可以携带内容,通过 Webhook 发送到指定的 URL。
FlamoTrade 是中间的执行引擎。它接收 TradingView 发来的 Webhook 请求,解析里面的 JSON 交易指令,然后调用 Binance API 下单。它的核心价值是:把"收到信号"和"执行交易"这两件事可靠地连接起来,同时处理多账户并发、下单失败重试、Telegram 推送等一系列工程问题。
Binance 负责实际成交。FlamoTrade 通过你授权的 API Key 在你的账户上下单。
理解这个链路之后,你会发现配置的逻辑非常简单:让 TradingView 知道往哪里发信号,让 FlamoTrade 知道往哪个账户下单。
有人会问:TradingView 能不能直接调用 Binance API?
技术上,TradingView 的 Webhook 只能发送 HTTP 请求,它不具备签名验证、账户管理、异步并发等能力,无法直接驱动 Binance。
也有人尝试自己搭一个中间服务器来做这件事,但实际上要处理的问题远比想象的多:Binance API 的签名规则、时间戳验证、多账户的并发控制、下单失败的重试机制、交易所的限流保护……这些都需要相当的工程投入,而且需要长期维护。
FlamoTrade 做的就是这件事,而且已经稳定运行超过一年。对交易者来说,用现成的工具解决工程问题,把精力放在策略上,才是正确的分工。
打开 flamotrade.com,注册账户并登录。
登录后进入订阅界面,选择开启永久免费标准版,然后进入用户管理页面,找到 Webhook URL 一栏,复制这个地址:
https://api.flamotrade.com/webhook/你的专属密钥
这个 URL 就是你专属的信号接收地址。TradingView 往这里发请求,FlamoTrade 就会执行对应的交易指令。密钥是你身份的唯一标识,不要泄露给他人。
FlamoTrade 需要通过 Binance API 在你的账户上下单。这里有一个安全设计值得理解:
Binance API Key 分权限。你只需要开通合约交易权限,不需要开通提现权限。这意味着即使 API Key 泄露,对方也无法转走你的资金,最多只能在合约上操作。这是最小权限原则的实际应用。
创建 API Key 时,将以下 IP 加入白名单:
192.243.127.172
这是 FlamoTrade 服务器的固定 IP。只有来自这个 IP 的请求才能使用你的 API Key,其他 IP 的请求会被 Binance 直接拒绝,进一步限制了风险敞口。
创建完成后,在 FlamoTrade 的 API 管理页面的交易账户列表中添加你的 API Key 和 Secret Key。FlamoTrade 对密钥进行加密存储,不会明文保存。
这一步不是必须的,但强烈建议配置。
自动化交易的一个潜在风险是"失控"——系统在执行,你不知道它在做什么。Telegram 推送解决的就是这个问题:每一笔订单的触发、成交、失败,都会实时推送到你的手机,让你随时掌握系统状态。
@BotFather,输入 /newbot,创建一个 Bot,保存 Token@userinfobot 获取你的 Chat ID这是整个配置中最核心的一步,也是最容易出问题的地方。理解 JSON 指令的结构,后面调整参数会容易很多。
打开 TradingView,在你的策略或指标上创建警报,注意两个关键地方:
以下是最常用的几种指令模板,理解每个参数的含义:
{
"action": "buySell",
"account": "ALL",
"symbol": "ETHUSDT",
"side": "BUY",
"amount": "0",
"usdt": "100",
"multiple": "0",
"price": "0",
"orderType": "market",
"cancelLast": "false",
"closeLast": "reverse",
"reduceOnly": "false",
"delay": "0",
"memo": ""
}
参数说明:
action:指令类型。buySell 是普通买卖,还有 create(复合下单)、closePosition(平仓)等side:方向。BUY 做多,SELL 做空usdt:下单金额。amount、usdt、multiple 三个字段按优先级取第一个非零值。这里用 usdt 指定 100Umultiple:按账户余额比例下单,如 "0.3*5" 表示用 30% 账户余额 × 5 倍杠杆(你账户已设置的杠杆)orderType:market 市价,limit 限价(限价时需填 price)closeLast:reverse 表示下单前先平掉反向持仓,避免同时持有多空仓位cancelLast:下单前是否撤销该品种的所有挂单{
"action": "create",
"account": "ALL",
"symbol": "ETHUSDT",
"side": "BUY",
"amount": "0",
"usdt": "100",
"multiple": "0",
"price": "0",
"stopPrice": "{{close}}*(1-2%)",
"profitPrice": "{{close}}*(1+4%)",
"orderType": "market",
"cancelLast": "true",
"closeLast": "reverse",
"reduceOnly": "false",
"delay": "0",
"memo": ""
}
stopPrice 和 profitPrice 支持数学表达式,{{close}} 是 TradingView 的警报占位符,会自动替换为触发时的收盘价。*(1-2%) 表示向下 2%,*(1+4%) 表示向上 4%。
这意味着你不需要自己计算价格——系统会在信号触发的瞬间,基于实时价格动态计算止盈止损位。
{
"action": "closePosition",
"account": "ALL",
"symbol": "ETHUSDT",
"side": "X",
"amount": "0",
"ratio": "1.0",
"price": "0",
"orderType": "market",
"cancelLast": "true",
"delay": "0",
"memo": ""
}
side 填 X 双向全平,closeBuy 只平多,closeSell 只平空。ratio 是平仓比例,1.0 表示全平,0.5 表示平一半。
配置完成后,用小仓位做一次完整测试,确认三件事:
三个都对,说明整个链路打通了。
延迟问题:从 TradingView 发出 Webhook 到 Binance 成交,正常情况下在 1 秒以内。这个延迟来自网络传输,不是 FlamoTrade 本身的处理时间。
多账户:account 字段填 ALL 表示对所有账户同时下单。如果你管理多个账户,也可以填具体账户名,如 "bnc1 bnc2",FlamoTrade 会并发执行,而不是串行等待。
下单失败处理:FlamoTrade 内置重试机制。如果因为网络波动或交易所限流导致下单失败,系统会自动重试,并通过 Telegram 告知失败原因。
免费版:标准版永久免费,每月 60 次订单额度。对于低频策略或测试阶段完全够用。超出频率需要的话再考虑升级付费版。
自动化交易的本质是:让规则在你不在场的情况下被严格执行。
这套配置做的事情很简单:TradingView 负责判断信号,FlamoTrade 负责可靠执行,Binance 负责实际成交。每个环节只做自己该做的事,中间没有人工干预的空间。
配置一次,之后策略运行时你甚至不需要打开电脑。
FlamoTrade 注册地址:flamotrade.com(标准版永久免费,无需信用卡)