Kurse werden nicht mehr aktualisiert

In den Einstellungen ist es angehakt. Die Kurse beziehe ich von Portfolio Performance. Also der nimmt die historischen Kurse vom Vortag als letzten Stand. Aber das macht er nicht automatisch.

Hallo zusammen,
Neuling hier, der sich anschließen muss.
Bei mir werden zu einem ETF die Kurse über Portfolio Report nicht aktualisiert; weder automatisch noch manuell. Interessanterweise sehe ich in der Serverresponse und in der Kurstabelle das heutige Datum, in der Wertpapierübersicht wird aber weiterhin der Vortag gezeigt. Die Kurse werden also geladen, sie werden aber nicht in die Übersicht übernommen.

grafik

Woran kann das liegen?
Erwin

Was ist denn im Tab „Aktueller Kurs“ eingetragen?

Was interessanter ist, bei Verwendung von Portfolio Report oder die Wertpapier suche kommt folgender Fehler :thinking:

Wed May 27 20:40:22 CEST 2020
peer not authenticated

javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated

	at java.base/sun.security.ssl.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:516)

	at org.apache.http.conn.ssl.SSLConnectionSocketFactory.verifyHostname(SSLConnectionSocketFactory.java:464)

	at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:397)

	at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:355)

	at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142)

	at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:373)

	at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:381)

	at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:237)

	at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185)

	at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)

	at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:111)

	at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)

	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)

	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108)

	at name.abuchen.portfolio.util.WebAccess.get(WebAccess.java:160)

	at name.abuchen.portfolio.online.impl.YahooSymbolSearch.search(YahooSymbolSearch.java:104)

	at name.abuchen.portfolio.online.impl.YahooFinanceQuoteFeed.searchSymbols(YahooFinanceQuoteFeed.java:409)

	at name.abuchen.portfolio.online.impl.YahooFinanceQuoteFeed.searchExchanges(YahooFinanceQuoteFeed.java:365)

	at name.abuchen.portfolio.online.impl.YahooFinanceQuoteFeed.getExchanges(YahooFinanceQuoteFeed.java:325)

	at name.abuchen.portfolio.ui.wizards.security.AbstractQuoteProviderPage$LoadExchangesJob.run(AbstractQuoteProviderPage.java:86)

	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)

oder

Wed May 27 20:41:52 CEST 2020
Certificate for <www.portfolio-report.net> doesn't match any of the subject alternative names: [mars.portfolio-report.net]

javax.net.ssl.SSLPeerUnverifiedException: Certificate for <www.portfolio-report.net> doesn't match any of the subject alternative names: [mars.portfolio-report.net]

	at org.apache.http.conn.ssl.SSLConnectionSocketFactory.verifyHostname(SSLConnectionSocketFactory.java:467)

	at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:397)

	at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:355)

	at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142)

	at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:373)

	at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:381)

	at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:237)

	at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185)

	at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)

	at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:111)

	at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)

	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)

	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108)

	at name.abuchen.portfolio.util.WebAccess.get(WebAccess.java:160)

	at name.abuchen.portfolio.online.impl.PortfolioReportNet.search(PortfolioReportNet.java:315)

	at name.abuchen.portfolio.online.impl.PortfolioReportNetSearchProvider.search(PortfolioReportNetSearchProvider.java:20)

	at name.abuchen.portfolio.ui.wizards.security.SearchSecurityWizardPage.lambda$3(SearchSecurityWizardPage.java:157)

	at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:122)

P.S. Am Server scheint es nicht zu liegen, der ist korrekt für SSL konfiguriert.

SSL Report: www.portfolio-report.net (37.221.198.115)

SSL Report: www.portfolio-report.net (2a03:4000:9:38a:0:0:0:1)

Kann es an der in PP eingebetteten Java Version und abgelaufen Zertifikaten liegen?

grafik

Das sieht so aus, als würde der Client SNI nicht unterstützen. Daher bekommt er ein Zertifikat für den falschen Namen zurück, was er dann (zu Recht) ablehnt.

@Thomas
Ich habe einen PR erstellt, der zumindest dieses Problem lösen sollte.

