docs: Document n8n symbol normalization architecture and FARTCOIN fix
- Discovered that n8n normalizes symbols BEFORE sending to bot - Bot normalization code is never used (symbols already in *-PERP format) - Adding new symbols requires updating n8n workflow, not bot code - FARTCOIN fix applied to workflows/trading/parse_signal_enhanced.json - User must import updated workflow to n8n for FARTCOIN to work
This commit is contained in:
18
.github/copilot-instructions.md
vendored
18
.github/copilot-instructions.md
vendored
@@ -2502,8 +2502,24 @@ TradingView alert → n8n Parse Signal Enhanced (extracts metrics + timeframe +
|
||||
↓ positionManager.addTrade() [ONLY after DB save succeeds - prevents unprotected positions]
|
||||
```
|
||||
|
||||
**n8n Parse Signal Enhanced Workflow (Nov 27, 2025):**
|
||||
**n8n Parse Signal Enhanced Workflow (Nov 27, 2025 - Updated Dec 7, 2025):**
|
||||
- **File:** `workflows/trading/parse_signal_enhanced.json`
|
||||
- **CRITICAL: Symbol Normalization Happens HERE (Dec 7, 2025 discovery):**
|
||||
- TradingView sends raw symbol (SOLUSDT, FARTCOIN, etc.)
|
||||
- n8n extracts symbol from message body and normalizes to Drift format (*-PERP)
|
||||
- Bot receives ALREADY NORMALIZED symbols (SOL-PERP, FARTCOIN-PERP)
|
||||
- **Bot normalization code is NOT used** - n8n does it first
|
||||
- **To add new symbols:** Update n8n workflow regex + mapping logic, then import to n8n
|
||||
- **Symbol Extraction Regex (Dec 7, 2025):**
|
||||
```javascript
|
||||
const symbolMatch = body.match(/\b(FARTCOIN|FART|SOL|BTC|ETH)\b/i);
|
||||
// CRITICAL: FARTCOIN checked BEFORE SOL (substring match issue)
|
||||
if (matched === 'FARTCOIN' || matched === 'FART') {
|
||||
symbol = 'FARTCOIN-PERP';
|
||||
} else {
|
||||
symbol = matched + '-PERP'; // SOL → SOL-PERP, BTC → BTC-PERP, etc.
|
||||
}
|
||||
```
|
||||
- **Extracts from TradingView alerts:**
|
||||
- Standard metrics: symbol, direction, timeframe, ATR, ADX, RSI, VOL, POS, MAGAP, signalPrice, indicatorVersion
|
||||
- **MA Crossover Detection (NEW):** `isMACrossover`, `isDeathCross`, `isGoldenCross` flags
|
||||
|
||||
Reference in New Issue
Block a user