Hur hämta aktiedata i excel eller liknande program

Hej. Håller på att bygga en excel fil där jag sammanfattar mina aktieinnehav.
Hämtar data som värdet på svenska aktier från https://trader.di.se/

Men har också några utländska aktier. Främst från USA. Har inte hittat någon sida att hämta dessa aktier från. Alltså skriva in länken så att excel själv hämtar datan och sedan uppdateras den automatiskt.

Ni som hämtar data från någon sida, vilken hämtar ni från?

Du har ju fliken Utland på DI Trader som borde lösa ditt problem :slightly_smiling_face:

Får tacka för inspirationen! Nu ska jag se om jag kan använda de här sidorna som datakälla till mina egna kalkylark.

Vet du någon liknande enkelt uppbyggd sida som listar fondkurser också?

2 gillningar

Jag använder Google sheets och då använder jag den inbyggda Googlefinance-funktionen för de aktier de har en ticker-stöd för. För aktier på Stockholmsbörsen exempelvis:

=GOOGLEFINANCE(“STO:HM-B”)

Eller för amerikanska aktier:

=GOOGLEFINANCE(“AAPL”)

Den här, lite hackiga, funktionen använder jag om Googlefinance inte har stöd för en viss ticker:

=MID(importXml(“https://www.avanza.se/aktier/om-aktien.html/614237/stillfront-group”; “(//span[@class=‘pushBox roundCorners3’])[1]”);1;6)

Jag söker alltså upp aktien på Avanza och byter ut adressen. Om Avanza bygger om sin sida i framtiden kommer formeln behöva uppdateras med en ny XPath-fråga.

5 gillningar

Ja! Spenderade för många timmar vid excel-arket igår kväll. Då börjar man missa sådana tydliga saker. :laughing:¨

Nästa fundering går på var man kan hitta kanadensiska börsen i lika bra format.

Har funderat på att använda mig av Google Sheets också.

Men började med LibreOffice och så har det fortsatt. Har använt funktionen “länka till extern data” i ett blad kallat “aktiekurser”. Sedan i ett annat blad med namnet “innehav” skriver jag bara vilka aktier jag har och hämtar kurserna m.m. från aktiekurser-bladet. Lämpligt eftersom man bara behöver uppdatera bladet så hämtar den nya aktiekurserna direkt. Tråkigt bara att det krävs speciella sidor som DI, så att LibreOffice klarar av att läsa in sidorna korrekt.

1 gillning

Excel som en del av en Microsoft 365 prenumeration har sen December 2020 möjligheten att hämta “stocks data type” via STOCKHISTORY-funktionen.

Jag kör idag ett Google Sheets upplägg, men funderar på Excel som en backup eftersom Google ibland kan få för sig att lägga ner bra tjänster (minns ni fina Google Reader? :joy:).

1 gillning

Jag kör också allting i Google Sheets, med liknande hämt-kommandon som @HighValleyInvest nämner ovan.

Amerikanska aktier formler

=GOOGLEFINANCE(P15, “price”)*$B$48
där P15 är exempelvis “AAPL”
och B48 är =GoogleFinance(“CURRENCY:USDSEK”) för att få priset i SEK

Anledningen att jag vill ha det i SEK är att avanza anger mitt GAV i SEK, så då kan jag enkelt lägga till en kolumn med utveckling %. Det går att köra samma googlefinance formula men ändra price till “changepct” för att få en kolumn över dagens ändring.

Svenska aktier och andra utländska bolag

Jag kör samma upplägg som ovan på utländska (inkl kanadensiska) bolag och de flesta svenska bolag (alla finns inte). Gå in på https://www.google.com/finance och sök efter ditt bolag, så får du se om tickern finns. Exempel från min egen portfölj är AAK där trackern är STO:AAK. Ett annat exempel är småbolaget Enzymatica som finns (!) under trackern “ENZY:SS” men i EUR (?), så då får man använda Currency-formulan igen som jag nämnde ovan - men ändra USDSEK till EURSEK.

Svenska fonder
För svenska fonder (som i princip aldrig finns på google finance) kör jag återigen en liknande formula som @HighValleyInvest men med hänvisning till en äldre Avanza-sida… skulle tro att @HighValleyInvest’s är bättre och mer pålitlig, då “lista-old” tyder på att denna kan dö eller tas bort när som helst :slight_smile: . Exempel för AMF Aktiefond Småbolag.

=IMPORTXML(“https://www.avanza.se/fonder/lista-old.html?disableSelection=false&name=amf+aktiefond+småbolag&sortField=CHANGE_IN_SEK_SINCE_ONE_YEAR&sortOrder=DESCENDING&activeTab=overview”, “// td [@class=‘overview fundListNav noSort’]”)

3 gillningar

Försökte få till det med Avanzas nya fondsidor men får det inte att funka, du kan inte tänka dig göra en hjälteinsats för att hjälpa en Google Finance amatör? :joy:

1 gillning

Jag kan hjälpa till, Avanza “döljer” NAV-kursen bakom en flik som inte laddas in förrän man klickar på fliken. Därför är det lättare att hämta NAV-kurser från DI. Här är ett exempel för Spiltan Aktiefond Investmentbolag, bara att byta ut adressen.

=MID(importXml("https://www.di.se/fonder/spiltan-aktiefond-investmentbolag/"; "(//span[@class='js_real-time-stock-details-price'])[1]");1;6)
2 gillningar

Stort tack @HighValleyInvest! Funkar jättebra! :+1:

1 gillning

Har nu lyckats fått större delen av excel-arket att bli “automatiskt”. Ganska stolt ändå med tanke på att man inte direkt arbetat med Excel förut. Några punkter bara som måste fixas “manuellt” fortfarande…

  • Behöver hämta mitt innehav från Avanza manuellt genom att spara en excel-fil. Går ändå snabbt och smidigt. Importera och sen hämtas all data in korrekt.
  • Ändra namn på aktier från mitt innehav så det blir samma namn som från DI trader. Men behöver bara göras en gång när man har en ny aktie. Så inga större problem.
  • Samt skriva in utdelningarna och vilka månader det är delas ut.

Sista punkten håller jag på att fundera just nu, om det på något sätt går att automatisera. Har ni något förslag. Om man kan hämta utdelningsdatum och hur mycket pengar?

1 gillning

Går att hitta bland annat utdelning och utdelningsdag med hjälp av följande API:er.

https://www.avanza.se/_mobile/market/fund/ID
https://www.avanza.se/_mobile/market/stock/ID
https://www.avanza.se/_mobile/market/index/ID

Det finns liknande URL:er om man skulle vara intresserad av certifikat, etf, …

ID byter du ut mot siffrorna man ser i URL:en om du besöker respektive fond, aktie eller index på avanza.se.

Några exempel:

https://www.avanza.se/fonder/om-fonden.html/1151293/plus-allabolag-sverige-index
https://www.avanza.se/_mobile/market/fund/1151293

https://www.avanza.se/aktier/om-aktien.html/5247/investor-b
https://www.avanza.se/_mobile/market/stock/5247

https://www.avanza.se/index/om-indexet.html/19002/omx-stockholm-30
https://www.avanza.se/_mobile/market/index/19002

API:erna retunerar data i json-format så borde på något sätt gå att använda sig av i excel eller google sheets. Gillar man python så finns det ett paket som förhoppningsvis gör det lite enklare (https://github.com/claha/pyavanza) eller om man föredrar javascript (https://github.com/fhqvst/avanza). Jag är själv författare av python paketet så där kan jag bistå med lite hjälp/exempel om det skulle behövas.

2 gillningar

wow, jag har mycket att utveckla i mitt google sheets märker jag. Utdelningar har jag aldrig ens försökt få in automatiskt. Får se om jag vågar på mig python eller javascriptet…

Jag har hämtat aktiedata från DI Trader till Excel med Power Query, men det har slutat att fungera nu när DI har gjort om sin webb. Finns det någon annan datakälla som fungerar bra ihop med Excel Power Query, eller måste jag gå över till Google Sheets?

Edit: Excels inbyggda funktion fungerade ändå, det trodde jag inte. Den som finns under fliken Data > Aktier. Var lite handpåläggning, men den hittade alla aktier till slut (Stockholmsbörsen, blandat small, mid- och large cap).

Tips på hur jag hämtar värdena från tex denna tabellen?

Skärmklipp

https://www.avanza.se/optioner/om-optionen.html/1229603/skfb1t200

Hej,
Har läst alla inlägg om att importera till Kalkylark och tycker inte jag är en novis vad gäller Excel/Google Sheets och formler men ändå får jag inte till det trots åtskilliga försök. Trodde inte något så enkelt kunde vara så krångligt på 2020-talet :wink:

Vad jag försöker göra är att importera Certifikatkurser till Google Sheets (eller Excel 2016 om det inte går). Alltså godtyckligt certifikat som finns på denna listan: Certifikatlistan - sök bland alla våra certifikat! | Avanza
Hämta från Avanza, Nordnet eller annan källa spelar ingen roll bara jag kan få in det i ett kalkylark.

Någon som har lyckats med detta och kan dela med sig om hur man gör för vad jag än provar med IMPORTHTML eller IMPORTXML så får jag inte till det…

/Joe

Jag har bland annat 4GLD i ett Google Sheet som jag hämtar från Nordnet.

Senaste kurs

=VALUE(TRIM(IMPORTXML("https://www.nordnet.se/marknaden/ovriga-certifikat/16127916-xetra-gold";"(//span[contains(@class,'Typography__Span-sc-10mju41-0')])[139]")))

Ändring i kurs

=VALUE(SUBSTITUTE(IMPORTXML("https://www.nordnet.se/marknaden/ovriga-certifikat/16127916-xetra-gold";"(//span[contains(@class,'Typography__Span-sc-10mju41-0')])[121]");"+";""))

Du kan ändra URLen till andra certifikat så länge som dom är listade under “Övriga certifikat” och använder den strukturen/mallen. :+1:

2 gillningar

Grymt, funkar fint. Stort tack !!

1 gillning

Hej,

Använder google sheets. Har ni någon formel för automatisk uppdatering för fonder ex Avanza Global? Får inte det att fungera.

Tack!

Jag har ännu inte lyckats alls att hämta från Avanza. Med hjälp av @friisolen 's exempel ovan för Nordnet (som funkar bra) så förstod jag att en metod är att ladda sidan du vill hämta och inspektera CSS classen för den datan du vill hämta och gör formeln i Google Sheets mot den CSS classen. I exemplet för certfikatet 4GLDNordnet:

=VALUE(TRIM(IMPORTXML("https://www.nordnet.se/marknaden/ovriga-certifikat/16127916-xetra-gold";"(//span[contains(@class,'Typography__Span-sc-10mju41-0')])[139]")))
  1. Tryck F12 efter du manuellt laddat websidan som är i formeln.
  2. Klicka på ikonen längst upp til vänster (eller Ctrl-Shift-C) för att välja CSS elementet du vill inspektera. I det här fallet ser du att det heter Typography__Span-sc-10mju41-0 och detta namnet är en del av formeln i Google Sheets för att hitta rätt data att hämta.
  3. Slutligen är det en parameter i Brackets [139] för att hämta senaste kurs. Genom att byta ut värdet [139] kan man hämta andra värden på samma sida.

När jag förstod detta har jag lyckats hämta godtycklig data från massa andra sajter som jag inte lyckades med tidigare. Det jag ännu inte förstår eller lyckats googla fram är hur hittar jag vilket värde jag skall ange inom Brackets. Hitills har jag fått göra trial and error och det är väldigt tidsödande.

@friisolen - Om du har någon input får du gärna komplettera om jag förstått något fel.

För fondkurser så kör jag på @HighValleyInvest:s tips och hämtar från Dagens Industri, en fördel är att DI har kurser för bankernas egna fonder hos både Nordnet och Avanza. :+1:

Senaste kurs

=VALUE(TRIM(IMPORTXML("https://www.di.se/fonder/amf-aktiefond-smabolag-124544/";"(//div[contains(@class,'js_instrument-details__price')])[1]")))

Ändring i kurs (procent)

=VALUE(SUBSTITUTE(IMPORTXML("https://www.di.se/fonder/amf-aktiefond-smabolag-124544/";"(//span[contains(@class,'js_instrument-details__diff')])[1]");"+";""))

Du kan ändra URLen till andra fonder så länge som dom är listade under “Fonder ” och använder den strukturen/mallen.