@erwinschlonz
Um meine These (SSL SNI) zu bestätigen, wie verhält sich die Kursanzeige, wenn du testweise die Kurse via Webseite aktualisiert?

https://www.ariva.de/ishares_core_msci_world_ucits_etf-fonds/historische_kurse?go=1&boerse_id=12&month=&currency=

1 Like

Das von Erwin gemeldete Verhalten sehe ich auch. Ohne Fehlermeldung im Protokoll. Die letzten Kurse vom heutigen Tag sind bei Tabelle von Webseite (Ariva) und Yahoo vorhanden, bei Portfolio Report jedoch nicht. Ist das System bzw. so gewollt?

Definitiv nicht, zumindest hat mein Fix das gelöst. Wenn du Zeit und Lust hast, vielleicht könntest du ihn bei dir ausprobieren? Evtl sollte der Fehler dann verschwunden sein :thinking:

Ich fürchte, das ist noch ein anderes Problem. (Nur) wenn man das Systemdatum auf den nächsten Tag stellt und die Kurse abruft, wird der historische Kurs von heute aktualisiert und angezeigt.

Ich kann zumindest auch bestätigen, dass Marcos Fix das Problem des fehlenden heutigen Kurses nicht löst.

Ich habe den Fix integriert, dann GE angelegt und für heute auch wieder keinen Kurs bekommen, obwohl er bei den historischen Kursen angezeigt wird.

Ich hatte gedacht, das wäre Absicht? Aber als aktueller Kurs sollte der von heute in jedem Fall übernommen werden. Das passiert bei anderen Kursquellen auch (mindestens Ariva, Yahoo Finance).

@chirlu
Ich habe den PR erst einmal zurück gezogen, aber ein Update des Httpclient scheint erst möglich wenn das Framework selbst aktualisiert wird. Dazu müsste aber die 32 Bit Version endgültig sterben.

Was den letzten Kurs (Tagesdatum) betrifft, so wird dies zumindest mit dem Dirty SSL Trick bei mir richtig angezeigt.

Kann es sein, dass getLatestQuote in der Klasse PortfolioReportQuoteFeed noch implementiert werden sollte? So sieht das aktuell aus:

public Optional<LatestSecurityPrice> getLatestQuote(Security security)
    {
        return Optional.empty();
    }

Ich habe gerade mal etwas ausprobiert. Es funktioniert, aber bedeutet auch zusätzliche Calls:


     public Optional<LatestSecurityPrice> getLatestQuote(Security security)
    {
        List<LatestSecurityPrice> data = getHistoricalQuotes(security, true, LocalDate.now()).getLatestPrices();
        if (data.size() > 0)
        {
            return Optional.of(data.get(data.size() - 1));
        }
        else
        {
            return Optional.empty();
        }
    }

Habt Ihr eine andere Idee?

Zumindest getLatestQuote(Security) lädt mE eigentlich nur noch high/low/volume nach, die im Security Chart dann rechts angezeigt werden.

Ich habe mir gerade noch mal die anderen Implementierungen der QuoteFeeds angeschaut und in den meisten Fällen ist es ähnlich gelöst (Finnhub, HTMLTable, Quandl,…).

Dann werde ich das mal als Pull Request einstellen.

Here you go:

1 Like

Sorry, ich habe deine Frage eben erst gelesen. Den heutigen Kurs habe ich schon manuell eingegeben. Da @inv-trad den Codefix schon eingeplant hat, gehe ich davon aus, dass du keine Prüfung mehr von mir erwartest.

Das Problem ist wohl folgendes:

Beim Hinzufügen der historischen Kurse wird geprüft, dass das Datum des Kurse vor dem aktuellen Datum liegt. Die Idee war dass man keine zukünftigen Kurse (aus Versehen) hinzufügt.

 for (SecurityPrice p : prices)
 {
      if (p.getDate().isBefore(now))       <== der Check
      {
             addPrice(p, ...);

Aber Portfolio Report liefert auch für den aktuellen Tag einen Schlusskurse (ich nehme an wenn der schon vorliegt). Der wird dann nicht hinzugefügt.

Das fixe ich.

3 Like

Ist jetzt gefixt: Version 0.46.4

1 Like