docs: Major documentation reorganization + ENV variable reference
**Documentation Structure:** - Created docs/ subdirectory organization (analysis/, architecture/, bugs/, cluster/, deployments/, roadmaps/, setup/, archived/) - Moved 68 root markdown files to appropriate categories - Root directory now clean (only README.md remains) - Total: 83 markdown files now organized by purpose **New Content:** - Added comprehensive Environment Variable Reference to copilot-instructions.md - 100+ ENV variables documented with types, defaults, purpose, notes - Organized by category: Required (Drift/RPC/Pyth), Trading Config (quality/ leverage/sizing), ATR System, Runner System, Risk Limits, Notifications, etc. - Includes usage examples (correct vs wrong patterns) **File Distribution:** - docs/analysis/ - Performance analyses, blocked signals, profit projections - docs/architecture/ - Adaptive leverage, ATR trailing, indicator tracking - docs/bugs/ - CRITICAL_*.md, FIXES_*.md bug reports (7 files) - docs/cluster/ - EPYC setup, distributed computing docs (3 files) - docs/deployments/ - *_COMPLETE.md, DEPLOYMENT_*.md status (12 files) - docs/roadmaps/ - All *ROADMAP*.md strategic planning files (7 files) - docs/setup/ - TradingView guides, signal quality, n8n setup (8 files) - docs/archived/2025_pre_nov/ - Obsolete verification checklist (1 file) **Key Improvements:** - ENV variable reference: Single source of truth for all configuration - Common Pitfalls #68-71: Already complete, verified during audit - Better findability: Category-based navigation vs 68 files in root - Preserves history: All files git mv (rename), not copy/delete - Zero broken functionality: Only documentation moved, no code changes **Verification:** - 83 markdown files now in docs/ subdirectories - Root directory cleaned: 68 files → 0 files (except README.md) - Git history preserved for all moved files - Container running: trading-bot-v4 (no restart needed) **Next Steps:** - Create README.md files in each docs subdirectory - Add navigation index - Update main README.md with new structure - Consolidate duplicate deployment docs - Archive truly obsolete files (old SQL backups) See: docs/analysis/CLEANUP_PLAN.md for complete reorganization strategy
This commit is contained in:
351
docs/setup/TRADINGVIEW_STEP_BY_STEP.md
Normal file
351
docs/setup/TRADINGVIEW_STEP_BY_STEP.md
Normal file
@@ -0,0 +1,351 @@
|
||||
# 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:**
|
||||
```bash
|
||||
# On your server, run:
|
||||
curl http://localhost:3001/api/trading/market-data
|
||||
```
|
||||
|
||||
**Expected response:**
|
||||
```json
|
||||
{"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
|
||||
|
||||
1. **Go to:** https://www.tradingview.com
|
||||
2. **Login** to your account
|
||||
3. **Click** on the chart icon or search bar at top
|
||||
4. **Type:** `SOLUSDT`
|
||||
5. **Click** on `SOLUSDT` from Binance (or your preferred exchange)
|
||||
6. **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
|
||||
|
||||
1. **Click** the **Alert icon** 🔔 in the right toolbar
|
||||
- Or press **ALT + A** on keyboard
|
||||
|
||||
2. A popup window opens titled "Create Alert"
|
||||
|
||||
---
|
||||
|
||||
## STEP 4: Configure Alert Condition
|
||||
|
||||
In the "Condition" section:
|
||||
|
||||
1. **First dropdown:** Select `time("1")`
|
||||
- Click the dropdown that says "Crossing" or whatever is there
|
||||
- **Type** in the search: `time`
|
||||
- Select: `time` → `time("1")`
|
||||
|
||||
2. **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
|
||||
|
||||
1. 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)*
|
||||
|
||||
2. **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):
|
||||
|
||||
```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
|
||||
|
||||
1. **Click** the blue **"Create"** button at bottom
|
||||
2. 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:**
|
||||
1. Search for `ETHUSDT`
|
||||
2. Set to 5-minute chart
|
||||
3. Create alert (ALT + A)
|
||||
4. Condition: `time("1") changes`
|
||||
5. Webhook URL: (same as SOL)
|
||||
6. Alert message: (same JSON as SOL)
|
||||
7. Alert name: `Market Data - ETH 5min`
|
||||
8. Frequency: Once Per Bar Close
|
||||
9. Create
|
||||
|
||||
**For BTC:**
|
||||
1. Search for `BTCUSDT`
|
||||
2. Set to 5-minute chart
|
||||
3. Create alert (ALT + A)
|
||||
4. Condition: `time("1") changes`
|
||||
5. Webhook URL: (same as SOL)
|
||||
6. Alert message: (same JSON as SOL)
|
||||
7. Alert name: `Market Data - BTC 5min`
|
||||
8. Frequency: Once Per Bar Close
|
||||
9. Create
|
||||
|
||||
---
|
||||
|
||||
## ✅ VERIFICATION (Wait 5 Minutes)
|
||||
|
||||
After creating alerts, **WAIT UP TO 5 MINUTES** for the next bar close.
|
||||
|
||||
Then run this on your server:
|
||||
```bash
|
||||
curl http://localhost:3001/api/trading/market-data
|
||||
```
|
||||
|
||||
**You should see:**
|
||||
```json
|
||||
{
|
||||
"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**
|
||||
```bash
|
||||
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?**
|
||||
```bash
|
||||
# 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:**
|
||||
1. ❌ Using "Once Per Bar" instead of "Once Per Bar Close"
|
||||
2. ❌ Alert message has extra spaces or missing brackets
|
||||
3. ❌ Webhook URL has typo or wrong port
|
||||
4. ❌ Alert is paused (not active)
|
||||
5. ❌ 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!** 🚀
|
||||
Reference in New Issue
Block a user