- Changed hardcoded 'SOLUSDT' to syminfo.ticker
- Enables FARTCOIN, SOL, and other assets to use same script
- Script now auto-detects chart symbol (SOLUSDT, FARTCOINUSDT, etc.)
- CRITICAL: Must update PineScript in TradingView for both SOL and FARTCOIN alerts
PROBLEM:
- Logs showing wrong prices: $30-43 when SOL actually at $141-144
- Webhook message missing close price field
- Bot falling back to RSI/ATR values (30-40 range)
ROOT CAUSE:
- TradingView indicator sending: 'SOLUSDT buy 1 | ATR:X | ADX:Y...'
- No @ price field in message
- n8n couldn't extract signalPrice, bot used wrong fallback
SOLUTION:
- Added close price to webhook format
- New format: 'SOLUSDT buy 1 @ 143.50 | ATR:X | ADX:Y...'
- Matches main trading signal format (v9 uses same pattern)
IMPACT:
- Logs will now show correct SOL price ($141-144)
- Database signalPrice field accurate
- BlockedSignalTracker can calculate correct P&L movements
FILES CHANGED:
- workflows/trading/moneyline_1min_data_feed.pinescript
User deployed updated indicator to TradingView ✅
Next 1-minute alert will show correct price
Now follows same pattern as 15min/1H/Daily data collection:
- Sends trading signal format: 'SOLUSDT buy 1 | ATR:X | ADX:Y...'
- Bot's execute endpoint filters by timeframe='1' (no trades executed)
- Saves to BlockedSignal table for analysis
- Uses SAME webhook as trading signals (no separate webhook needed)
This is simpler than separate market_data endpoint approach.
Bot already handles this pattern for multi-timeframe data collection.
Pine Script alertcondition() requires const string (no variables allowed)
Switched to alert() function which supports series string (dynamic values)
Changes:
- Removed alertcondition(), added if barstate.isconfirmed + alert()
- Build JSON message with all metrics dynamically
- alert.freq_once_per_bar ensures one alert per candle close
- Now includes all required fields: atr, adx, rsi, volumeRatio, pricePosition, maGap
Alert setup in TradingView:
1. Add indicator to 1-minute chart
2. Create alert on indicator
3. Condition: 'alert() function calls' (not alertcondition)
4. Frequency: Once Per Bar Close
5. Message: Use {{strategy.order.alert_message}} or leave blank
alertcondition() message parameter must be const string, not series
Use TradingView placeholders for dynamic values:
- {{ticker}} for symbol
- {{close}} for current price
- {{plot_0}} for ATR (first plot)
- {{plot_1}} for ADX (second plot - from hline, not plot call)
Wait, ADX IS plotted on line 23, so {{plot_0}} should work
Let me reconsider the approach...
- Created Pine Script indicator: moneyline_1min_data_feed.pinescript
* Calculates ADX, ATR, RSI, volumeRatio, pricePosition, MA gap
* Sends JSON with action="market_data_1min" every bar close
* Uses same metrics as v9 indicator for consistency
* Alert fires every 1 minute on 1-min chart
- Created setup guide: docs/1MIN_ALERTS_SETUP.md
* Step-by-step TradingView alert configuration (SOL/ETH/BTC)
* Alert slot usage: 3 needed, 16 remaining free (no upgrade needed)
* n8n workflow validation steps (already has Is 1min Data? condition)
* 24-48 hour testing procedures
* Troubleshooting guide for common issues
* Integration plan for ADX validation in revenge system
- Verified n8n workflow ready:
* market_data_handler.json has "Is 1min Data?" condition (checks action === market_data_1min)
* Forwards to http://trading-bot-v4:3000/api/trading/market-data
* Responds with {success: true, cached: true}
* NO workflow changes needed - infrastructure already prepared
Alert volume: 180/hour (60 per symbol) = 129,600/month
Storage impact: 19.44 MB/month (negligible)
Cost: $0/month (no TradingView upgrade required)
Ready to implement - user can create alerts immediately
Next: Validate 24-48 hours, then integrate ADX confirmation in revenge system