Complete Webhook Trading Setup Guide
1. Pine Script Configuration
Enable Webhook Format in Your Script
1. Set Use Webhook Format to true
2. Configure your Account ID
3. Set the Symbol Override (use {{ticker}} for dynamic symbol)
JSON Alert Format
The script now sends structured JSON alerts:
json
{
"action": "buy|sell|close",
"symbol": "BTCUSD",
"price": 43250.50,
"stopLoss": 42800.00,
"takeProfit": 44200.00,
"quantity": 0.1,
"accountId": "YOUR_ACCOUNT_ID",
"strategy": "Bull_Unicorn|Bear_Unicorn",
"reason": "target_hit|stop_loss",
"timestamp": "1677123456789"
}
2. Webhook Receiver Options
Option A: 3Commas (Recommended for Beginners)
Pros: User-friendly, built-in risk management, supports multiple exchanges Cons: Monthly subscription
required
Setup Steps:
1. Create 3Commas account
2. Connect your exchange API
3. Create a new bot
4. Get webhook URL from bot settings
5. Use this format in TradingView alerts:
json
{
"message_type": "bot",
"bot_id": YOUR_BOT_ID,
"email_token": "YOUR_EMAIL_TOKEN",
"delay_seconds": 0,
"pair": "{{ticker}}",
"action": "{{[Link]}}"
}
Option B: TradingView to MT4/MT5
Use: Expert Advisors or webhook receivers Popular Tools:
TradingConnector
MT4/MT5 Webhook EA
Forex Trading Robot
Option C: Custom Webhook Server
Best for: Advanced users who want full control
3. Setting Up a Custom Webhook Server
Python Flask Example
python
from flask import Flask, request, jsonify
import json
import ccxt # For crypto exchanges
# import MetaTrader5 as mt5 # For MT5
app = Flask(__name__)
# Initialize your exchange (example with Binance)
exchange = [Link]({
'apiKey': 'your_api_key',
'secret': 'your_secret_key',
'sandbox': True, # Use testnet first
})
@[Link]('/webhook', methods=['POST'])
def webhook():
try:
data = request.get_json()
action = [Link]('action')
symbol = [Link]('symbol')
quantity = float([Link]('quantity', 0))
price = float([Link]('price', 0))
stop_loss = [Link]('stopLoss')
take_profit = [Link]('takeProfit')
if action == 'buy':
# Place buy order
order = exchange.create_market_buy_order(
symbol=symbol,
amount=quantity
)
# Set stop loss and take profit
if stop_loss:
exchange.create_stop_loss_order(
symbol=symbol,
amount=quantity,
price=stop_loss,
side='sell'
)
elif action == 'sell':
# Place sell order
order = exchange.create_market_sell_order(
symbol=symbol,
amount=quantity
)
elif action == 'close':
# Close existing position
# Implementation depends on your exchange
pass
return jsonify({"status": "success", "message": "Order executed"})
except Exception as e:
return jsonify({"status": "error", "message": str(e)}), 400
if __name__ == '__main__':
[Link](host='[Link]', port=80)
[Link] Express Example
javascript
const express = require('express');
const ccxt = require('ccxt');
const app = express();
[Link]([Link]());
const exchange = new [Link]({
'apiKey': 'your_api_key',
'secret': 'your_secret_key',
'sandbox': true, // Use testnet first
});
[Link]('/webhook', async (req, res) => {
try {
const { action, symbol, quantity, price, stopLoss, takeProfit } = [Link];
let order;
switch(action) {
case 'buy':
order = await [Link](symbol, quantity);
break;
case 'sell':
order = await [Link](symbol, quantity);
break;
case 'close':
// Close position logic
break;
}
[Link]({ status: 'success', order });
} catch (error) {
[Link](400).json({ status: 'error', message: [Link] });
}
});
[Link](3000, () => {
[Link]('Webhook server running on port 3000');
});
4. TradingView Alert Setup
Step-by-Step Alert Creation:
1. Add Script to Chart: Apply your modified Pine Script
2. Create Alert: Right-click chart → "Add Alert"
3. Configure Alert:
Condition: Your script name
Options: "Once Per Bar Close"
Message: Leave default (script handles the message)
Webhook URL: Your webhook endpoint
4. Test: Use paper trading first
Webhook URL Examples:
3Commas: [Link]
Custom Server: [Link]
Ngrok (for testing): [Link]
5. Risk Management & Safety
Essential Safety Measures:
1. Start with Paper Trading
2. Use Testnet/Sandbox for crypto exchanges
3. Set Position Size Limits
4. Implement IP Whitelisting
5. Use API Key Restrictions
6. Monitor Logs Constantly
Position Sizing Formula:
Position Size = Risk Amount / (Entry Price - Stop Loss Price)
Max Position = min(Calculated Size, Max Allowed Size)
Error Handling:
python
def safe_trade_execution(data):
try:
# Validate data
if not validate_signal(data):
return {"error": "Invalid signal"}
# Check account balance
if not sufficient_balance(data):
return {"error": "Insufficient balance"}
# Execute trade
result = execute_trade(data)
# Log trade
log_trade(data, result)
return result
except Exception as e:
log_error(e)
return {"error": str(e)}
6. Popular Trading Platforms & Integrations
Crypto Exchanges:
Binance: Direct API integration
Bybit: Webhook support
FTX: REST API (now closed)
Coinbase Pro: Advanced API
Forex Brokers:
MT4/MT5: Expert Advisors
cTrader: cBots
TradingView Broker: Direct integration
FXCM: REST API
Stock Brokers:
Interactive Brokers: TWS API
Alpaca: Commission-free API
TD Ameritrade: thinkorswim API
Schwab: API integration
7. Testing & Debugging
Testing Checklist:
Test webhook receives alerts
Verify JSON parsing
Check exchange connectivity
Test order placement
Verify stop loss/take profit
Test error handling
Monitor latency
Check position sizing
Common Issues & Solutions:
"Webhook not receiving alerts"
Check TradingView alert settings
Verify webhook URL is correct
Check server logs
Test with simple curl command
"Orders not executing"
Verify API credentials
Check symbol format (BTC/USDT vs BTCUSDT)
Ensure sufficient balance
Check exchange restrictions
"Wrong position sizes"
Verify quantity calculation
Check decimal places
Review exchange minimum sizes
Test position sizing formula
8. Monitoring & Maintenance
Essential Monitoring:
1. Server Uptime (99.9% target)
2. Alert Latency (<5 seconds)
3. Trade Execution Success Rate (>95%)
4. API Rate Limits
5. Account Balance Changes
Logging Best Practices:
python
import logging
[Link](level=[Link])
def log_trade(action, symbol, quantity, price):
[Link](f"TRADE: {action} {quantity} {symbol} @ {price}")
def log_error(error):
[Link](f"ERROR: {str(error)}")
9. Legal & Compliance
Important Considerations:
Check Local Regulations: Some regions restrict automated trading
Broker Terms: Ensure your broker allows automated trading
Tax Implications: Keep detailed trade logs for tax reporting
Risk Disclosure: Understand that automated trading carries risks
10. Next Steps
1. Set up the modified Pine Script with webhook format
2. Choose your trading platform (3Commas, custom server, etc.)
3. Create webhook endpoint
4. Test with paper trading
5. Start with small position sizes
6. Monitor and optimize
Remember: Always test thoroughly with paper trading before using real money!