- 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
128 lines
3.6 KiB
Markdown
128 lines
3.6 KiB
Markdown
# TradingView Alert - EASIEST METHOD
|
|
|
|
Since you don't have "time()" in the condition dropdown, we'll use a **Pine Script indicator** instead. This is actually easier!
|
|
|
|
---
|
|
|
|
## STEP 1: Add the Pine Script Indicator
|
|
|
|
1. **On your SOLUSDT 5-minute chart**, click the **Pine Editor** button at bottom
|
|
- Or go to: Pine Editor tab at the bottom of the screen
|
|
|
|
2. **Delete everything** in the editor
|
|
|
|
3. **Copy and paste** this entire script:
|
|
|
|
```pinescript
|
|
//@version=5
|
|
indicator("Market Data Alert", overlay=false)
|
|
|
|
// Calculate metrics
|
|
atr_value = ta.atr(14)
|
|
adx_value = ta.dmi(14, 14)
|
|
rsi_value = ta.rsi(close, 14)
|
|
volume_ratio = volume / ta.sma(volume, 20)
|
|
price_position = (close - ta.lowest(low, 100)) / (ta.highest(high, 100) - ta.lowest(low, 100)) * 100
|
|
|
|
// Plot something so indicator appears
|
|
plot(1, "Signal", color=color.green)
|
|
|
|
// Alert condition
|
|
alertcondition(true, title="Market Data", message='{"action":"market_data","symbol":"{{ticker}}","timeframe":"{{interval}}","atr":' + str.tostring(atr_value) + ',"adx":' + str.tostring(adx_value) + ',"rsi":' + str.tostring(rsi_value) + ',"volumeRatio":' + str.tostring(volume_ratio) + ',"pricePosition":' + str.tostring(price_position) + ',"currentPrice":' + str.tostring(close) + '}')
|
|
```
|
|
|
|
4. **Click "Save"** button
|
|
- Name it: `Market Data Alert`
|
|
|
|
5. **Click "Add to Chart"** button
|
|
|
|
You should now see a new indicator panel at the bottom of your chart.
|
|
|
|
---
|
|
|
|
## STEP 2: Create the Alert (NOW IT'S EASY!)
|
|
|
|
1. **Right-click** on the indicator name in the legend (where it says "Market Data Alert")
|
|
|
|
2. **Select "Add Alert on Market Data Alert"**
|
|
|
|
OR
|
|
|
|
1. **Click the Alert icon** 🔔 (or press ALT + A)
|
|
|
|
2. **In the Condition dropdown**, you should now see:
|
|
- **"Market Data Alert"** → Select this
|
|
- Then select: **"Market Data"** (the alert condition name)
|
|
|
|
3. **Settings section:**
|
|
|
|
| Setting | Value |
|
|
|---------|-------|
|
|
| **Webhook URL** | `http://10.0.0.48:3001/api/trading/market-data` |
|
|
| **Alert name** | `Market Data - SOL 5min` |
|
|
| **Frequency** | **Once Per Bar Close** |
|
|
| **Expiration** | Never |
|
|
|
|
4. **Notifications:**
|
|
- ✅ **Webhook URL** (ONLY this one checked)
|
|
- ❌ Uncheck everything else
|
|
|
|
5. **Alert message:**
|
|
- **Leave it as default** (the script handles the message)
|
|
- OR if there's a message field, it should already have the JSON
|
|
|
|
6. **Click "Create"**
|
|
|
|
---
|
|
|
|
## STEP 3: Repeat for ETH and BTC
|
|
|
|
1. **Open ETHUSDT 5-minute chart**
|
|
2. **Add the same indicator** (Pine Editor → paste script → Save → Add to Chart)
|
|
3. **Create alert** on the indicator
|
|
4. **Webhook URL:** `http://10.0.0.48:3001/api/trading/market-data`
|
|
5. **Name:** `Market Data - ETH 5min`
|
|
|
|
Repeat for **BTCUSDT**.
|
|
|
|
---
|
|
|
|
## ✅ VERIFY (Wait 5 Minutes)
|
|
|
|
```bash
|
|
curl http://localhost:3001/api/trading/market-data
|
|
```
|
|
|
|
Should show all 3 symbols with fresh data.
|
|
|
|
---
|
|
|
|
## 🎯 Why This Method is Better
|
|
|
|
- ✅ **Works on all TradingView plans** (that support indicators)
|
|
- ✅ **Easier to set up** (no complex condition configuration)
|
|
- ✅ **Message is built-in** (less copy-paste errors)
|
|
- ✅ **Visual feedback** (shows metrics on chart)
|
|
- ✅ **Reusable** (same indicator for all symbols)
|
|
|
|
---
|
|
|
|
## 🐛 Troubleshooting
|
|
|
|
**"Pine Editor not available"**
|
|
- You need TradingView Pro/Premium for custom scripts
|
|
- Alternative: Use the "Crossing" method below
|
|
|
|
**Alternative without Pine Script:**
|
|
1. **Condition:** Price
|
|
2. **Trigger:** Crossing up
|
|
3. **Value:** Any value
|
|
4. **Check:** "Only once per bar close"
|
|
5. **Message:** Use the JSON from `QUICK_SETUP_CARD.md`
|
|
|
|
This will fire less frequently but still works.
|
|
|
|
---
|
|
|
|
**Try the Pine Script method first - it's the cleanest solution!** 🚀
|