Din bevakningslista ligger i ett kalkylark. Marknadsdatan finns någon annanstans. ”Analysen” är utspridd över flikar, bokmärken och halvfärdiga anteckningar som du aldrig kommer att lita på igen.
Sheets-automatisering för aktiesignaler ger störst effekt när du behöver röra dig snabbt utan att bli slarvig. En marknadschef som hanterar uppdateringar i en grundares portfölj, en byråägare som bygger veckovisa investerarbriefar och en småföretagare som följer några långsiktiga innehav stöter alla på samma problem: processen skalar inte.
Det här arbetsflödet hämtar EODHD-marknadsdata till Google Sheets, beräknar indikatorer och använder AI för att skriva konsekventa BUY/WATCH/SELL-anteckningar med entry-, stop-loss- och take-profit-nivåer. Du får se hur det fungerar, vad du behöver och var team vanligtvis går fel.
Så fungerar automatiseringen
Hela n8n-arbetsflödet, från trigger till slutligt resultat:
n8n Workflow Template: Google Sheets + EODHD: aktiesignaler i en flik
flowchart LR
subgraph sg0["When clicking ‘Execute workflow’ Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "When clicking ‘Execute workf..", pos: "b", h: 48 }
n1@{ icon: "mdi:database", form: "rounded", label: "Get row(s) in sheet", pos: "b", h: 48 }
n2@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items", pos: "b", h: 48 }
n3["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/merge.svg' width='40' height='40' /></div><br/>Merge"]
n4@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model", pos: "b", h: 48 }
n5["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Code in JavaScript2"]
n6@{ icon: "mdi:database", form: "rounded", label: "Append row in sheet", pos: "b", h: 48 }
n7["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Fetch stock fundamentals (EO.."]
n8["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Fetch OHLC price data (EODHD)"]
n9@{ icon: "mdi:robot", form: "rounded", label: "Generate AI stock analysis", pos: "b", h: 48 }
n10["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Compute indicators and growt.."]
n11["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Normalize OHLC data"]
n12["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Prepare data for Google Sheets"]
n3 --> n11
n2 --> n7
n4 -.-> n9
n6 --> n2
n5 --> n12
n1 --> n2
n11 --> n9
n9 --> n5
n8 --> n10
n12 --> n6
n7 --> n8
n7 --> n3
n10 --> n3
n0 --> n1
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0 trigger
class n9 ai
class n4 aiModel
class n1,n6 database
class n7,n8 api
class n5,n10,n11,n12 code
classDef customIcon fill:none,stroke:none
class n3,n5,n7,n8,n10,n11,n12 customIcon
Problemet: aktiegranskningar tar för lång tid för att kännas pålitliga
Manuell aktiegranskning låter enkelt tills du gör det konsekvent. Du börjar med att kopiera tickers från ett ark, sedan öppnar du en marknadsdatasajt, sedan hämtar du fundamenta, sedan tittar du på prisrörelser, sedan räknar du ut några indikatorer (eller så höftar du dem, vilket är sämre). Efter det försöker du skriva en strukturerad ”så här är planen”-anteckning, men formuleringarna ändras varje gång, och det gör även din risklogik. Några få aktier går att hantera. En riktig bevakningslista blir en veckovis tidstjuv, plus en grogrund för små fel som i det tysta saboterar besluten.
Det eskalerar snabbt. Här är var det faller isär i praktiken.
- Du slutar med att dubbelkolla samma siffror på två olika sajter eftersom du inte riktigt litar på den första copy-paste:n.
- Indikatorberäkningar glider över tid, vilket betyder att din ”RSI” inte har samma definition vecka för vecka.
- Anteckningar blir inkonsekventa, så ”WATCH” kan betyda ”köp nästa vecka” eller ”undvik helt”, beroende på humör.
- Handelsnivåer finns i någons huvud, inte i kalkylarket där teamet faktiskt tittar.
Lösningen: EODHD + Google Sheets-signaler, genererade automatiskt
Det här n8n-arbetsflödet förvandlar ett vanligt Google Sheet med tickers till en repeterbar pipeline för aktieanalys. Du behåller listan i en kolumn som heter ticker. När arbetsflödet körs läser det raderna och bearbetar dem en och en, och hämtar både fundamenta (värdering, tillväxt, lönsamhet) och OHLCV-prisdata från EODHD-API:erna. Därefter beräknar det de tekniska indikatorer som vanligtvis tar mest tid att räkna rätt: RSI, glidande medelvärden (20/50/200), volatilitet samt enkla stöd- och motståndsnivåer. Till sist tar en AI-agent de strukturerade fundamenta- och indikatorvärdena och producerar konsekventa utdata som du faktiskt kan jämföra mellan tickers: BUY/WATCH/SELL, entry, stop-loss, take-profit, en tes, för- och nackdelar samt ett fundamentalbetyg 1–10. Allt hamnar tillbaka i ditt Google Sheet i en dedikerad Signals-flik.
Arbetsflödet startar med en manuell körning i n8n, vilket är perfekt för veckogenomgångar eller ”kör nu”-lägen. Sedan loopar det igenom varje ticker, slår ihop dataströmmarna, normaliserar pris-payloaden och ber AI:n att returnera strukturerad JSON. Efter parsning mappar det varje fält till korrekt formaterade kolumner och lägger till en ny rad i din Signals-flik.
Det du får: automatisering vs. resultat
| Det här automatiserar arbetsflödet | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att du följer 25 tickers och gör en veckogenomgång. Manuellt: om du lägger cirka 8 minuter per ticker på att hämta fundamenta, kontrollera priser, beräkna ett par indikatorer och skriva en snabb anteckning, blir det ungefär 3+ timmar. Med det här arbetsflödet uppdaterar du tickerlistan i Google Sheets (kanske 2 minuter), kör automatiseringen och låter den jobba i bakgrunden; även om det i snitt tar cirka 1 minut per ticker från start till mål, är du klar på runt en halvtimmes total ”hands-on”-tid. Arket fyller i sig självt och din Signals-flik blir platsen du faktiskt jobbar från.
Det här behöver du
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
- Google Sheets för att lagra tickers och skriva ut signaler
- EODHD för fundamenta och OHLCV-marknadsdata
- OpenAI API-nyckel (hämta den i din OpenAI-dashboard)
Kunskapsnivå: Medel. Du kopplar konton, klistrar in en API-token och är bekväm med att kontrollera några mappade fält i arket.
Vill du inte sätta upp detta själv? Prata med en automatiseringsexpert (gratis 15-minuters konsultation).
Så fungerar det
En manuell körning startar allt. Du startar arbetsflödet i n8n när du vill ha en ny batch av signaler, vilket passar bra för veckorutiner eller en kontroll före marknadsöppning.
Din bevakningslista kommer från Google Sheets. Arbetsflödet läser varje rad i ditt indataark (med en kolumn som heter ticker) och itererar sedan igenom dem i batchar, så att det inte sätter igen vid längre listor.
EODHD-data hämtas och förbereds. Det begär fundamenta först, sedan OHLC-prishistorik. Därefter beräknar det indikatorer och normaliserar pris-payloaden så att AI:n får konsekventa indata i stället för stökiga arrayer.
AI skriver signalen, och Sheets blir din dashboard. AI-agenten returnerar strukturerad JSON (signal, handelsnivåer, tes, för-/nackdelar och ett fundamentalbetyg). n8n parsar JSON:en, mappar fälten till din kolumnlayout och lägger till en ny rad i Signals-fliken.
Du kan enkelt justera AI-prompten så att den matchar dina riskregler utifrån dina behov. Se den fullständiga implementeringsguiden nedan för anpassningsalternativ.
Steg-för-steg-implementeringsguide
Steg 1: Konfigurera den manuella triggern
Det här arbetsflödet startar manuellt så att ni kan köra aktieanalys vid behov.
- Lägg till noden Manual Launch Trigger som arbetsflödets trigger.
- Lämna alla fält på standardvärden i Manual Launch Trigger.
Steg 2: Anslut Google Sheets
Konfigurera indata och utdata i kalkylarket som används för tickers och AI-resultat.
- Öppna Retrieve Sheet Rows och ställ in Document ID till
[YOUR_ID]. - Ställ in Sheet Name till
Sheet1i Retrieve Sheet Rows. - Öppna Append Sheet Row och ställ in Document ID till
[YOUR_ID]och Sheet Name tillSheet1. - Behåll Operation inställd på
appendi Append Sheet Row. - Verifiera att kolumnmappningarna använder uttryck som
{{ $json.ticker }},{{ $json.entry }}och{{ $json.would_enter }}.
Inloggningsuppgifter krävs: Anslut era Google Sheets-inloggningsuppgifter
[YOUR_ID] inte ersätts med ett riktigt kalkylarks-ID kommer Retrieve Sheet Rows och Append Sheet Row att misslyckas.Steg 3: Konfigurera batchbearbetning och hämtning av marknadsdata
Det här steget itererar tickers och hämtar fundamentaldata och OHLC-data parallellt.
- Koppla Retrieve Sheet Rows till Iterate Records för att bearbeta en ticker per batch.
- I Request Fundamentals Data ställer ni in URL till
=https://eodhd.com/api/fundamentals/{{ $json.ticker }}.US. - I Request Fundamentals Data ställer ni in query-parametrar: filter =
General,Highlights,Valuation,Technicals, api_token =[CONFIGURE_YOUR_API_KEY]och fmt =json. - I Request OHLC Prices ställer ni in URL till
=https://eodhd.com/api/eod/{{ $json.General.Code }}.US. - I Request OHLC Prices ställer ni in query-parametrar: from =
2023-01-01, to =2025-12-30, period =d, fmt =jsonoch api_token =[CONFIGURE_YOUR_API_KEY]. - Låt JavaScript-koden i Compute Metrics & Growth och Normalize Price Payload vara oförändrad för att beräkna tekniska indikatorer och tillväxtpoäng.
Request Fundamentals Data skickar utdata parallellt till både Request OHLC Prices och Combine Data Streams.
Steg 4: Konfigurera AI-analys och parsning
AI-agenten genererar en strukturerad analys utifrån normaliserad fundamentaldata och tekniska mätvärden.
- Öppna Generate AI Analysis och behåll Prompt Type som
define. - Ställ in Text i Generate AI Analysis till
=Analyze the following stock data and return the output strictly following the defined JSON schema. INPUT DATA: {{ JSON.stringify($json) }}. - Säkerställ att OpenAI Chat Engine är ansluten som språkmodell för Generate AI Analysis och ställ in Model till
gpt-4.1-nano. - Behåll Parse AI JSON för att omvandla AI-svarsträngen till JSON.
- Behåll Map Sheet Output för att forma om AI-resultaten till kalkylarkskolumner.
Inloggningsuppgifter krävs: Anslut era OpenAI-inloggningsuppgifter
OpenAI Chat Engine är ansluten som språkmodell för Generate AI Analysis — säkerställ att inloggningsuppgifter är tillagda i OpenAI Chat Engine.
Steg 5: Konfigurera utdata och loopning
Arbetsflödet skriver tillbaka resultaten till arket och loopar vidare till nästa ticker.
- Bekräfta att Map Sheet Output är kopplad till Append Sheet Row för att lägga till analysdatan.
- Verifiera att Append Sheet Row mappar fält som ENTRY till
{{ $json.entry }}och ENTER(YES/NO) till{{ $json.would_enter }}. - Säkerställ att Append Sheet Row kopplar tillbaka till Iterate Records för att bearbeta alla rader i indataarket.
Steg 6: Testa och aktivera ert arbetsflöde
Kör ett fullständigt test för att validera datahämtning, AI-utdata och skrivningar till kalkylarket.
- Klicka på Execute Workflow från Manual Launch Trigger för att starta en manuell körning.
- Kontrollera Request Fundamentals Data och Request OHLC Prices för giltiga API-svar.
- Bekräfta att Generate AI Analysis returnerar en JSON-sträng och att Parse AI JSON konverterar den till strukturerade fält.
- Verifiera att nya rader visas i ert Google Sheet från Append Sheet Row med ifyllda analysfält.
- När ni är nöjda växlar ni arbetsflödet till Active för produktionsanvändning.
Vanliga fallgropar
- EODHD-uppgifter kan löpa ut eller kräva specifika behörigheter. Om saker slutar fungera, kontrollera först din EODHD API-token och dina planbegränsningar i EODHD-kontots inställningar.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om noder längre ned misslyckas på grund av tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in din tonalitet tidigt, annars kommer du att redigera utdata för alltid.
Vanliga frågor
Cirka 30 minuter om dina API:er är redo.
Nej. Du klistrar in API-nycklar, kopplar Google Sheets och bekräftar att dina utdatakolumner ligger i linje.
Ja. n8n har ett gratis self-hosted-alternativ och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volym. Du behöver också räkna in kostnader för OpenAI API (ofta bara några dollar per månad vid små volymer) och din EODHD-plan.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärt och hanterar n8n bra. Self-hosting ger dig obegränsade körningar men kräver grundläggande serverhantering.
Ja, och det är ärligt talat det första jag skulle justera. Uppdatera instruktionerna i noden Generate AI Analysis så att modellen viktar det du bryr dig om (värde, momentum, utdelningssäkerhet, vad som helst). Du kan också ändra steget Map Sheet Output för att lägga till nya kolumner som ”riskkategori” eller ”tidshorisont”. Om du vill byta leverantör kan noden OpenAI Chat Engine ersättas med en annan kompatibel chattmodell och resten av flödet förblir i stort sett detsamma.
Oftast beror det på utgången Google OAuth eller att behörigheter för kalkylarket har ändrats. Återanslut Google Sheets i n8n-credentials och bekräfta sedan att exakt kalkylarksnamn och fliknamn fortfarande matchar det som noderna refererar till. Kontrollera också att ditt servicekonto eller din användare har redigeringsbehörighet, eftersom noden Append Sheet Row behöver skrivrättigheter. Om det bara misslyckas på vissa rader, leta efter tomma tickers eller extra mellanslag i ticker-kolumnen.
Dussintals till några hundra per körning är realistiskt för de flesta upplägg, så länge du inte slår i API-rate limits.
För det här användningsfallet, oftast ja. Du kombinerar flera API-anrop, gör indikatorberäkningar, slår ihop dataströmmar och tvingar AI:n att returnera strukturerad JSON som du sedan parsar och mappar. n8n är helt enkelt mer bekvämt för den typen av flersteglogik, och det straffar dig inte för branching eller batchning. Zapier eller Make kan fortfarande fungera, men du brukar bli dyrare när flödet växer, och komplexa transformationer blir klumpiga. Prata med en automatiseringsexpert om du vill ha en snabb rekommendation baserat på din volym och dina verktyg.
När detta väl rullar slutar ditt ark att vara en statisk lista och blir en signalmotor. Sätt upp det, kör det när du behöver det och använd tiden du får tillbaka till besluten som faktiskt spelar roll.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.