docs: CRITICAL - Document 1-minute webhook misconfiguration fix
Issue: 1-minute data alerts using wrong webhook (tradingview-bot-v4) Impact: Triggered Money Machine trading workflow every minute Solution: Need dedicated market_data_handler webhook Status: Alerts paused, awaiting correct webhook URL from n8n
This commit is contained in:
197
docs/CRITICAL_1MIN_WEBHOOK_FIX.md
Normal file
197
docs/CRITICAL_1MIN_WEBHOOK_FIX.md
Normal file
@@ -0,0 +1,197 @@
|
|||||||
|
# CRITICAL: 1-Minute Alert Webhook Fix
|
||||||
|
|
||||||
|
**Date:** November 27, 2025
|
||||||
|
**Issue:** 1-minute data alerts triggering actual trade executions
|
||||||
|
**Severity:** HIGH - Caused unintended real money trades
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Problem
|
||||||
|
|
||||||
|
The 1-minute market data alerts were configured with the **wrong webhook URL**, causing them to trigger the **Money Machine trading workflow** instead of just collecting data.
|
||||||
|
|
||||||
|
### Root Cause
|
||||||
|
|
||||||
|
- **Incorrect webhook:** `https://flow.egonetix.de/webhook/tradingview-bot-v4`
|
||||||
|
- **This webhook triggers:** Money Machine workflow (executes real trades)
|
||||||
|
- **Should trigger:** Market data collection workflow (data only, no trades)
|
||||||
|
|
||||||
|
### Impact
|
||||||
|
|
||||||
|
- 1-minute alerts fired every 60 seconds
|
||||||
|
- Each alert triggered Money Machine workflow
|
||||||
|
- Trading signals executed (SOL/ETH/BTC positions opened)
|
||||||
|
- **This was NOT the intended behavior** - should only collect market data
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Solution: Create Dedicated Market Data Webhook
|
||||||
|
|
||||||
|
### Option 1: Use n8n API to Create New Webhook (RECOMMENDED)
|
||||||
|
|
||||||
|
You need to create a **separate n8n workflow** with its own webhook path for market data collection.
|
||||||
|
|
||||||
|
**Steps:**
|
||||||
|
|
||||||
|
1. **Import the market_data_handler.json workflow to n8n:**
|
||||||
|
```bash
|
||||||
|
# The workflow file is ready at:
|
||||||
|
/home/icke/traderv4/workflows/trading/market_data_handler.json
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **In n8n UI:**
|
||||||
|
- Go to Workflows → Import from File
|
||||||
|
- Select `market_data_handler.json`
|
||||||
|
- **Activate the workflow**
|
||||||
|
|
||||||
|
3. **Get the webhook URL:**
|
||||||
|
- Open the imported workflow
|
||||||
|
- Click the "Webhook" node
|
||||||
|
- Copy the **Test URL** (will look like: `https://flow.egonetix.de/webhook/UNIQUE_ID`)
|
||||||
|
- This is your market data webhook URL
|
||||||
|
|
||||||
|
4. **Update TradingView alerts:**
|
||||||
|
- Edit SOL-PERP 1min Data Feed alert
|
||||||
|
- Change webhook from `tradingview-bot-v4` to the new URL
|
||||||
|
- Repeat for ETH-PERP and BTC-PERP alerts
|
||||||
|
|
||||||
|
### Option 2: Manual n8n Workflow Configuration
|
||||||
|
|
||||||
|
If importing doesn't work, create workflow manually:
|
||||||
|
|
||||||
|
1. **Create new workflow** in n8n: "Market Data Collection - 1min"
|
||||||
|
|
||||||
|
2. **Add Webhook node:**
|
||||||
|
- HTTP Method: POST
|
||||||
|
- Path: `market-data-1min` (custom unique path)
|
||||||
|
- Get the full webhook URL from n8n
|
||||||
|
|
||||||
|
3. **Add IF node: "Is 1min Data?"**
|
||||||
|
- Condition: `{{ $json.body.action }}` equals `market_data_1min`
|
||||||
|
|
||||||
|
4. **Add HTTP Request node: "Forward to Bot"**
|
||||||
|
- Method: POST
|
||||||
|
- URL: `http://trading-bot-v4:3000/api/trading/market-data`
|
||||||
|
- Send Body: JSON
|
||||||
|
- JSON Body: `{{ $json.body }}`
|
||||||
|
|
||||||
|
5. **Connect nodes:** Webhook → IF → HTTP Request
|
||||||
|
|
||||||
|
6. **Activate workflow**
|
||||||
|
|
||||||
|
7. **Copy webhook URL** from Webhook node
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Correct Webhook URLs
|
||||||
|
|
||||||
|
### Trading Execution (Money Machine)
|
||||||
|
```
|
||||||
|
https://flow.egonetix.de/webhook/tradingview-bot-v4
|
||||||
|
```
|
||||||
|
**Purpose:** Execute real trades (5min/15min signals)
|
||||||
|
**Used by:** Money Machine workflow
|
||||||
|
**Action:** Opens positions on Drift Protocol
|
||||||
|
|
||||||
|
### Market Data Collection (NEW - Needed)
|
||||||
|
```
|
||||||
|
https://flow.egonetix.de/webhook/UNIQUE_ID_HERE
|
||||||
|
```
|
||||||
|
**Purpose:** Collect 1-minute market data only
|
||||||
|
**Used by:** Market Data Handler workflow
|
||||||
|
**Action:** Updates cache, NO trades executed
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## TradingView Alert Configuration (CORRECTED)
|
||||||
|
|
||||||
|
### Alert Settings Tab
|
||||||
|
- **Condition:** "Money Line - 1min Data Feed" > "Any alert() function call"
|
||||||
|
- **Interval:** 1m
|
||||||
|
- **Expiration:** Open-ended
|
||||||
|
|
||||||
|
### Alert Message Tab
|
||||||
|
- **Alert name:** `SOL-PERP 1min Data Feed`
|
||||||
|
- **Message:** Leave blank (indicator sends JSON)
|
||||||
|
- **Webhook URL:** `https://flow.egonetix.de/webhook/NEW_MARKET_DATA_URL` ← **NOT tradingview-bot-v4!**
|
||||||
|
- ✅ Check "Webhook URL"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Verification After Fix
|
||||||
|
|
||||||
|
### 1. Check n8n Workflow Execution Count
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Market Data Handler should show 180 executions/hour (3 symbols × 60/hour)
|
||||||
|
# Money Machine should show 0 executions from 1-minute alerts
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Monitor Bot Logs
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker logs trading-bot-v4 -f | grep "Market data updated"
|
||||||
|
|
||||||
|
# Should see: "✅ Market data updated for SOL-PERP: ADX 26.5..."
|
||||||
|
# Should NOT see: "🎯 POSITION OPENED" from 1-minute alerts
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Check Open Positions
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Should see only legitimate trading signals (5min/15min charts)
|
||||||
|
# NOT 1-minute candle opens
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4. Verify Cache Updates
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl -s http://localhost:3001/api/trading/market-data | jq '.["SOL-PERP"]'
|
||||||
|
|
||||||
|
# Expected: Fresh data (<60s old), adx/atr/rsi values populated
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Prevention
|
||||||
|
|
||||||
|
**Before creating ANY new TradingView alert:**
|
||||||
|
|
||||||
|
1. ✅ Verify which webhook URL to use
|
||||||
|
2. ✅ Data collection = Market data webhook (NEW)
|
||||||
|
3. ✅ Trading signals = Money Machine webhook (tradingview-bot-v4)
|
||||||
|
4. ✅ Test with 1-2 alerts first before creating all 3 symbols
|
||||||
|
|
||||||
|
**Rule:** Different purposes = different webhooks!
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
1. **IMMEDIATE:** Delete or pause the 3 incorrectly configured 1-minute alerts in TradingView
|
||||||
|
2. **Import/Create** market data handler workflow in n8n (get unique webhook URL)
|
||||||
|
3. **Recreate alerts** with correct webhook URL
|
||||||
|
4. **Test** for 5-10 minutes (should see cache updates, NO trades)
|
||||||
|
5. **Validate** for 24 hours before considering it production-ready
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Files Affected
|
||||||
|
|
||||||
|
- `/home/icke/traderv4/docs/1MIN_ALERTS_SETUP.md` - Needs webhook URL correction
|
||||||
|
- `/home/icke/traderv4/workflows/trading/market_data_handler.json` - Import this to n8n
|
||||||
|
- TradingView alerts: SOL-PERP, ETH-PERP, BTC-PERP 1min Data Feed (need recreation)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Lesson Learned
|
||||||
|
|
||||||
|
**Always verify webhook routing before deploying alerts that fire every minute.**
|
||||||
|
|
||||||
|
With 180 alerts/hour, a misconfigured webhook can:
|
||||||
|
- Execute 180 unintended trades/hour
|
||||||
|
- Drain capital rapidly
|
||||||
|
- Create massive position exposure
|
||||||
|
- Trigger rate limits
|
||||||
|
|
||||||
|
**Test with 1 alert first, verify behavior, then scale to all symbols.**
|
||||||
Reference in New Issue
Block a user