Files
trading_bot_v4/docs/1MIN_DATA_COLLECTION_SIMPLE.md
mindesbunister 649628a5c2 docs: Add simplified 1-minute data collection guide
Key insight: 1-min collection uses SAME pattern as 15min/1H/Daily
- Same webhook (tradingview-bot-v4)
- Same workflow (Money Machine)
- Bot filters by timeframe='1' → saves to BlockedSignal
- No separate infrastructure needed

User was right - it's not different, just needed same format!
2025-11-27 09:31:12 +01:00

201 lines
5.2 KiB
Markdown

# 1-Minute Market Data Collection - Simple Setup
**Date:** November 27, 2025
**Status:** CORRECTED - Uses same webhook as trading signals
---
## Summary
1-minute data collection **uses the same workflow** as 15min/1H/Daily data collection:
- Same webhook URL as trading signals (`tradingview-bot-v4`)
- Same n8n workflow (Money Machine)
- Bot filters by `timeframe="1"` and saves to BlockedSignal (no trades executed)
**No separate webhook needed!** 🎉
---
## Pine Script Indicator
**File:** `/home/icke/traderv4/workflows/trading/moneyline_1min_data_feed.pinescript`
**Alert message format:**
```
SOLUSDT buy 1 | ATR:0.43 | ADX:25.8 | RSI:58.2 | VOL:1.15 | POS:62.4 | IND:v9
```
**Key:** `timeframe="1"` tells bot this is data collection only
---
## TradingView Alert Setup
### 1. Add Indicator to Chart
- Chart: SOL-PERP, ETH-PERP, or BTC-PERP
- Timeframe: **1 minute**
- Add indicator: "Money Line - 1min Data Feed"
### 2. Create Alert
**Settings Tab:**
- Condition: "Money Line - 1min Data Feed" > "Any alert() function call"
- Interval: **1m**
- Expiration: Open-ended
**Message Tab:**
- Alert name: `SOL-PERP 1min Data Feed`
- Message: Leave blank
- Webhook URL: `https://flow.egonetix.de/webhook/tradingview-bot-v4`
- ✅ Check "Webhook URL"
### 3. Repeat for All Symbols
- SOL-PERP 1min Data Feed (SOLUSDT.P chart)
- ETH-PERP 1min Data Feed (ETHUSDT chart)
- BTC-PERP 1min Data Feed (BTCUSDT chart)
---
## How It Works
```
TradingView Alert (1min candle close)
"SOLUSDT buy 1 | ATR:0.43 | ADX:25.8..."
Webhook: tradingview-bot-v4 (SAME as trading signals)
n8n: Parse Signal Enhanced
Extracts: timeframe="1", symbol="SOL-PERP", metrics...
n8n: Check Risk → Execute Trade
Bot: /api/trading/execute
if (timeframe !== '5') {
// DATA COLLECTION PATH (same as 15min/1H/Daily)
await createBlockedSignal({
blockReason: 'DATA_COLLECTION_ONLY',
timeframe: '1',
atr, adx, rsi, volumeRatio, pricePosition
})
return { success: true, dataCollection: true }
}
n8n: Receives success=true (no trade notification)
Bot: BlockedSignal table updated
```
**Result:** Market data cached, no trade executed ✅
---
## Verification
### 1. Check BlockedSignal Table
```bash
docker exec trading-bot-postgres psql -U postgres -d trading_bot_v4 -c "
SELECT
symbol, direction, timeframe,
TO_CHAR(\"createdAt\", 'MM-DD HH24:MI:SS') as time,
\"signalQualityScore\" as score,
blockReason
FROM \"BlockedSignal\"
WHERE timeframe = '1'
ORDER BY \"createdAt\" DESC
LIMIT 10;
"
```
**Expected:** Entries with `timeframe='1'`, `blockReason='DATA_COLLECTION_ONLY'`
### 2. Check Bot Logs
```bash
docker logs trading-bot-v4 -f | grep "DATA COLLECTION"
# Expected: "📊 DATA COLLECTION: 1min signal from SOL-PERP, saving for analysis"
```
### 3. Verify Cache Updates
```bash
docker logs trading-bot-v4 -f | grep "Market data auto-cached"
# Expected: "📊 Market data auto-cached for SOL-PERP from trade signal"
```
### 4. Confirm No Trades Executed
```bash
docker logs trading-bot-v4 -f | grep "POSITION OPENED"
# Should NOT see entries from 1-minute alerts
# Only 5-minute trading signals should open positions
```
---
## Expected Behavior
### Data Frequency
- **Per Symbol:** 60 signals/hour = 1,440/day
- **Total (3 symbols):** 180 signals/hour = 4,320/day
- **Storage:** ~10-15 KB/signal in BlockedSignal table
### No Separate Webhook Needed
- 15min signals: `buy 15` → timeframe="15" → Data collection ✅
- 1H signals: `buy 60` → timeframe="60" → Data collection ✅
- 1min signals: `buy 1` → timeframe="1" → Data collection ✅
- 5min signals: `buy 5` → timeframe="5" → **Execute trade**
All use the **same webhook**! Bot routes by timeframe.
---
## Comparison: Old vs New Approach
### ❌ Old (Overcomplicated)
- Separate `market_data_handler.json` workflow
- Different webhook URL: `webhook/UNIQUE_ID`
- JSON format: `{"action":"market_data_1min",...}`
- Requires n8n workflow import/configuration
### ✅ New (Simple)
- Uses existing Money Machine workflow
- Same webhook: `webhook/tradingview-bot-v4`
- Text format: `SOLUSDT buy 1 | ATR:0.43...`
- Already configured - just create alerts!
---
## Benefits
1. **No n8n changes needed** - Uses existing workflow
2. **No separate webhook** - Same as trading signals
3. **Consistent pattern** - Same as 15min/1H/Daily
4. **Simpler setup** - Just create TradingView alerts
5. **Same monitoring** - BlockedSignal table + bot logs
---
## Next Steps
1. ✅ Update Pine Script indicator (DONE - commit cb02976)
2. Copy/paste new indicator code to TradingView
3. Create 3 alerts (SOL/ETH/BTC) with webhook `tradingview-bot-v4`
4. Monitor logs for 10 minutes (verify data collection, no trades)
5. Check BlockedSignal table for `timeframe='1'` entries
---
## Files Changed
- `/home/icke/traderv4/workflows/trading/moneyline_1min_data_feed.pinescript` - Changed to trading signal format
- Git commit: cb02976 "fix: Change 1-min indicator to use trading signal format"
---
## Key Takeaway
**You were right!** 1-minute data collection is **NOT different** from 15min/1H/Daily. The bot already handles this pattern perfectly - we just needed to use the same format. No separate infrastructure needed! 🎉