tisdag 18 juni 2019

Lösning på Google Finance problem?

Det här är ett väldigt kort inlägg, men som jag skrev igår verkar det vara omfattande problem i Google Finance tjänsterna mot den nordiska marknaden.

Efter att ha sökt lite bland mina källor inom IT-branshen så ryktas det vara en integrering mellan Nasdaq Nordic och diverse API:er som ställer till det. Men det är som sagt var ett rykte.

Vill man lösa problemet och inte nyttja Google Finance så kan man alltid leka med "importhtml" funktionen som också fungerar utmärkt. Men den har exakt samma problem som övriga tjänster - nämligen att det räcker att din källa bygger om sin webbsida så behöver du bygga om ditt excel-ark.

OBS! Jag bifogar en källa till Avanza istället för Nordnet som jag normalt sett använder! Avanza har en betydligt "bättre" struktur på sin aktieinformation som passar automatisering bättre, men man kan lika gärna använda valfri site som listar aktier för att lösa sina bekymmer med denna metoden!


Så för att lösa problemet gör man såhär:

Tänk bara på kopiera till notepad eller dylikt först eftersom blogger inte supporterar "code-blocks" utan krångel.

 =googlefinance("cph:aliv-sdb";"price")

Bytes ut mot:


=VALUE(SUBSTITUTE(IMPORTXML("https://www.avanza.se/aktier/om-aktien.html/5236/autoliv-sdb";"//span[@class='pushBox roundCorners3']/text()");";";".")) 


Detta går med fördel att kombinera med en "IFERROR"-funktion som först försöker hämta från google-finance men om det inte fungerar så trillar aktie-kursen från en importxml/importhtml funktion in och plockar upp det. Exemplet ovan blir i.s.f:

=IFERROR(GOOGLEFINANCE("cph:aliv-sdb";"price"); VALUE(SUBSTITUTE(IMPORTXML("https://www.avanza.se/aktier/om-aktien.html/5236/autoliv-sdb";"//span[@class='pushBox roundCorners3']/text()");";";"."))) 

Förklaring enligt följande:

VALUE  = innebär att man konverterar en sträng till ett tal.
SUBSTITUTE = innbär att man byter ut tecken enligt ett angivet mönser.
IMPORTXML = innebär att man importerar t.ex en URL till XML-kod.

Byt bara ut länken i funktionen ovan till vilken aktie du vill ha aktuellt pris på för Avanza så fungerar det. Dock med större fördröjning än google-finance. Värt att tänka på!

Det finns mängder med andra knep man kan använda sig av för att läsa in aktiekurser manuellt, men inget jag testat fungerar bra i längden utan att man uppdaterar sina script!

Just nu väntar jag själv på att mitt ark skall uppdateras när integreringen mot google-finance fungerar, men annars får det bli en workaround enligt ovan. 

