# n8n Workflow Documentation - Money Machine **Last Updated:** January 1, 2025 **Workflow ID:** gUDqTiHyHSfRUXv6 **Status:** ✅ ACTIVE in Production ## Overview The Money Machine workflow is the core automation pipeline connecting TradingView alerts to the Trading Bot v4 system. It handles signal parsing, risk validation, trade execution, and Telegram notifications. --- ## n8n Access Credentials ### REST API (for programmatic access) ```bash # API Endpoint https://flow.egonetix.de/api/v1/ # API Key (X-N8N-API-KEY header) eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI1NzIxYWQ0OC03NDFjLTRmMDMtOWUxNS0zNDc4MTNiZDJhNmUiLCJpc3MiOiJuOG4iLCJhdWQiOiJwdWJsaWMtYXBpIiwiaWF0IjoxNzY1NjQxNTgzfQ.qcDc8W21GqG4jlfju3IOYlntAiBBfDCfA9tZh4TBNHQ ``` ### MCP Server (for AI/IDE integration) ```json { "mcpServers": { "n8n-mcp": { "command": "npx", "args": [ "-y", "supergateway", "--streamableHttp", "https://flow.egonetix.de/mcp-server/http", "--header", "authorization:Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI1NzIxYWQ0OC03NDFjLTRmMDMtOWUxNS0zNDc4MTNiZDJhNmUiLCJpc3MiOiJuOG4iLCJhdWQiOiJtY3Atc2VydmVyLWFwaSIsImp0aSI6IjQ2MTQ0ZTNjLWEwMjctNDBiMS1iNTA0LTBhMGRlOGMzNWY4MiIsImlhdCI6MTc2NzI3NzkyOX0.49H7R-GijkrI-Ygthxjq7XowEVkFP8GiN2_SQbRcoBo" ] } } } ``` ### Example API Calls ```bash # List all workflows curl -s -X GET "https://flow.egonetix.de/api/v1/workflows" \ -H "X-N8N-API-KEY: " # Get specific workflow curl -s -X GET "https://flow.egonetix.de/api/v1/workflows/gUDqTiHyHSfRUXv6" \ -H "X-N8N-API-KEY: " # Get workflow executions curl -s -X GET "https://flow.egonetix.de/api/v1/executions?workflowId=gUDqTiHyHSfRUXv6" \ -H "X-N8N-API-KEY: " ``` --- ## Money Machine Workflow Structure ### Workflow Metadata | Property | Value | |----------|-------| | ID | gUDqTiHyHSfRUXv6 | | Name | Money Machine | | Active | ✅ true | | Node Count | 12 | | Version ID | 955bd768-0c3b-490a-9c6b-5c01bc2f6d44 | ### Node List (12 nodes) 1. **Webhook** - Entry point for TradingView alerts 2. **Parse Signal Enhanced** - JavaScript code to parse signal format 3. **Check Risk1** - HTTP POST to `/api/trading/check-risk` 4. **Risk Passed?** - Boolean condition on `allowed` field 5. **Execute Trade1** - HTTP POST to `/api/trading/execute` 6. **Trade Success?** - Boolean condition on `success` field 7. **Format Success** - Format success message for Telegram 8. **Format Error** - Format error message for Telegram 9. **Format Risk** - Format blocked trade message 10. **Telegram Success** - Send success notification 11. **Telegram Error** - Send error notification 12. **Telegram Risk** - Send blocked trade notification --- ## Signal Flow ``` ┌─────────────────────────────────────────────────────────────────────────────────┐ │ MONEY MACHINE WORKFLOW │ ├─────────────────────────────────────────────────────────────────────────────────┤ │ │ │ TradingView Alert │ │ │ │ │ ▼ │ │ ┌──────────┐ │ │ │ Webhook │ POST /webhook/tradingview-bot-v4 │ │ └────┬─────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────────────┐ │ │ │ Parse Signal Enhanced │ Extract: symbol, direction, timeframe, │ │ │ (JavaScript Code) │ atr, adx, rsi, volumeRatio, pricePosition, │ │ └──────────┬──────────────┘ indicatorVersion, indicatorScore │ │ │ │ │ ▼ │ │ ┌─────────────────────────┐ │ │ │ Check Risk1 │ POST http://10.0.0.48:3001/api/trading/check-risk │ │ │ (HTTP Request) │ Body: {symbol, direction, timeframe, metrics...} │ │ └──────────┬──────────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────────────┐ TRUE: allowed=true │ │ │ Risk Passed? ├──────────────────────────┐ │ │ │ (IF Condition) │ │ │ │ └──────────┬──────────────┘ │ │ │ │ FALSE: allowed=false │ │ │ ▼ ▼ │ │ ┌───────────────┐ ┌────────────────────────────┐ │ │ │ Format Risk │ │ Execute Trade1 │ │ │ │ (Set Node) │ │ POST /api/trading/execute │ │ │ └───────┬───────┘ │ Timeout: 120s │ │ │ │ └────────────┬───────────────┘ │ │ ▼ │ │ │ ┌────────────────────┐ ▼ │ │ │ Check Skip │ ┌──────────────────────────┐ │ │ │ Notification │ │ Trade Success? │ │ │ └───────┬────────────┘ │ (IF Condition) │ │ │ │ Skip=false └─────┬──────────┬─────────┘ │ │ ▼ TRUE │ │ FALSE │ │ ┌───────────────┐ ┌──────────────┘ └────────────┐ │ │ │ Telegram Risk │ ▼ ▼ │ │ └───────────────┘ ┌────────────────┐ ┌────────────────┐ │ │ │ Format Success │ │ Format Error │ │ │ └───────┬────────┘ └───────┬────────┘ │ │ ▼ ▼ │ │ ┌──────────────────┐ ┌──────────────────┐ │ │ │ Telegram Success │ │ Telegram Error │ │ │ └──────────────────┘ └──────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────────────────────┘ ``` --- ## Node Details ### 1. Webhook - **Type:** n8n-nodes-base.webhook - **Path:** `tradingview-bot-v4` - **Full URL:** `https://flow.egonetix.de/webhook/tradingview-bot-v4` - **Method:** POST - **Purpose:** Entry point for all TradingView alerts ### 2. Parse Signal Enhanced - **Type:** n8n-nodes-base.code (JavaScript) - **Purpose:** Parse TradingView alert message into structured data **Input Format:** ``` SOL buy 5 | ATR:0.65 | ADX:14.3 | RSI:51.3 | VOL:0.87 | POS:59.3 | IND:v8 | SCORE:100 ``` **Output Fields:** ```javascript { rawMessage: "original message", symbol: "SOL-PERP", // Extracted and normalized direction: "long", // "buy" → "long", "sell/short" → "short" timeframe: "5", // Chart timeframe atr: 0.65, // Average True Range adx: 14.3, // ADX trend strength rsi: 51.3, // Relative Strength Index volumeRatio: 0.87, // Volume vs 20-period SMA pricePosition: 59.3, // Price position in 100-bar range (0-100) indicatorVersion: "v8", // TradingView indicator version indicatorScore: 100 // Quality score from indicator (optional) } ``` **Symbol Mapping:** - `SOL` → `SOL-PERP` - `BTC` → `BTC-PERP` - `ETH` → `ETH-PERP` - `FARTCOIN` or `FART` → `FARTCOIN-PERP` ### 3. Check Risk1 - **Type:** n8n-nodes-base.httpRequest - **Method:** POST - **URL:** `http://10.0.0.48:3001/api/trading/check-risk` - **Authentication:** Bearer token **Request Body:** ```json { "symbol": "SOL-PERP", "direction": "long", "timeframe": "5", "atr": 0.65, "adx": 14.3, "rsi": 51.3, "volumeRatio": 0.87, "pricePosition": 59.3 } ``` **Expected Response:** ```json { "allowed": true, "reason": "signal passed quality check", "qualityScore": 95 } ``` ### 4. Risk Passed? (IF Condition) - **Type:** n8n-nodes-base.if - **Condition:** `{{ $json.allowed }}` equals `true` - **TRUE branch:** → Execute Trade1 - **FALSE branch:** → Format Risk ### 5. Execute Trade1 - **Type:** n8n-nodes-base.httpRequest - **Method:** POST - **URL:** `http://10.0.0.48:3001/api/trading/execute` - **Timeout:** 120,000ms (2 minutes) - **Authentication:** Bearer token **Request Body:** ```json { "symbol": "{{ $('Parse Signal Enhanced').item.json.symbol }}", "direction": "{{ $('Parse Signal Enhanced').item.json.direction }}", "timeframe": "{{ $('Parse Signal Enhanced').item.json.timeframe }}", "atr": {{ $('Parse Signal Enhanced').item.json.atr }}, "adx": {{ $('Parse Signal Enhanced').item.json.adx }}, "rsi": {{ $('Parse Signal Enhanced').item.json.rsi }}, "volumeRatio": {{ $('Parse Signal Enhanced').item.json.volumeRatio }}, "pricePosition": {{ $('Parse Signal Enhanced').item.json.pricePosition }}, "indicatorVersion": "{{ $('Parse Signal Enhanced').item.json.indicatorVersion }}", "signalPrice": {{ $('Parse Signal Enhanced').item.json.pricePosition }}, "indicatorScore": {{ $('Parse Signal Enhanced').item.json.indicatorScore || 'null' }} } ``` ### 6. Trade Success? (IF Condition) - **Type:** n8n-nodes-base.if - **Condition:** `{{ $json.success }}` equals `true` - **TRUE branch:** → Format Success - **FALSE branch:** → Format Error ### 7-9. Format Nodes (Set) Format messages for Telegram notifications based on trade outcome. ### 10-12. Telegram Nodes - **Type:** n8n-nodes-base.telegram - **Chat ID:** 579304651 - **Credential:** "Telegram account" (ID: Csk5cg4HtaSqP5jJ) --- ## Internal API Configuration ### Bot API Base URL ``` http://10.0.0.48:3001 ``` ### API Endpoints Used | Endpoint | Method | Purpose | |----------|--------|---------| | `/api/trading/check-risk` | POST | Validate signal quality before execution | | `/api/trading/execute` | POST | Execute trade on Drift Protocol | ### Authentication Token ``` Bearer 2a344f0149442c857fb56c038c0c7d1b113883b830bec792c76f1e0efa15d6bb ``` --- ## Other n8n Workflows Besides Money Machine, the following workflows exist on the n8n instance: | ID | Name | Status | |----|------|--------| | gUDqTiHyHSfRUXv6 | Money Machine | ✅ Active | | Various | Telegram Bot with AI | Active | | Various | Telegram Bot Simple (x2) | Active | | Various | Telegram Router Direct (x2) | Active | --- ## Local Workflow Files Location: `/home/icke/traderv4/workflows/trading/` | File | Purpose | |------|---------| | `Money_Machine.json` | Main workflow (current) | | `Money_Machine_backup.json` | Backup copy | | `Money_Machine_backup_2.json` | Secondary backup | | `parse_signal_enhanced.json` | Standalone signal parser | | `market_data_forwarder.json` | Market data handling | | `market_data_handler.json` | Market data processing | --- ## Indicator Score Bypass (v11.2+) As of Dec 26, 2025, the v11.2 indicator sends `SCORE:100` in alerts to bypass bot quality scoring: **Signal Format:** ``` SOL buy 5 | ATR:0.65 | ADX:14.3 | RSI:51.3 | VOL:0.87 | POS:59.3 | IND:v11.2 | SCORE:100 ``` **Parse Logic (added to Parse Signal Enhanced):** ```javascript const scoreMatch = body.match(/SCORE:(\d+)/); const indicatorScore = scoreMatch ? parseInt(scoreMatch[1]) : null; ``` **Bot Behavior:** - If `indicatorScore >= 90`: Bypasses quality check entirely - Rationale: v11.2 indicator already filters to profitable setups (PF 2.617) --- ## Troubleshooting ### Common Issues 1. **Signal not executing:** - Check Risk1 response - verify `allowed: true` - Check quality score meets threshold (LONG ≥90, SHORT ≥80) - Verify symbol is enabled in bot config 2. **Telegram notification missing:** - Check "Check Skip Notification" node conditions - Verify Telegram credentials still valid 3. **Timeout on Execute Trade1:** - 120s timeout may be insufficient for slow Drift responses - Check Drift RPC endpoint health ### Debug Steps ```bash # Get recent executions curl -s -X GET "https://flow.egonetix.de/api/v1/executions?workflowId=gUDqTiHyHSfRUXv6&limit=5" \ -H "X-N8N-API-KEY: " | jq '.[].status' # Check workflow is active curl -s -X GET "https://flow.egonetix.de/api/v1/workflows/gUDqTiHyHSfRUXv6" \ -H "X-N8N-API-KEY: " | jq '.active' ``` --- ## Modification Guide ### To Update Workflow via API: ```bash # Export modified workflow JSON, then: curl -X PUT "https://flow.egonetix.de/api/v1/workflows/gUDqTiHyHSfRUXv6" \ -H "X-N8N-API-KEY: " \ -H "Content-Type: application/json" \ -d @Money_Machine.json ``` ### To Update via UI: 1. Open https://flow.egonetix.de 2. Navigate to Money Machine workflow 3. Edit nodes as needed 4. Save workflow 5. Export updated JSON to `/home/icke/traderv4/workflows/trading/Money_Machine.json` --- ## Version History | Date | Change | Commit | |------|--------|--------| | Dec 26, 2025 | Added indicatorScore parsing for v11.2 bypass | ba1fe44 | | Dec 7, 2025 | Fixed symbol normalization for FARTCOIN | - | | Nov 27, 2025 | Added MA crossover detection flags | - | | Nov 19, 2025 | Enhanced timeframe parsing | - |