Salkkujen seuranta: excel-taulukot

Jos haluaa lopettaa noiden import-komentojen ja epävarman investing.comin kanssa puuhailun, niin tein illan ratoksi tällaisen palikan joka hakee hinnan Yahoon palvelusta. Ainakin lyhyellä testailulla toimii. Asentaminen menee seuraavasti:

  1. Avaa Google Sheetsin portfoliotaulukkosi ja sitten valikosta Tools / Script Editor

  2. Avaa Script Editorin valikosta Resources / Libraries

  3. Hae library avaimella: 1ReeQ6WO8kKNxoaA_O0XEQ589cIrRvEBA9qcWpNqdOP17i47u6N9M5Xh0

  4. Pitäisi löytyä cheerio, jota tarvitaan funktion toimintaan. Tallenna

  5. Liitä Script Editorin editorisivulle seuraava koodi:

    function yahoofinance(symbol, mode) {
    const content = UrlFetchApp.fetch("https://finance.yahoo.com/quote/"+symbol).getContentText();
    const $ = Cheerio.load(content); 
    var arr = $("div#quote-market-notice").parent().children().toArray().map((element) => { return $(element).text()});
    var summaryArr = $("div#quote-summary").children().children().children().children().toArray().map((element) => { return $(element).text()});
    
    if (mode === "price") return Number(arr[0].replace(/\,/g, ""));
    else if (mode === "change") return Number(arr[1].split("(")[0].replace(/\+/g, "").replace(/\,/g, "")) || "N/A";
    else if (mode === "changepct") return Number(arr[1].split("(")[1].split(")")[0].replace(/\+/g, "").replace(/\%/g, "")) || "N/A";
    else if (mode === "high") return Number(summaryArr[4].split(" ")[3].replace(/\,/g, "")) || "N/A";
    else if (mode === "low") return Number(summaryArr[4].split("e")[1].split(" ")[0].replace(/\,/g, "")) || "N/A";
    else if (mode === "high52") return Number(summaryArr[5].split(" ")[4].replace(/\,/g, "")) || "N/A";
    else if (mode === "low52") return Number(summaryArr[5].split("ge")[1].split(" ")[0].replace(/\,/g, "")) || "N/A";
    else if (mode === "open") return Number(summaryArr[1].split("n")[1].replace(/\,/g, "")) || "N/A";
    else if (mode === "volume") return Number(summaryArr[6].split("e")[1].replace(/\,/g, "")) || "N/A";
    else if (mode === "volumeavg") return Number(summaryArr[7].split("e")[1].replace(/\,/g, "")) || "N/A";
    else if (mode === "beta") return Number(summaryArr[9].split(")")[1]) || "N/A";
    else if (mode === "pe") return Number(summaryArr[10].split(")")[1].replace(/\,/g, "")) || "N/A";
    else if (mode === "eps") return Number(summaryArr[11].split(")")[1].replace(/\,/g, "")) || "N/A";
    else if (mode === "edate") return summaryArr[12].split("Date")[1];
    else if (mode === "divdate") return summaryArr[14].split("Date")[1];
    else if (mode === "target") return Number(summaryArr[15].split("st")[1].replace(/\,/g, "")) || "N/A";
    else if (mode === "div") return Number(summaryArr[13].split("ld")[1].split(" ")[0].replace(/\,/g, "")) || "N/A";
    else if (mode === "yield") return Number(summaryArr[13].split("(")[1].split("%")[0]) || "N/A";
    else return Number(arr[0]);
    }
    
  6. Tallenna

Nyt pystyt taulukon puolella käyttämään =yahoofinance() -funktiota seuraavasti:

=yahoofinance("FORTUM.HE") - hinta
=yahoofinance("FORTUM.HE", "change") - päivämuutos
=yahoofinance("FORTUM.HE", "changepct") - päivämuutos prosentteina
=yahoofinance("FORTUM.HE", "high") - päivän ylin
=yahoofinance("FORTUM.HE", "low") - päivän alin
=yahoofinance("FORTUM.HE", "high52") - 52 viikon ylin
=yahoofinance("FORTUM.HE", "low52") - 52 viikon alin
=yahoofinance("FORTUM.HE", "open") - päivän avaushinta
=yahoofinance("FORTUM.HE", "volume") - päivän volyymi
=yahoofinance("FORTUM.HE", "volumeavg") - keskimääräinen volyymi
=yahoofinance("FORTUM.HE", "beta") - beta, 5 vuodelta
=yahoofinance("FORTUM.HE", "pe") - P/E-luku
=yahoofinance("FORTUM.HE", "eps") - osakekohtainen tulos
=yahoofinance("FORTUM.HE", "edate") - seuraava tulosjulkistus
=yahoofinance("FORTUM.HE", "divdate") - seuraavan osingon irtoaminen
=yahoofinance("FORTUM.HE", "target") - konsensustavoitehinta
=yahoofinance("FORTUM.HE", "div") - 12kk osinkoennuste
=yahoofinance("FORTUM.HE", "yield") - 12kk osinkotuottoennuste

Ja tuohon luonnollisesti täytyy käyttää osakkeiden tikkereitä siinä muodossa jossa finance.yahoo.com ne näyttää, eli .HE pitää laittaa suomalaisten osakkeiden perään.

Toivottavasti tästä on jollekin apua. Jos löytyy selviä vikoja niin voidaan koittaa korjata.

edit: pari bugia
edit: lisätty featureita

45 tykkäystä