You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求开发TradingView至Bybit的Webhook联动交易信号脚本

TradingView与Bybit Webhook联动交易方案(自动平仓+12x杠杆)

核心逻辑:收到TradingView的多/空信号后,先平掉对应币种的现有仓位,设置12倍杠杆,再开对应方向的新仓。由于TradingView Webhook仅能发送简单请求,需要一个中间服务处理查仓、平仓、调杠杆、开仓的复杂逻辑。

一、TradingView信号配置

在你的TradingView策略/指标中添加Webhook通知,信号采用JSON格式明确操作方向和交易对:

  • 做多信号:
{"action": "long", "symbol": "BTCUSDT"}
  • 做空信号:
{"action": "short", "symbol": "BTCUSDT"}

注意:开启TradingView的Webhook权限,将Webhook地址指向你搭建的中间服务接口(比如http://你的服务器IP:5000/webhook)。

二、中间服务实现(Python Flask示例)

这个服务负责接收TradingView的信号,调用Bybit API完成完整交易流程。

1. 依赖安装

pip install flask python-dotenv pybit

2. 核心代码

from flask import Flask, request
from pybit.unified_trading import HTTP
import os
from dotenv import load_dotenv

load_dotenv()
app = Flask(__name__)

# 初始化Bybit客户端(实盘testnet设为False,测试网设为True)
client = HTTP(
    testnet=True,
    api_key=os.getenv("BYBIT_API_KEY"),
    api_secret=os.getenv("BYBIT_API_SECRET")
)

def close_existing_position(symbol):
    """平仓对应币种的现有仓位"""
    positions = client.get_positions(category="linear", symbol=symbol)
    if not positions['result']['list']:
        return
    pos = positions['result']['list'][0]
    pos_side = pos['side']
    pos_size = float(pos['size'])
    if pos_size <= 0:
        return
    # 反向下单平仓,开启reduceOnly避免开新仓
    client.place_order(
        category="linear",
        symbol=symbol,
        side="Sell" if pos_side == "Buy" else "Buy",
        orderType="Market",
        qty=str(pos_size),
        reduceOnly=True
    )

def set_leverage(symbol, leverage=12):
    """设置12倍杠杆"""
    client.set_leverage(
        category="linear",
        symbol=symbol,
        buyLeverage=str(leverage),
        sellLeverage=str(leverage)
    )

def open_new_position(symbol, action):
    """开新仓(多/空)"""
    side = "Buy" if action == "long" else "Sell"
    # 自定义下单量,根据你的资金规模调整
    qty = "0.001"  # BTCUSDT示例下单量,可修改
    client.place_order(
        category="linear",
        symbol=symbol,
        side=side,
        orderType="Market",
        qty=qty
    )

@app.route('/webhook', methods=['POST'])
def handle_webhook():
    data = request.get_json()
    action = data.get('action')
    symbol = data.get('symbol')
    if not action or not symbol:
        return "Invalid request data", 400
    
    # 执行交易流程:平仓→调杠杆→开新仓
    close_existing_position(symbol)
    set_leverage(symbol)
    open_new_position(symbol, action)
    
    return "Trade executed successfully", 200

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

3. 配置API密钥

创建.env文件,存储你的Bybit API密钥(需开启交易权限):

BYBIT_API_KEY=你的Bybit API密钥
BYBIT_API_SECRET=你的Bybit API密钥

三、关键注意事项

  • API权限:Bybit API密钥必须开启“交易”权限,且妥善保管,避免泄露
  • 测试优先:先用Bybit测试网验证整个流程,确认逻辑无误后再切换实盘
  • 下单量调整:根据自身资金情况修改代码中的qty参数,避免过度仓位
  • 异常处理:可在代码中添加try-except块,处理API调用失败、网络异常等情况,比如:
try:
    close_existing_position(symbol)
except Exception as e:
    print(f"平仓失败: {e}")
  • 服务器部署:中间服务需要部署到公网可访问的服务器(比如VPS、Serverless函数),确保TradingView能发送请求到该接口

内容的提问来源于stack exchange,提问作者Bobby Heap

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 00:31:01