Updated Parse Signal Enhanced node to extract indicator version from alerts: - Parses 'IND:v6' field from TradingView alert messages - Defaults to 'v5' if version field not present (backward compatible) - Passes indicatorVersion to Execute Trade endpoint Updated Execute Trade1 node to include indicatorVersion in API payload: - Added indicatorVersion field to JSON body - Backend can now track which indicator version generated each signal Backward Compatible: - Old alerts without IND: field will default to 'v5' - System works with or without version field - No breaking changes to existing alerts This enables version comparison analytics (v5 vs v6 performance) while maintaining compatibility with any alerts that don't include the version.
677 lines
20 KiB
JSON
677 lines
20 KiB
JSON
{
|
||
"name": "Money Machine",
|
||
"nodes": [
|
||
{
|
||
"parameters": {
|
||
"httpMethod": "POST",
|
||
"path": "tradingview-bot-v4",
|
||
"options": {}
|
||
},
|
||
"id": "c762618c-fac7-4689-9356-8a78fc7160a8",
|
||
"name": "Webhook",
|
||
"type": "n8n-nodes-base.webhook",
|
||
"typeVersion": 1,
|
||
"position": [
|
||
-1020,
|
||
660
|
||
],
|
||
"webhookId": "tradingview-bot-v4"
|
||
},
|
||
{
|
||
"parameters": {
|
||
"fields": {
|
||
"values": [
|
||
{
|
||
"name": "rawMessage",
|
||
"stringValue": "={{ $json.body }}"
|
||
},
|
||
{
|
||
"name": "symbol",
|
||
"stringValue": "={{ $json.body.match(/\\bSOL\\b/i) ? 'SOL-PERP' : ($json.body.match(/\\bBTC\\b/i) ? 'BTC-PERP' : ($json.body.match(/\\bETH\\b/i) ? 'ETH-PERP' : 'SOL-PERP')) }}"
|
||
},
|
||
{
|
||
"name": "direction",
|
||
"stringValue": "={{ $json.body.match(/\\b(sell|short)\\b/i) ? 'short' : 'long' }}"
|
||
},
|
||
{
|
||
"name": "timeframe",
|
||
"stringValue": "={{ $json.body.match(/\\.P\\s+(\\d+)/)?.[1] || '15' }}"
|
||
}
|
||
]
|
||
},
|
||
"options": {}
|
||
},
|
||
"id": "97d5b0ad-d078-411f-8f34-c9a81d18d921",
|
||
"name": "Parse Signal",
|
||
"type": "n8n-nodes-base.set",
|
||
"typeVersion": 3.2,
|
||
"position": [
|
||
-760,
|
||
580
|
||
]
|
||
},
|
||
{
|
||
"parameters": {
|
||
"conditions": {
|
||
"string": [
|
||
{
|
||
"value1": "={{ $json.timeframe }}",
|
||
"value2": "15"
|
||
}
|
||
]
|
||
}
|
||
},
|
||
"id": "2e0bf241-9fb6-40bd-89f6-2dceafe34ef9",
|
||
"name": "15min Chart Only?",
|
||
"type": "n8n-nodes-base.if",
|
||
"typeVersion": 1,
|
||
"position": [
|
||
-760,
|
||
260
|
||
]
|
||
},
|
||
{
|
||
"parameters": {
|
||
"method": "POST",
|
||
"url": "http://10.0.0.48:3001/api/trading/check-risk",
|
||
"authentication": "genericCredentialType",
|
||
"genericAuthType": "httpHeaderAuth",
|
||
"sendHeaders": true,
|
||
"headerParameters": {
|
||
"parameters": [
|
||
{
|
||
"name": "Authorization",
|
||
"value": "Bearer 2a344f0149442c857fb56c038c0c7d1b113883b830bec792c76f1e0efa15d6bb"
|
||
},
|
||
{
|
||
"name": "Content-Type",
|
||
"value": "application/json"
|
||
}
|
||
]
|
||
},
|
||
"sendBody": true,
|
||
"specifyBody": "json",
|
||
"jsonBody": "={\n \"symbol\": \"{{ $json.symbol }}\",\n \"direction\": \"{{ $json.direction }}\"\n}",
|
||
"options": {}
|
||
},
|
||
"id": "c1165de4-2095-4f5f-b9b1-18e76fd8c47b",
|
||
"name": "Check Risk",
|
||
"type": "n8n-nodes-base.httpRequest",
|
||
"typeVersion": 4,
|
||
"position": [
|
||
-280,
|
||
660
|
||
],
|
||
"credentials": {
|
||
"httpHeaderAuth": {
|
||
"id": "MATuNdkZclq5ISbr",
|
||
"name": "Header Auth account"
|
||
}
|
||
}
|
||
},
|
||
{
|
||
"parameters": {
|
||
"conditions": {
|
||
"boolean": [
|
||
{
|
||
"value1": "={{ $json.allowed }}",
|
||
"value2": true
|
||
}
|
||
]
|
||
}
|
||
},
|
||
"id": "b9fa2b47-2acd-4be0-9d50-3f0348e04ec6",
|
||
"name": "Risk Passed?",
|
||
"type": "n8n-nodes-base.if",
|
||
"typeVersion": 1,
|
||
"position": [
|
||
-120,
|
||
660
|
||
]
|
||
},
|
||
{
|
||
"parameters": {
|
||
"method": "POST",
|
||
"url": "http://10.0.0.48:3001/api/trading/execute",
|
||
"authentication": "genericCredentialType",
|
||
"genericAuthType": "httpHeaderAuth",
|
||
"sendHeaders": true,
|
||
"headerParameters": {
|
||
"parameters": [
|
||
{
|
||
"name": "Authorization",
|
||
"value": "Bearer 2a344f0149442c857fb56c038c0c7d1b113883b830bec792c76f1e0efa15d6bb"
|
||
},
|
||
{
|
||
"name": "Content-Type",
|
||
"value": "application/json"
|
||
}
|
||
]
|
||
},
|
||
"sendBody": true,
|
||
"specifyBody": "json",
|
||
"jsonBody": "={\n \"symbol\": \"{{ $('Parse Signal').item.json.symbol }}\",\n \"direction\": \"{{ $('Parse Signal').item.json.direction }}\",\n \"timeframe\": \"{{ $('Parse Signal').item.json.timeframe }}\",\n \"signalStrength\": \"strong\"\n}",
|
||
"options": {
|
||
"timeout": 120000
|
||
}
|
||
},
|
||
"id": "c2ec5f8c-42d1-414f-bdd6-0a440bc8fea9",
|
||
"name": "Execute Trade",
|
||
"type": "n8n-nodes-base.httpRequest",
|
||
"typeVersion": 4,
|
||
"position": [
|
||
60,
|
||
560
|
||
],
|
||
"credentials": {
|
||
"httpHeaderAuth": {
|
||
"id": "MATuNdkZclq5ISbr",
|
||
"name": "Header Auth account"
|
||
}
|
||
}
|
||
},
|
||
{
|
||
"parameters": {
|
||
"conditions": {
|
||
"boolean": [
|
||
{
|
||
"value1": "={{ $json.success }}",
|
||
"value2": true
|
||
}
|
||
]
|
||
}
|
||
},
|
||
"id": "16dbf434-a07c-4666-82f2-cdc8814fe216",
|
||
"name": "Trade Success?",
|
||
"type": "n8n-nodes-base.if",
|
||
"typeVersion": 1,
|
||
"position": [
|
||
260,
|
||
560
|
||
]
|
||
},
|
||
{
|
||
"parameters": {
|
||
"fields": {
|
||
"values": [
|
||
{
|
||
"name": "message",
|
||
"stringValue": "={{ `🟢 TRADE OPENED\n\n📊 Symbol: ${$('Parse Signal Enhanced').item.json.symbol}\n${$('Parse Signal Enhanced').item.json.direction === 'long' ? '📈' : '📉'} Direction: ${$('Parse Signal Enhanced').item.json.direction.toUpperCase()}\n\n💵 Position: $${$('Execute Trade1').item.json.positionSize}\n⚡ Leverage: ${$('Execute Trade1').item.json.leverage}x${$('Execute Trade1').item.json.qualityScore ? `\n\n⭐ Quality: ${$('Execute Trade1').item.json.qualityScore}/100` : ''}\n\n💰 Entry: $${$('Execute Trade1').item.json.entryPrice.toFixed(4)}\n🎯 TP1: $${$('Execute Trade1').item.json.takeProfit1.toFixed(4)} (${$('Execute Trade1').item.json.tp1Percent}%)\n🎯 TP2: $${$('Execute Trade1').item.json.takeProfit2.toFixed(4)} (${$('Execute Trade1').item.json.tp2Percent}%)\n🛑 SL: $${$('Execute Trade1').item.json.stopLoss.toFixed(4)} (${$('Execute Trade1').item.json.stopLossPercent}%)\n\n⏰ ${$now.setZone('Europe/Berlin').toFormat('HH:mm:ss')}\n✅ Position monitored` }}"
|
||
}
|
||
]
|
||
},
|
||
"options": {}
|
||
},
|
||
"id": "79ab6122-cbd3-4aac-97d7-6b54f64e29b5",
|
||
"name": "Format Success",
|
||
"type": "n8n-nodes-base.set",
|
||
"typeVersion": 3.2,
|
||
"position": [
|
||
460,
|
||
460
|
||
]
|
||
},
|
||
{
|
||
"parameters": {
|
||
"fields": {
|
||
"values": [
|
||
{
|
||
"name": "message",
|
||
"stringValue": "=🔴 TRADE FAILED\n\n{{ $('Parse Signal Enhanced')').item.json.rawMessage }}\n\n❌ Error: {{ $json.error || $json.message }}\n⏰ {{ $now.setZone('Europe/Berlin').toFormat('HH:mm') }}"
|
||
}
|
||
]
|
||
},
|
||
"options": {}
|
||
},
|
||
"id": "41a0a8be-5004-4e6d-bdc5-9c7edf04eb51",
|
||
"name": "Format Error",
|
||
"type": "n8n-nodes-base.set",
|
||
"typeVersion": 3.2,
|
||
"position": [
|
||
460,
|
||
660
|
||
]
|
||
},
|
||
{
|
||
"parameters": {
|
||
"fields": {
|
||
"values": [
|
||
{
|
||
"name": "message",
|
||
"stringValue": "={{ '⚠️ TRADE BLOCKED\\n\\n' + $('Parse Signal Enhanced').item.json.rawMessage + '\\n\\n🛑 Reason: ' + $json.reason + '\\n📋 Details: ' + ($json.details || 'N/A') + '\\n\\n📊 Quality Score: ' + ($json.qualityScore || 'N/A') + '/100' + ($json.qualityReasons && $json.qualityReasons.length > 0 ? '\\n⚠️ Issues:\\n • ' + $json.qualityReasons.join('\\n • ') : '') + '\\n\\n⏰ ' + $now.setZone('Europe/Berlin').toFormat('HH:mm:ss') }}"
|
||
}
|
||
]
|
||
},
|
||
"options": {}
|
||
},
|
||
"id": "da462967-0548-4d57-a6de-cb783c96ac07",
|
||
"name": "Format Risk",
|
||
"type": "n8n-nodes-base.set",
|
||
"typeVersion": 3.2,
|
||
"position": [
|
||
60,
|
||
760
|
||
]
|
||
},
|
||
{
|
||
"parameters": {
|
||
"chatId": "579304651",
|
||
"text": "={{ $json.message }}",
|
||
"additionalFields": {
|
||
"appendAttribution": false
|
||
}
|
||
},
|
||
"id": "254280fd-f547-4302-97a5-30b44d851e12",
|
||
"name": "Telegram Success",
|
||
"type": "n8n-nodes-base.telegram",
|
||
"typeVersion": 1.1,
|
||
"position": [
|
||
660,
|
||
460
|
||
],
|
||
"credentials": {
|
||
"telegramApi": {
|
||
"id": "Csk5cg4HtaSqP5jJ",
|
||
"name": "Telegram account"
|
||
}
|
||
}
|
||
},
|
||
{
|
||
"parameters": {
|
||
"chatId": "579304651",
|
||
"text": "={{ $json.message }}",
|
||
"additionalFields": {
|
||
"appendAttribution": false
|
||
}
|
||
},
|
||
"id": "4ea066c9-4971-408f-b6e2-7d704c13ef55",
|
||
"name": "Telegram Error",
|
||
"type": "n8n-nodes-base.telegram",
|
||
"typeVersion": 1.1,
|
||
"position": [
|
||
660,
|
||
660
|
||
],
|
||
"credentials": {
|
||
"telegramApi": {
|
||
"id": "Csk5cg4HtaSqP5jJ",
|
||
"name": "Telegram account"
|
||
}
|
||
}
|
||
},
|
||
{
|
||
"parameters": {
|
||
"chatId": "579304651",
|
||
"text": "={{ $json.message }}",
|
||
"additionalFields": {
|
||
"appendAttribution": false
|
||
}
|
||
},
|
||
"id": "ee6be7be-1735-4fa3-bd33-6b3fde9414d3",
|
||
"name": "Telegram Risk",
|
||
"type": "n8n-nodes-base.telegram",
|
||
"typeVersion": 1.1,
|
||
"position": [
|
||
260,
|
||
760
|
||
],
|
||
"credentials": {
|
||
"telegramApi": {
|
||
"id": "Csk5cg4HtaSqP5jJ",
|
||
"name": "Telegram account"
|
||
}
|
||
}
|
||
},
|
||
{
|
||
"parameters": {
|
||
"conditions": {
|
||
"string": [
|
||
{
|
||
"value1": "={{ $json.timeframe }}",
|
||
"value2": "5"
|
||
}
|
||
]
|
||
}
|
||
},
|
||
"id": "8c680565-120d-47dc-83b2-58dcd397168b",
|
||
"name": "5min Chart Only?1",
|
||
"type": "n8n-nodes-base.if",
|
||
"typeVersion": 1,
|
||
"position": [
|
||
-500,
|
||
660
|
||
]
|
||
},
|
||
{
|
||
"parameters": {
|
||
"chatId": "579304651",
|
||
"text": "={{ $json.rawMessage }}",
|
||
"additionalFields": {
|
||
"appendAttribution": false
|
||
}
|
||
},
|
||
"id": "a63da8d2-e255-4933-9fba-a1999d2da31e",
|
||
"name": "Trend Signal",
|
||
"type": "n8n-nodes-base.telegram",
|
||
"typeVersion": 1.1,
|
||
"position": [
|
||
-260,
|
||
860
|
||
],
|
||
"credentials": {
|
||
"telegramApi": {
|
||
"id": "Csk5cg4HtaSqP5jJ",
|
||
"name": "Telegram account"
|
||
}
|
||
}
|
||
},
|
||
{
|
||
"parameters": {
|
||
"jsCode": "// Get the body - it might be a string or nested in an object\nlet body = $json.body || $json.query?.body || JSON.stringify($json);\n\n// If body is an object, stringify it\nif (typeof body === 'object') {\n body = JSON.stringify(body);\n}\n\n// Parse basic signal (existing logic)\nconst symbolMatch = body.match(/\\b(SOL|BTC|ETH)/i);\nconst symbol = symbolMatch ? symbolMatch[1].toUpperCase() + '-PERP' : 'SOL-PERP';\n\nconst direction = body.match(/\\b(sell|short)\\b/i) ? 'short' : 'long';\n\n// Updated regex to match new format: \"ETH buy 15\" (no .P)\nconst timeframeMatch = body.match(/\\b(buy|sell)\\s+(\\d+|D|W|M)\\b/i);\nconst timeframe = timeframeMatch ? timeframeMatch[2] : '5';\n\n// Parse new context metrics from enhanced format:\n// \"ETH buy 15 | ATR:1.85 | ADX:28.3 | RSI:62.5 | VOL:1.45 | POS:75.3 | IND:v6\"\nconst atrMatch = body.match(/ATR:([\\d.]+)/);\nconst atr = atrMatch ? parseFloat(atrMatch[1]) : 0;\n\nconst adxMatch = body.match(/ADX:([\\d.]+)/);\nconst adx = adxMatch ? parseFloat(adxMatch[1]) : 0;\n\nconst rsiMatch = body.match(/RSI:([\\d.]+)/);\nconst rsi = rsiMatch ? parseFloat(rsiMatch[1]) : 0;\n\nconst volumeMatch = body.match(/VOL:([\\d.]+)/);\nconst volumeRatio = volumeMatch ? parseFloat(volumeMatch[1]) : 0;\n\nconst pricePositionMatch = body.match(/POS:([\\d.]+)/);\nconst pricePosition = pricePositionMatch ? parseFloat(pricePositionMatch[1]) : 0;\n\n// Parse indicator version (optional, backward compatible)\nconst indicatorVersionMatch = body.match(/IND:(v\\d+)/);\nconst indicatorVersion = indicatorVersionMatch ? indicatorVersionMatch[1] : 'v5';\n\nreturn {\n rawMessage: body,\n symbol,\n direction,\n timeframe,\n // Context fields\n atr,\n adx,\n rsi,\n volumeRatio,\n pricePosition,\n // Version tracking (defaults to v5 for backward compatibility)\n indicatorVersion\n};"
|
||
},
|
||
"id": "81f28bc7-c96a-4021-acac-242e993d9d98",
|
||
"name": "Parse Signal Enhanced",
|
||
"type": "n8n-nodes-base.code",
|
||
"typeVersion": 2,
|
||
"position": [
|
||
-740,
|
||
860
|
||
]
|
||
},
|
||
{
|
||
"parameters": {
|
||
"chatId": "579304651",
|
||
"text": "={{ $json.rawMessage }}",
|
||
"additionalFields": {
|
||
"appendAttribution": false
|
||
}
|
||
},
|
||
"id": "fa3a214c-9f30-4f2d-b727-68ba1877e4c8",
|
||
"name": "Trend Signal1",
|
||
"type": "n8n-nodes-base.telegram",
|
||
"typeVersion": 1.1,
|
||
"position": [
|
||
-500,
|
||
860
|
||
],
|
||
"credentials": {
|
||
"telegramApi": {
|
||
"id": "Csk5cg4HtaSqP5jJ",
|
||
"name": "Telegram account"
|
||
}
|
||
}
|
||
},
|
||
{
|
||
"parameters": {
|
||
"method": "POST",
|
||
"url": "http://10.0.0.48:3001/api/trading/execute",
|
||
"authentication": "genericCredentialType",
|
||
"genericAuthType": "httpHeaderAuth",
|
||
"sendHeaders": true,
|
||
"headerParameters": {
|
||
"parameters": [
|
||
{
|
||
"name": "Authorization",
|
||
"value": "Bearer 2a344f0149442c857fb56c038c0c7d1b113883b830bec792c76f1e0efa15d6bb"
|
||
},
|
||
{
|
||
"name": "Content-Type",
|
||
"value": "application/json"
|
||
}
|
||
]
|
||
},
|
||
"sendBody": true,
|
||
"specifyBody": "json",
|
||
"jsonBody": "={\n \"symbol\": \"{{ $('Parse Signal Enhanced').item.json.symbol }}\",\n \"direction\": \"{{ $('Parse Signal Enhanced').item.json.direction }}\",\n \"timeframe\": \"{{ $('Parse Signal Enhanced').item.json.timeframe }}\",\n \"signalStrength\": \"{{ $('Parse Signal Enhanced').item.json.signalStrength }}\",\n \"atr\": {{ $('Parse Signal Enhanced').item.json.atr }},\n \"adx\": {{ $('Parse Signal Enhanced').item.json.adx }},\n \"rsi\": {{ $('Parse Signal Enhanced').item.json.rsi }},\n \"volumeRatio\": {{ $('Parse Signal Enhanced').item.json.volumeRatio }},\n \"pricePosition\": {{ $('Parse Signal Enhanced').item.json.pricePosition }},\n \"indicatorVersion\": \"{{ $('Parse Signal Enhanced').item.json.indicatorVersion }}\"\n}",
|
||
"options": {
|
||
"timeout": 120000
|
||
}
|
||
},
|
||
"id": "9902ecc4-53b0-402f-8db9-6248e6077740",
|
||
"name": "Execute Trade1",
|
||
"type": "n8n-nodes-base.httpRequest",
|
||
"typeVersion": 4,
|
||
"position": [
|
||
60,
|
||
240
|
||
],
|
||
"credentials": {
|
||
"httpHeaderAuth": {
|
||
"id": "MATuNdkZclq5ISbr",
|
||
"name": "Header Auth account"
|
||
}
|
||
}
|
||
},
|
||
{
|
||
"parameters": {
|
||
"method": "POST",
|
||
"url": "http://10.0.0.48:3001/api/trading/check-risk",
|
||
"authentication": "genericCredentialType",
|
||
"genericAuthType": "httpHeaderAuth",
|
||
"sendHeaders": true,
|
||
"headerParameters": {
|
||
"parameters": [
|
||
{
|
||
"name": "Authorization",
|
||
"value": "Bearer 2a344f0149442c857fb56c038c0c7d1b113883b830bec792c76f1e0efa15d6bb"
|
||
},
|
||
{
|
||
"name": "Content-Type",
|
||
"value": "application/json"
|
||
}
|
||
]
|
||
},
|
||
"sendBody": true,
|
||
"specifyBody": "json",
|
||
"jsonBody": "={\n \"symbol\": \"{{ $json.symbol }}\",\n \"direction\": \"{{ $json.direction }}\",\n \"timeframe\": \"{{ $json.timeframe }}\",\n \"atr\": {{ $json.atr || 0 }},\n \"adx\": {{ $json.adx || 0 }},\n \"rsi\": {{ $json.rsi || 0 }},\n \"volumeRatio\": {{ $json.volumeRatio || 0 }},\n \"pricePosition\": {{ $json.pricePosition || 0 }}\n}",
|
||
"options": {}
|
||
},
|
||
"id": "55671044-c7c8-4566-b271-9369a1c43158",
|
||
"name": "Check Risk1",
|
||
"type": "n8n-nodes-base.httpRequest",
|
||
"typeVersion": 4,
|
||
"position": [
|
||
-280,
|
||
240
|
||
],
|
||
"credentials": {
|
||
"httpHeaderAuth": {
|
||
"id": "MATuNdkZclq5ISbr",
|
||
"name": "Header Auth account"
|
||
}
|
||
}
|
||
},
|
||
{
|
||
"parameters": {
|
||
"path": "c034de5f-bcd5-4470-a193-8a16fbfb73eb",
|
||
"options": {}
|
||
},
|
||
"id": "ff525977-6e95-4e45-b742-cedb5f36b4b4",
|
||
"name": "Webhook1",
|
||
"type": "n8n-nodes-base.webhook",
|
||
"typeVersion": 1,
|
||
"position": [
|
||
-1020,
|
||
860
|
||
],
|
||
"webhookId": "c034de5f-bcd5-4470-a193-8a16fbfb73eb"
|
||
}
|
||
],
|
||
"pinData": {},
|
||
"connections": {
|
||
"Webhook": {
|
||
"main": [
|
||
[
|
||
{
|
||
"node": "Parse Signal Enhanced",
|
||
"type": "main",
|
||
"index": 0
|
||
}
|
||
]
|
||
]
|
||
},
|
||
"Parse Signal": {
|
||
"main": [
|
||
[
|
||
{
|
||
"node": "5min Chart Only?1",
|
||
"type": "main",
|
||
"index": 0
|
||
}
|
||
]
|
||
]
|
||
},
|
||
"Check Risk": {
|
||
"main": [
|
||
[
|
||
{
|
||
"node": "Risk Passed?",
|
||
"type": "main",
|
||
"index": 0
|
||
}
|
||
]
|
||
]
|
||
},
|
||
"Risk Passed?": {
|
||
"main": [
|
||
[
|
||
{
|
||
"node": "Execute Trade1",
|
||
"type": "main",
|
||
"index": 0
|
||
}
|
||
],
|
||
[
|
||
{
|
||
"node": "Format Risk",
|
||
"type": "main",
|
||
"index": 0
|
||
}
|
||
]
|
||
]
|
||
},
|
||
"Execute Trade": {
|
||
"main": [
|
||
[
|
||
{
|
||
"node": "Trade Success?",
|
||
"type": "main",
|
||
"index": 0
|
||
}
|
||
]
|
||
]
|
||
},
|
||
"Trade Success?": {
|
||
"main": [
|
||
[
|
||
{
|
||
"node": "Format Success",
|
||
"type": "main",
|
||
"index": 0
|
||
}
|
||
],
|
||
[
|
||
{
|
||
"node": "Format Error",
|
||
"type": "main",
|
||
"index": 0
|
||
}
|
||
]
|
||
]
|
||
},
|
||
"Format Success": {
|
||
"main": [
|
||
[
|
||
{
|
||
"node": "Telegram Success",
|
||
"type": "main",
|
||
"index": 0
|
||
}
|
||
]
|
||
]
|
||
},
|
||
"Format Error": {
|
||
"main": [
|
||
[
|
||
{
|
||
"node": "Telegram Error",
|
||
"type": "main",
|
||
"index": 0
|
||
}
|
||
]
|
||
]
|
||
},
|
||
"Format Risk": {
|
||
"main": [
|
||
[
|
||
{
|
||
"node": "Telegram Risk",
|
||
"type": "main",
|
||
"index": 0
|
||
}
|
||
]
|
||
]
|
||
},
|
||
"5min Chart Only?1": {
|
||
"main": [
|
||
[
|
||
{
|
||
"node": "Check Risk1",
|
||
"type": "main",
|
||
"index": 0
|
||
}
|
||
],
|
||
[
|
||
{
|
||
"node": "Trend Signal",
|
||
"type": "main",
|
||
"index": 0
|
||
}
|
||
]
|
||
]
|
||
},
|
||
"Parse Signal Enhanced": {
|
||
"main": [
|
||
[
|
||
{
|
||
"node": "5min Chart Only?1",
|
||
"type": "main",
|
||
"index": 0
|
||
}
|
||
]
|
||
]
|
||
},
|
||
"Execute Trade1": {
|
||
"main": [
|
||
[
|
||
{
|
||
"node": "Trade Success?",
|
||
"type": "main",
|
||
"index": 0
|
||
}
|
||
]
|
||
]
|
||
},
|
||
"Check Risk1": {
|
||
"main": [
|
||
[
|
||
{
|
||
"node": "Risk Passed?",
|
||
"type": "main",
|
||
"index": 0
|
||
}
|
||
]
|
||
]
|
||
}
|
||
},
|
||
"active": true,
|
||
"settings": {
|
||
"executionOrder": "v1"
|
||
},
|
||
"versionId": "955bd768-0c3b-490a-9c6b-5c01bc2f6d44",
|
||
"id": "gUDqTiHyHSfRUXv6",
|
||
"meta": {
|
||
"instanceId": "e766d4f0b5def8ee8cb8561cd9d2b9ba7733e1907990b6987bca40175f82c379"
|
||
},
|
||
"tags": []
|
||
} |