tisdag 20 augusti 2019

Script till Nordnet - Kurser

Jag har spenderat lite tid på att fixa till ett script som passar till de flesta kurser från nordnet. Eftersom jag själv använder min depå via nordnet så känns det lite bättre att äntligen ordna till det.

Tidigare har jag hämtat kurserna från Avanza och det har fungerat till och från de senaste dagarna. Så idag fick jag tummen ur och fixade till ett relativt enkelt script som hämtar det från Nordnet istället.

Så nu hoppas jag att portföljen kommer att fungera mer stabilt, annars får jag se över det igen!

Att automatiskt hämta aktie-kurser, eller annan information, från diverse webbsidor in i ett Excel eller "spreadsheet" är inte så komplicerat som det låter. Det handlar i princip nästan enbart om att identifiera något unikt som alltid är identiskt för den typ av data som du vill importera.

Avanza har varit mycket enklare att göra detta på därför att deras struktur är bättre för att scripta. Nordnet har valt en annan väg där framförallt den största skillnaden är att du inte ser i URL:en (länken) vilken aktie du hämtar information från.

Det är oftast enklast att använda "importxml" funktionen eftersom man kan använda s.k "xpath" strängar för att definiera vilken data som skall sparas efter inläsning. Notera dock att det finns en limit på google spreadsheets till maximalt 50 per sheet. Det är en kraftig begänsning i större portföljer men det finns en lösning på det också (för ett annat inlägg).

Om det skulle vara av intresse för någon så ser scriptet för Nordnet ut såhär:

=IFERROR(GOOGLEFINANCE("cph:kapi-b";"price"); VALUE(IMPORTXML("https://www.nordnet.se/mux/web/marknaden/aktiehemsidan/index.html?identifier=100207&marketid=11";"//table/tr[@class='first last']/td[3]/text()")))

För den nördige kommer förklaringen här:

  • IFERROR = testa först googlefinance om det INTE fungerar
  • VALUE = konvertera inhämtat värde till ett tal som går att använda i beräkningar
  • IMPORTXML =  definiera URL att hämta data från (sök upp aktien du vill hämta kursen från och kopiera in)
  • //table = sök igenom alla tabeller
  • /tr[@class='first last'] = leta sedan efter raden som heter first last
  • /td[3] = hämta värdet i den 3:e kolumnen

Jag vet som sagt var inte om det kommer att fungera bättre via Nordnet men det känns som att Avanza har haft problem senaste tiden med långa svarstider vilket gör att det står #SAKNAS i arket!

5 kommentarer:

  1. Hej,

    Har också noterat att kurserna inte hämtas lika snyggt längre. Tror att jag fick en formel av dig en gång i tiden som hämtade i första hand från Google Finance och i andra hand från Avanza. Kan man modifiera denna så att den hämtar från NN i sista ledet d.v.s. om alla andra failar?

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

      Jag tolkar det som att du vill testa 3 olika källor och prioritera google, sedan avanza och sist nordnet?

      Ja det är lite mer komplicerat och man får så att säga nestla in IF i IFERROR. Men det är helt klart görbart, IFERROR hanterar dock bara "false/true".

      I mitt exemple ovan så använder jag IFERROR mest för att "prova google först, annars gör detta". JAg kollar egentligen inte att det blir rätt.

      Man skulle kunna skriva om det ungefär såhär:
      IFERROR (IF google fungerar = använd det, ANNARS IF avanza fungerar = använd det, ANNARS IF nordnet fungerar = använd det)"gick inte hämta värde")

      Kan lägga upp ett sådant om det var vad du letade efter?

      Radera
  2. Hej,
    Jag har också problem att hämta avanzas kurser men testade att byta några mot nordnet och behålla vissa av avanzas men tycker att de krånglar lika mycket tyvärr båda två. Hoppas på bättringar i framtiden från deras sida.

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

      Problemet med Nordnet är att i mitt exempel ovan så hämtar jag "senaste" kursen och vid öppning så uppdateras den inte på Nordnet innan en transaktion har skett....OMXS30 är aldrig några problem men vissa mindre aktier kanske inte ens får ett avslut för dagen...

      Jag tycker dock det är missvisande på "köp" sidan. HAde det funnits någon info på Nordnet som är "permanent/persistent" så hade man kommit från problemet.

      Avanza har på senare tid haft enorma problem och jag misstänker att de blockerar "google"-förfrågningar i deras system eftersom det fungerar riktigt uselt på senare tid.

      Det är framförallt Avanza/Nordnet som gör det svårt för oss småsparare....är man lite mer viktig som kund så kan man få detta i real-uppdatering på annat sätt....

      För min egna del så gick jag över till Nordnet nu och så länge det blir avslut så fungerar det stabilt. (ibland är kursen dock 0 om det inte sker några avslut).

      Jag kan dock lägga upp script för övriga sidor om du vill ha hjälp med det :)...använder själv seekingalpha bl.a.

      Radera
  3. Stort tack för svar nu verkar Avanzas kurser vara på banan igen men vi får se hur länge det håller!

    Tack för en bra blogg också!

    SvaraRadera