- Fix external closure P&L using tp1Hit flag instead of currentSize - Add direction change detection to prevent false TP1 on signal flips - Signal flips now recorded with accurate P&L as 'manual' exits - Add retry logic with exponential backoff for Solana RPC rate limits - Create /api/trading/cancel-orders endpoint for manual cleanup - Improves data integrity for win/loss statistics
8.3 KiB
TradingView Alert Setup - Step-by-Step Guide
🎯 Goal
Create 3 alerts that send market data to your trading bot every 5 minutes.
STEP 1: Find Your Webhook URL
First, we need to know where to send the data.
Check if your bot is accessible:
# On your server, run:
curl http://localhost:3001/api/trading/market-data
Expected response:
{"success":true,"availableSymbols":[],"count":0,"cache":{}}
Your webhook URL will be ONE of these:
http://YOUR-SERVER-IP:3001/api/trading/market-data(if port 3001 is open)https://YOUR-DOMAIN.COM:3001/api/trading/market-data(if you have a domain)https://flow.egonetix.de/webhook/market-data(if using n8n as proxy)
Write down your URL here:
My webhook URL: ________________________________
STEP 2: Open TradingView and Go to SOL Chart
- Go to: https://www.tradingview.com
- Login to your account
- Click on the chart icon or search bar at top
- Type:
SOLUSDT - Click on
SOLUSDTfrom Binance (or your preferred exchange) - Set timeframe to 5 minutes (click "5" in the top toolbar)
You should now see: A 5-minute chart of SOLUSDT
STEP 3: Create Alert
-
Click the Alert icon 🔔 in the right toolbar
- Or press ALT + A on keyboard
-
A popup window opens titled "Create Alert"
STEP 4: Configure Alert Condition
In the "Condition" section:
-
First dropdown: Select
time("1")- Click the dropdown that says "Crossing" or whatever is there
- Type in the search:
time - Select:
time→time("1")
-
Second dropdown: Select
changes- This should appear automatically after selecting time("1")
- If not, select "changes" from the dropdown
What you should see:
time("1") changes
This means: "Alert fires when time changes" = every bar close
STEP 5: Set Alert Actions (IMPORTANT!)
Scroll down to the "Notifications" section:
UNCHECK everything EXCEPT:
- ✅ Webhook URL (leave this CHECKED)
UNCHECK these:
- ❌ Notify on app
- ❌ Show popup
- ❌ Send email
- ❌ Play sound
We ONLY want webhook!
STEP 6: Enter Webhook URL
-
In the Webhook URL field, paste your URL from Step 1:
http://YOUR-SERVER-IP:3001/api/trading/market-data(Replace with your actual URL)
-
Click in the field to make sure it's saved
STEP 7: Configure Alert Message (COPY-PASTE THIS)
Scroll to the "Alert message" box.
DELETE everything in that box.
PASTE this EXACTLY (copy the entire JSON):
{
"action": "market_data",
"symbol": "{{ticker}}",
"timeframe": "{{interval}}",
"atr": {{ta.atr(14)}},
"adx": {{ta.dmi(14, 14)}},
"rsi": {{ta.rsi(14)}},
"volumeRatio": {{volume / ta.sma(volume, 20)}},
"pricePosition": {{(close - ta.lowest(low, 100)) / (ta.highest(high, 100) - ta.lowest(low, 100)) * 100}},
"currentPrice": {{close}}
}
IMPORTANT: Make sure:
- No spaces added/removed
- The
{{double brackets are kept - No missing commas
- No extra text
STEP 8: Set Alert Name and Frequency
Alert name:
Market Data - SOL 5min
Frequency section:
- Select: "Once Per Bar Close"
- NOT "Only Once"
- NOT "Once Per Bar"
- Must be "Once Per Bar Close"
Expiration:
- Select: "Never" or "Open-ended"
Show popup / Name on chart:
- You can uncheck these (optional)
STEP 9: Create the Alert
- Click the blue "Create" button at bottom
- Alert is now active! ✅
You should see it in your alerts list (🔔 icon in right panel)
STEP 10: Repeat for ETH and BTC
Now do the EXACT same steps for:
For ETH:
- Search for
ETHUSDT - Set to 5-minute chart
- Create alert (ALT + A)
- Condition:
time("1") changes - Webhook URL: (same as SOL)
- Alert message: (same JSON as SOL)
- Alert name:
Market Data - ETH 5min - Frequency: Once Per Bar Close
- Create
For BTC:
- Search for
BTCUSDT - Set to 5-minute chart
- Create alert (ALT + A)
- Condition:
time("1") changes - Webhook URL: (same as SOL)
- Alert message: (same JSON as SOL)
- Alert name:
Market Data - BTC 5min - Frequency: Once Per Bar Close
- Create
✅ VERIFICATION (Wait 5 Minutes)
After creating alerts, WAIT UP TO 5 MINUTES for the next bar close.
Then run this on your server:
curl http://localhost:3001/api/trading/market-data
You should see:
{
"success": true,
"availableSymbols": ["SOL-PERP", "ETH-PERP", "BTC-PERP"],
"count": 3,
"cache": {
"SOL-PERP": {
"atr": 0.45,
"adx": 32.1,
"rsi": 58.3,
"volumeRatio": 1.25,
"pricePosition": 55.2,
"ageSeconds": 23
},
...
}
}
If you see this → SUCCESS! ✅
🐛 Troubleshooting
Problem: Still shows empty cache after 10 minutes
Check 1: Are alerts active?
- Click 🔔 icon in TradingView
- Look for your 3 alerts
- They should say "Active" (not paused)
Check 2: Is webhook URL correct?
- Click on an alert to edit it
- Check the Webhook URL field
- No typos? Correct port (3001)?
Check 3: Check bot logs
docker logs -f trading-bot-v4
Wait for next bar close and watch for incoming requests.
You should see:
POST /api/trading/market-data
✅ Market data cached for SOL-PERP
Check 4: Is port 3001 open?
# From another machine or phone:
curl http://YOUR-SERVER-IP:3001/api/trading/market-data
If this fails, port 3001 might be blocked by firewall.
Check 5: TradingView plan supports webhooks?
- Free plan: NO webhooks ❌
- Pro plan: YES ✅
- Pro+ plan: YES ✅
- Premium: YES ✅
If you have Free plan, you need to upgrade to Pro ($14.95/month).
📸 Visual Guide
Where is the Alert icon?
TradingView Chart:
┌─────────────────────────────────────┐
│ [Chart toolbar at top] │
│ │
│ [Chart area] 🔔 ← Alert icon (right side)
│ │
│ │
└─────────────────────────────────────┘
What the Alert popup looks like:
┌─ Create Alert ────────────────┐
│ │
│ Condition: │
│ [time("1")] [changes] │
│ │
│ Notifications: │
│ ✅ Webhook URL │
│ [http://your-url...] │
│ │
│ Alert message: │
│ [{"action":"market_data",...}]│
│ │
│ Alert name: │
│ [Market Data - SOL 5min] │
│ │
│ Frequency: │
│ [Once Per Bar Close] │
│ │
│ [Create] │
└───────────────────────────────┘
🎬 Quick Recap
You need to create 3 alerts total:
| Symbol | Chart | Alert Name | Frequency |
|---|---|---|---|
| SOLUSDT | 5-minute | Market Data - SOL 5min | Once Per Bar Close |
| ETHUSDT | 5-minute | Market Data - ETH 5min | Once Per Bar Close |
| BTCUSDT | 5-minute | Market Data - BTC 5min | Once Per Bar Close |
All 3 use:
- Same webhook URL
- Same alert message (the JSON)
- Same condition:
time("1") changes - Same frequency: Once Per Bar Close
After 5 minutes:
- Check cache is populated
- Test with Telegram:
long sol
❓ Still Stuck?
Common mistakes:
- ❌ Using "Once Per Bar" instead of "Once Per Bar Close"
- ❌ Alert message has extra spaces or missing brackets
- ❌ Webhook URL has typo or wrong port
- ❌ Alert is paused (not active)
- ❌ Free TradingView plan (needs Pro for webhooks)
Need help?
- Show me a screenshot of your alert configuration
- Show me the output of
docker logs trading-bot-v4 - Show me the output of
curl http://localhost:3001/api/trading/market-data
Once alerts are working, you're ready to run the SQL analysis! 🚀