14 kommentarer:

  1. Tack för avanz-scriptet, funkar kanon + att jag fick med några mindre bolag som jag inte kunnat scripta förut.
    /Björn

    SvaraRadera
  2. Hej Anonym/Björn och tack för kommentar!

    Det var så lite så, man ska inte slita ut sin hjärna i oöndan om man kan automatisera sina portföljer :)! Det går utmärkt att applicera funktionen ovan på i princip villken site som helst bara man kan förstå hur källan är uppbyggd.

    Funkar för övrigt alldeles utmärkt med ETF:er, Fonder, Onoterade bolag och allt du kan tänka dig som inte Google indexerar.

    Kul att du fick till dina övriga aktier också :)!

    SvaraRadera
  3. Tack jag hämtade via annan formel från Avanza men har nu uppdaterat till din då jag också uppfattar att det går snabbare via Google Finance!

    SvaraRadera
  4. Hej Haterbrigaden och tack för kommentar!

    Ja Google Finance, förutsatt att det fungerar, hämtas på någon sec. De flesta andra funktioner måste ju ladda ner en hel webbsida x antal gånger och sedan sortera ut resultatet....det tar väldigt mycket längre men man är å andra sidan inte beroende av Google.

    Hojta till om du har någon annan funktion som du inte fått till, är ju lat av mig och scriptar det mesta som går ;-).

    SvaraRadera
  5. Tack för tipset! Nu får jag äntligen in CIBUS samt några preffar i mitt dokument. :) Råkar du också veta hur man kan göra för att få fram dagens förändring (change) för dessa?

    SvaraRadera
  6. Hej Utdelningsmaskineriet och tack för kommentar! Kul att jag kunde hjälpa någon :)! Det är betydligt roligare att hålla koll på sin portfölj när man slipper göra massa manuellt jobb!

    Det är inga problem att skaffa ett script som plockar det från Avanza om det var denna infon du menade:


    Utv. idag SEK
    -0,78 SEK

    Skicka mig ett mail så skickar jag ett script i retur! (frihetviautdelning AT gmail com)

    SvaraRadera
  7. hej,
    det här var en jättebra formel stort tack för den. Nu har jag fått in alla mina "mindre kända" aktier i mitt google sheet!
    Jag har dock inte fått formeln att fungera med fonder. Vilken sida skall man klistra in i formeln då?

    SvaraRadera
    Svar
    1. Hej Anonym,

      Vet inte om det var samma person som "andreas" nedan, jag har haft lite problem med gmail och notifieringar så inte sett kommentarerna förrän nu!

      Om du ger mig några exempel på länkar till avanza/nordnet så kan jag återkomma med datamodellen till det. De presenterar nämligen fonderna annorlunda,exempelvis ibland med % och ibland med :-.

      Radera
  8. hej,
    stort tack för detta. det funkar perfekt för mig att lägga till några aktier som googlefinance saknade.
    Jag lyckas dock inte få ut någon information om fonderna på avanza. Skulle du kunna ge ett exempel med en fond, istället för autoliv?

    SvaraRadera
    Svar
    1. Hej Andreas,

      Det var så lite så. Om det slutar att fungera så titta tillbaks, jag uppdaterar denna sidan när avanza/nordnet ändrar sina data-modeller.

      Anledningen till att scriptet inte fungerar till fonder är för att Avanza presenterar sina fonder annorlunda än ovan.

      Men om du skickar en länk på 2-3 fonder så kan jag återkomma med ett script för det också. (jag har inga fonder, så har inte behövt göra ett script till det)

      Radera
  9. Kan du visa ett script för den här fonden vore det toppen!
    https://www.avanza.se/fonder/om-fonden.html/1933/swedbank-robur-ny-teknik-a

    SvaraRadera
  10. Tack för bra info!
    Kan du göra ett script till den här fonden vore det toppen!
    https://www.avanza.se/fonder/om-fonden.html/1933/swedbank-robur-ny-teknik-a

    SvaraRadera
    Svar
    1. Hej Alex och tack för kommentar!

      Det är alltid lite svårt med fonder eftersom deras upplägg gör att det inte är helt lätt att få aktuella dagskurser.

      En andel i fonden bestäms ju efter kurser i förhållande till antalet underliggande aktier och viktningar i de bolagen. Inte helt lätt att reda ut i "realtid".

      Jag kollade runt lite på Avanzas sida och de listar fonderna i "%" på ett bra ätt men inte "Senaste NAV" (vilket du vill ha).

      Men om du har exempel på en annan sida där du ser att det står vad "NAV-värdet" var...så kan jag lösa det, överlag är det alltid lite mer bökigt med Fonder som inte är s.k "börshandlade".

      Radera
  11. Hej,
    Skrev nyss ett mail till dig. Jag undrar specifikt om fonden avanza world tech by TIN. Förstår nu att det är svårt att hämta NAV-kurs från avanza. Funkar det att hämta från deras egna sida?
    https://tinfonder.se/tin-world-tech/#graf

    SvaraRadera