AutomationFlowsAI & RAG › Generate Stock Trading Signals with Gemini 2.5 Pro & Twelvedata via Telegram Bot

Generate Stock Trading Signals with Gemini 2.5 Pro & Twelvedata via Telegram Bot

ByMalik Hashir @malikx on n8n.io

This n8n workflow template creates an intelligent stock technical analysis system that delivers professional-grade trading signals directly to your Telegram. Designed for retail traders, investors, and financial professionals who want to combine technical analysis with…

Event trigger★★★★★ complexityAI-powered36 nodesHTTP RequestOutput Parser StructuredMemory Buffer WindowGoogle Gemini ChatTelegram TriggerAgentTelegram
AI & RAG Trigger: Event Nodes: 36 Complexity: ★★★★★ AI nodes: yes Added:

This workflow corresponds to n8n.io template #9015 — we link there as the canonical source.

This workflow follows the Agent → HTTP Request recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "2336bfd7-77f6-45e0-848e-c1aef2470b78",
      "name": "Real Time Price",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        624,
        240
      ],
      "parameters": {},
      "typeVersion": 4.2
    },
    {
      "id": "41c14484-9ba8-4db5-a023-dda9f24db01e",
      "name": "Merge1",
      "type": "n8n-nodes-base.merge",
      "position": [
        1104,
        -640
      ],
      "parameters": {},
      "typeVersion": 3.1
    },
    {
      "id": "74d5469b-252a-4b58-8f0b-244e9c1c45b2",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        2464,
        -336
      ],
      "parameters": {},
      "typeVersion": 1.2
    },
    {
      "id": "4f2068dd-9b5d-48df-9e4e-92e10df58efd",
      "name": "Simple Memory",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        2240,
        -336
      ],
      "parameters": {},
      "typeVersion": 1.3
    },
    {
      "id": "ba1c4ade-05ca-4687-9911-14d8e1a4d203",
      "name": "Google Gemini Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        1968,
        -304
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "40de62de-c2c9-4dac-bb14-1ffeac4e89d8",
      "name": "Telegram Trigger",
      "type": "n8n-nodes-base.telegramTrigger",
      "position": [
        -1184,
        -480
      ],
      "parameters": {},
      "typeVersion": 1.2
    },
    {
      "id": "58420974-a4e0-4715-8a75-9d69e164ba92",
      "name": "EMA 50 - 1D",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        704,
        -784
      ],
      "parameters": {},
      "executeOnce": false,
      "retryOnFail": true,
      "typeVersion": 4.1,
      "alwaysOutputData": false,
      "waitBetweenTries": 5000
    },
    {
      "id": "3d56dde3-677e-471a-9713-3714447e6d31",
      "name": "EMA 200 -1D",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        704,
        -576
      ],
      "parameters": {},
      "executeOnce": false,
      "retryOnFail": true,
      "typeVersion": 4.1,
      "alwaysOutputData": false,
      "waitBetweenTries": 5000
    },
    {
      "id": "b0f0de9b-7337-45b0-a71c-34899a6d00b5",
      "name": "RSI -1D",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        704,
        -384
      ],
      "parameters": {},
      "typeVersion": 4.1
    },
    {
      "id": "de4b171d-9a98-4ada-b321-bcd9a9209641",
      "name": "ATR -1D",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        704,
        -160
      ],
      "parameters": {},
      "executeOnce": false,
      "retryOnFail": true,
      "typeVersion": 4.1,
      "alwaysOutputData": false,
      "waitBetweenTries": 5000
    },
    {
      "id": "40e0245d-6787-4bba-9673-f55978398cd4",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1520,
        -1504
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "52dbac73-cb72-43b6-8234-9993a68f113d",
      "name": "Add Twelve Data API Key",
      "type": "n8n-nodes-base.set",
      "position": [
        -256,
        -480
      ],
      "parameters": {},
      "typeVersion": 3.4
    },
    {
      "id": "d767045a-604f-4051-beb8-ac8f068ca31a",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        432,
        -944
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "8138c180-2447-4795-b516-6954999e2d34",
      "name": "Wait -65s",
      "type": "n8n-nodes-base.wait",
      "position": [
        512,
        -576
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "e158f50c-0a29-4acf-8211-dc19ac6ae06e",
      "name": "Wait1 -65s",
      "type": "n8n-nodes-base.wait",
      "position": [
        528,
        -160
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "8ee5fc6c-c606-48eb-9d6b-b57e414f527a",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        432,
        -1312
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "b8ec4952-d9fc-41d0-9810-d9947b14a165",
      "name": "OHLC -1Day",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        496,
        -1168
      ],
      "parameters": {},
      "typeVersion": 4.1
    },
    {
      "id": "2122dd68-8954-43d6-a903-014f758808af",
      "name": "Calculate Support Resistance",
      "type": "n8n-nodes-base.code",
      "position": [
        704,
        -1168
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "e0f62383-7709-4c9e-831f-cce98314d583",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        432,
        96
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "61e73466-5a53-4b5c-bcfb-60afe8e4a937",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -736,
        -688
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "cff78e80-5206-442c-888e-7b50d1016284",
      "name": "Set Stock Ticker",
      "type": "n8n-nodes-base.set",
      "position": [
        -624,
        -480
      ],
      "parameters": {},
      "typeVersion": 3.4
    },
    {
      "id": "4dc67d77-0e44-4288-a26c-5264a30615ad",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -368,
        -688
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "930e82c3-253e-4c4b-a51b-2e291cddfda6",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1424,
        -688
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "b9839038-9591-4cd8-a5c0-b5ac43b39c25",
      "name": "Organizing Data",
      "type": "n8n-nodes-base.code",
      "position": [
        1376,
        -576
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "df616779-b01b-454f-814e-444e7a670f4c",
      "name": "Warp JSON",
      "type": "n8n-nodes-base.code",
      "position": [
        1552,
        -576
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "ad940cc8-4f11-43ce-8bb7-4bef8ebc4a7a",
      "name": "Technical Analysis Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        2080,
        -576
      ],
      "parameters": {},
      "retryOnFail": true,
      "typeVersion": 1.9
    },
    {
      "id": "85c39fa9-bbaf-41a9-9b20-c1aca7facd0f",
      "name": "Send Final Analysis",
      "type": "n8n-nodes-base.telegram",
      "position": [
        3136,
        -560
      ],
      "parameters": {},
      "typeVersion": 1.2
    },
    {
      "id": "dfe507b6-e1b1-4f45-be0c-7eb31831e09c",
      "name": "Send 1D Chart",
      "type": "n8n-nodes-base.telegram",
      "position": [
        3648,
        -560
      ],
      "parameters": {},
      "typeVersion": 1.2
    },
    {
      "id": "13540280-0ead-48ce-b297-341cbf6763ad",
      "name": "Get Chart URL",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2928,
        -32
      ],
      "parameters": {},
      "typeVersion": 4.2
    },
    {
      "id": "4ac66624-0762-4c0b-ba3c-09833db34cce",
      "name": "Download Chart",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3216,
        -32
      ],
      "parameters": {},
      "typeVersion": 4.2
    },
    {
      "id": "b6777c9b-ff73-4161-b817-8be849ee6db1",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2784,
        -192
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "eecca474-2293-43fb-854c-134ad6d8d5b0",
      "name": "Sticky Note21",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3008,
        -944
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "e7c95385-e89f-4d58-9c5c-22ed05715c7b",
      "name": "Sticky Note22",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3456,
        -944
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "e6782d73-b88c-46e2-82a4-8b1fced95cdc",
      "name": "Sticky Note18",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1888,
        -352
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "59317603-e2ab-4302-9a82-e1bdadd34576",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1312,
        -656
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "9465591a-1a0c-4a3a-9b87-8831fde95e79",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1968,
        -736
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Merge1": {
      "main": [
        [
          {
            "node": "Organizing Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ATR -1D": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 4
          }
        ]
      ]
    },
    "RSI -1D": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 3
          }
        ]
      ]
    },
    "Wait -65s": {
      "main": [
        [
          {
            "node": "EMA 200 -1D",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Warp JSON": {
      "main": [
        [
          {
            "node": "Technical Analysis Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OHLC -1Day": {
      "main": [
        [
          {
            "node": "Calculate Support Resistance",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait1 -65s": {
      "main": [
        [
          {
            "node": "ATR -1D",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "EMA 200 -1D": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 2
          }
        ]
      ]
    },
    "EMA 50 - 1D": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Get Chart URL": {
      "main": [
        [
          {
            "node": "Download Chart",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send 1D Chart": {
      "main": [
        []
      ]
    },
    "Simple Memory": {
      "ai_memory": [
        [
          {
            "node": "Technical Analysis Agent",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Download Chart": {
      "main": [
        [
          {
            "node": "Send 1D Chart",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Organizing Data": {
      "main": [
        [
          {
            "node": "Warp JSON",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Real Time Price": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 5
          }
        ]
      ]
    },
    "Set Stock Ticker": {
      "main": [
        [
          {
            "node": "Add Twelve Data API Key",
            "type": "main",
            "index": 0
          },
          {
            "node": "Get Chart URL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Telegram Trigger": {
      "main": [
        [
          {
            "node": "Set Stock Ticker",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Add Twelve Data API Key": {
      "main": [
        [
          {
            "node": "OHLC -1Day",
            "type": "main",
            "index": 0
          },
          {
            "node": "Real Time Price",
            "type": "main",
            "index": 0
          },
          {
            "node": "EMA 50 - 1D",
            "type": "main",
            "index": 0
          },
          {
            "node": "Wait -65s",
            "type": "main",
            "index": 0
          },
          {
            "node": "RSI -1D",
            "type": "main",
            "index": 0
          },
          {
            "node": "Wait1 -65s",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Technical Analysis Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Technical Analysis Agent",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Technical Analysis Agent": {
      "main": [
        [
          {
            "node": "Send Final Analysis",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Calculate Support Resistance": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This n8n workflow template creates an intelligent stock technical analysis system that delivers professional-grade trading signals directly to your Telegram. Designed for retail traders, investors, and financial professionals who want to combine technical analysis with…

Source: https://n8n.io/workflows/9015/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

Creators, marketers, and brands that want to turn a single product photo into premium motion clips, then optionally publish to Instagram/TikTok/YouTube via LATE. No editing skills required.

Telegram, Agent Tool, Telegram Trigger +5
AI & RAG

Product to Social Video (xCodeWraith Edition). Uses telegram, agentTool, telegramTrigger, httpRequest. Event-driven trigger; 83 nodes.

Telegram, Agent Tool, Telegram Trigger +5
AI & RAG

Digital marketers, content creators, social media managers, and businesses who want to use AI marketing automation for YouTube Shorts without spending hours on production. This AI workflow helps anyon

OpenAI, HTTP Request, OpenAI Chat +7
AI & RAG

This automation is designed to help you generate AI-powered music tracks, cover art, and fully rendered music videos — all triggered from a simple Telegram chat and managed via Google Sheets.

OpenAI Chat, Memory Buffer Window, Output Parser Structured +11
AI & RAG

LinkedIn URL → Scrape → Match → Screen → Decide, all automated

Google Drive, Agent, Google Drive Tool +6