Neue Module 95_Shares.pm und 95_ShareMaster.pm

Begonnen von Prof. Dr. Peter Henning, 08 April 2022, 15:08:46

Vorheriges Thema - Nächstes Thema

mumpitzstuff

Wird bei euch der Trend angezeigt? Bei mir nicht und im Log werde ich zugespammt mit Fehlern.

2023.06.02 13:00:36.083 1: PERL WARNING: Use of uninitialized value $trend in numeric gt (>) at ./FHEM/95_Shares.pm line 1034.
2023.06.02 13:00:36.083 1: stacktrace:
2023.06.02 13:00:36.084 1:     main::__ANON__                      called by ./FHEM/95_Shares.pm (1034)
2023.06.02 13:00:36.084 1:     main::Shares_MakeTable              called by ./FHEM/95_ShareMaster.pm (520)
2023.06.02 13:00:36.084 1:     main::ShareMaster_CollectTables     called by ./FHEM/01_FHEMWEB.pm (3452)
2023.06.02 13:00:36.084 1:     main::FW_devState                   called by ./FHEM/01_FHEMWEB.pm (3239)
2023.06.02 13:00:36.084 1:     main::FW_Notify                     called by fhem.pl (3980)
2023.06.02 13:00:36.084 1:     main::CallFn                        called by fhem.pl (3892)
2023.06.02 13:00:36.084 1:     main::DoTrigger                     called by fhem.pl (5002)
2023.06.02 13:00:36.084 1:     main::readingsEndUpdate             called by ./FHEM/95_ShareMaster.pm (427)
2023.06.02 13:00:36.084 1:     main::ShareMaster_CollectSubdepots  called by fhem.pl (3503)
2023.06.02 13:00:36.084 1:     main::HandleTimeout                 called by fhem.pl (705)

2023.06.02 13:02:16.279 1: PERL WARNING: Use of uninitialized value $1 in string ne at ./FHEM/95_Shares.pm line 822.

2023.06.02 13:02:16.279 1: stacktrace:
2023.06.02 13:02:16.279 1:     main::__ANON__                      called by ./FHEM/95_Shares.pm (822)
2023.06.02 13:02:16.279 1:     main::Shares_QueryQuotesFinished    called by (eval 21909) (1)
2023.06.02 13:02:16.279 1:     (eval)                              called by fhem.pl (1173)
2023.06.02 13:02:16.279 1:     main::AnalyzePerlCommand            called by fhem.pl (1202)
2023.06.02 13:02:16.279 1:     main::AnalyzeCommand                called by fhem.pl (1129)
2023.06.02 13:02:16.279 1:     main::AnalyzeCommandChain           called by ./FHEM/98_telnet.pm (263)
2023.06.02 13:02:16.279 1:     main::telnet_Read                   called by fhem.pl (3980)
2023.06.02 13:02:16.279 1:     main::CallFn                        called by fhem.pl (784)
2023.06.02 13:02:16.281 1: [Shares_QueryQuotesFinished] reading "close" replaced by "last" for LU0075056555
2023.06.02 13:02:16.281 1: [Shares_QueryQuotesFinished] reading "close" replaced by "last" for IE0004866889
2023.06.02 13:02:16.282 1: [Shares_QueryQuotesFinished] reading "close" replaced by "last" for GB0030932676

Ich glaube der untere Fehler hängt mit dem & im Namen des einen Fonds zusammen...

curt

Zitat von: mumpitzstuff am 02 Juni 2023, 13:11:19Wird bei euch der Trend angezeigt?

Du meinst depot_change und depot_diff_day? Dazu siehe die Antwort von @pah in #1 in https://forum.fhem.de/index.php?topic=133752.msg1277234#msg1277234
RPI 4 - Jeelink HomeMatic Z-Wave

mumpitzstuff

Hmm das Problem mit dem Trend vom Depot habe ich bei einem von 2 Depots. Allerdings sollte auch bei den Einzelaktien innerhalb eins Depots ein Trend angezeigt werden, aber der ist ebenfalls überall komplett leer.

curt

Zitat von: mumpitzstuff am 03 Juni 2023, 00:41:29Hmm das Problem mit dem Trend vom Depot habe ich bei einem von 2 Depots.

Ich würde fast wetten wollen, dass Du das Problem bei beiden hast - bei dem anderen werden veraltete Werte angezeigt.

Lösung?
Schön wäre, wenn @pah das im Modul erledigt. Sonst wird das eine Rumhampelei mit Readings...
RPI 4 - Jeelink HomeMatic Z-Wave

Prof. Dr. Peter Henning

Erst einmal muss ich Euch den Zahn ziehen, dass Tradegate etwas Anderes als Xetra ist. Tradegate ist nur der "Billigzugriff" auf Xetra.

Alle Symbole, die bei Xetra gehandelt werden können, sieht man hier: https://www.xetra.com/xetra-de/instrumente/alle-handelbaren-instrumente

Die hartcodierte Farbe ist natürlich ein Überbleibsel aus einer Development-Version (wie sollte ich diesen Bug auch bemerken...?) Die Pfeile sind Standard-Unicode. Kann der Mac das nicht?

Das mit den Trends muss ich ab morgen angehen, wenn aktuelle Kurse geliefert werden.

LG

pah

mumpitzstuff

Könntest du auch deinen Blick bitte noch einmal über diese Logik schweifen lassen? Mir kommt die nicht richtig vor:

$trendf   = $trend."% ".(($trend>1)?"🢁":(($trend>0.1)?"🢅":(($trend==0)?"🢂":(($trend>-0.1)?"🢆":"🢃"))));
Ich hätte eher sowas hier erwartet:

$trendf   = $trend."% ".(($trend>1)?"🢁":(($trend>0.1)?"🢅":(($trend>=-0.1)?"🢂":(($trend>=-1.0)?"🢆":"🢃"))));
Ich bin leider aktuell im Urlaub, aber die Zeichen werden anscheinend auf Apple Geräten nicht dargestellt bzw. liegen außerhalb des Bereiches den Safari akzeptiert. Ich hatte das bei mir durch Pfeile ersetzt, die weiter vorne sind. Diese werden dann auch auf Apple Geräten dargestellt, wenn vielleicht auch nicht ganz so schön. Ich kann nächste Woche die von mir aktuell verwendeten Zeichen mal posten...

Prof. Dr. Peter Henning

ZitatMir kommt die nicht richtig vor:
Wer rechnet auch mit fallenden Kursen?

LG

pah

Prof. Dr. Peter Henning

OK, ich bin etwas weiter. Die beiden Module aus Finance::Quote. die auf Xetra bzw. Tradegate zugreifen, laufen beide über die s-investor-Seite des Sparkassenverbundes. Und beide haben einen Bug, insofern als sie nicht den Vortageskurs abgreifen, sondern zweimal den aktuellen Kurs zurückliefern.

Ich muss also Finance::Quote::XETRA patchen...

LG

pah

Prof. Dr. Peter Henning

OK, soweit, so gut. Anbei eine aktualisierte Version von 95_Shares.pm. Pfeilsymbole sowie die Header-Farbe sind durch Attribute eindtellbar.
Ferner XETRANEW.pm und TradegateNEW.pm. Bitte mit denen die Dateien XETRA.pm und Tradegate.pm in eurem System überschreiben- bei mir liegen die in /usr/local/share/perl/5.24.1/Finance/Quote

Damit werden auch die Kursveränderungen (absolut und prozentual) geholt. Extrem unschön finde ich an diesen Bestandteilen von Finance::Quote, dass sie die Daten nicht über ein API holen, sondern von der Webseite EINES Institutes, nämlich der Sparkasse Krefeld abgreifen. Erstmal aber geht das, ich werde über etwas anderes nachdenken. Die Verlinkung auf Charts etc. geht auch (fast), wenn man in das Attribut sourcesLinks einträgt xetra:https://web.s-investor.de/app/detail.htm?INST_ID=0003055&isin=$SYMBOL. Ich kämpfe noch etwas mit dem ":" in der URL, das wird irgendwo gefressen.Außerdem fehlt noch die Umstellung der Sortierung auf den Namen - eine Sortierung nsch ISIN ist nun wirklich Unsinn.

curt

#84
Zitat von: Prof. Dr. Peter Henning am 04 Juni 2023, 15:22:52Erst einmal muss ich Euch den Zahn ziehen, dass Tradegate etwas Anderes als Xetra ist. Tradegate ist nur der "Billigzugriff" auf Xetra.

In der hohen Theorie sind Xetra und Tradegate unterschiedliche (virtuelle) Börsen. Es ist gar nicht ausgemacht, was die da für einen Kurs ausspielen, das kann durchaus der Schlusskurs des jeweiligen eigenen Handelsplatzes sein.

Zitat von: Prof. Dr. Peter Henning am 05 Juni 2023, 18:19:14Anbei eine aktualisierte Version von 95_Shares.pm.

Ich danke herzlich und baue mir das anschließend testweise ein.

Zitat von: Prof. Dr. Peter Henning am 05 Juni 2023, 18:19:14Extrem unschön finde ich an diesen Bestandteilen von Finance::Quote, dass sie die Daten nicht über ein API holen, sondern von der Webseite EINES Institutes, nämlich der Sparkasse Krefeld abgreifen.

Autsch. Wobei sich die Sparkassen real ja eines gemeinsamen Rechenzentrums bedienen. Ideal ist das trotzdem aus vielen Gründen nicht; irgendwann schalten die uns ggf. ab.
Eigentlich wollen wir ja was anderes: Kostenfreie Tages- und Schlusskurse bei einem Anbieter, bei dem wir (unsere Zugriffe) im Rauschen untergehen. Im Idealfall natürlich die der Deutschen Börse ... aber was ist in diesem Leben schon ideal...

Zitat von: Prof. Dr. Peter Henning am 05 Juni 2023, 18:19:14Erstmal aber geht das, ich werde über etwas anderes nachdenken.

Ungefragt:
Möglicherweise muss über das Gesamtkonzept nachgedacht werden. Das könnte in die Richtung "ein [konkretes] Wertpapier - ein Device" gehen. Und der ganze optische Schmonzes und ggf. auch Sharemaster fliegen weg.
Begründung: So wäre das näher am FHEM-Konzept. Ich beispielsweise lasse mir die Kurse, Trend usw. meiner beiden Depots sowie eines Beobachtungsdepots in FTU3 anzeigen, ich benötige die optische Aufbereitung nicht. (Momentan führt das dazu, dass ich für jede einzelne Position ein Share und ein Sharemaster habe...)
Mir wären eher definierbare positive und negative Schwellwerte wichtig; wir schrieben ansatzweise schon darüber.

Wie dem auch sei: Zunächst herzlichen Dank.
RPI 4 - Jeelink HomeMatic Z-Wave

Prof. Dr. Peter Henning

Zitat"ein [konkretes] Wertpapier - ein Device"
Sicher nicht. Wer das möchte kann es heute schon mit HTTPMOD realisieren. Für mich wäre das unpraktikabel, da ich in meinem Hauptdepot eine richtig große Zahl verschiedener Papiere habe.

LG

pah

Prof. Dr. Peter Henning

OK, gut (oder schlechte) Nachricht: mit der aktuellen Version 1.56 von Finance::Quote geht yahoo_json als Datenquelle wieder. Auch in Gnucash.

Den Wechsel hin und her mache ich genau einmal mit - sollte yahoo_json nochmal ausfallen, werde ich in Shares.pm die Möglichkeit einbauen, mit verschiedenen Symbolen für ein Papier zu arbeiten.

LG

pah

mumpitzstuff

#87
Zitat von: Prof. Dr. Peter Henning am 05 Juni 2023, 18:19:14OK, soweit, so gut. Anbei eine aktualisierte Version von 95_Shares.pm. Pfeilsymbole sowie die Header-Farbe sind durch Attribute eindtellbar.
Ferner XETRANEW.pm und TradegateNEW.pm. Bitte mit denen die Dateien XETRA.pm und Tradegate.pm in eurem System überschreiben- bei mir liegen die in /usr/local/share/perl/5.24.1/Finance/Quote

Damit werden auch die Kursveränderungen (absolut und prozentual) geholt. Extrem unschön finde ich an diesen Bestandteilen von Finance::Quote, dass sie die Daten nicht über ein API holen, sondern von der Webseite EINES Institutes, nämlich der Sparkasse Krefeld abgreifen. Erstmal aber geht das, ich werde über etwas anderes nachdenken. Die Verlinkung auf Charts etc. geht auch (fast), wenn man in das Attribut sourcesLinks einträgt xetra:https://web.s-investor.de/app/detail.htm?INST_ID=0003055&isin=$SYMBOL. Ich kämpfe noch etwas mit dem ":" in der URL, das wird irgendwo gefressen.Außerdem fehlt noch die Umstellung der Sortierung auf den Namen - eine Sortierung nsch ISIN ist nun wirklich Unsinn.

Ich habe jetzt alles bei mir mal eingefügt aber tradegate ist jetzt bei sources komplett verschwunden. Mit anderen Worten ich hatte deine Änderungen eingespielt (noch ohne fhem neu zu starten und hier war tradegate noch vorhanden und Kurse wurden abgeholt usw. Danach habe ich fhem neu gestartet und sehe jetzt diesen Fehler im log:

2023.06.11 17:31:57.294 1: PERL WARNING: Undefined fetch-method tradegate passed to Finance::Quote::fetch at ./FHEM/95_Shares.pm line 710.
2023.06.11 17:31:57.294 1: stacktrace:
2023.06.11 17:31:57.294 1:     main::__ANON__                      called by /usr/share/perl/5.28/Carp.pm (291)
2023.06.11 17:31:57.294 1:     Carp::carp                          called by /usr/local/share/perl/5.28.1/Finance/Quote.pm (597)
2023.06.11 17:31:57.294 1:     Finance::Quote::fetch               called by ./FHEM/95_Shares.pm (710)
2023.06.11 17:31:57.294 1:     main::Shares_QueryQuotesBlocking    called by FHEM/Blocking.pm (194)
2023.06.11 17:31:57.294 1:     main::BlockingStart                 called by FHEM/Blocking.pm (107)
2023.06.11 17:31:57.294 1:     main::BlockingCall                  called by ./FHEM/95_Shares.pm (635)
2023.06.11 17:31:57.294 1:     main::Shares_QueryQuotes            called by fhem.pl (3503)
2023.06.11 17:31:57.294 1:     main::HandleTimeout                 called by fhem.pl (705)

Rufe ich jetzt die verfügbaren sourcen ab, dann taucht dort auch tradegate nicht mehr auf. Das war vor dem fhem restart definitiv noch da.

Bei xetra sieht es besser aus. Das ist nach dem Update sowohl als Source vorhanden und es kommt bei dem einen Papier was ich da drin habe auch irgendwas an, allerdings auch mit einem Fehler:

2023.06.11 21:34:55.350 1: PERL WARNING: Use of uninitialized value $1 in string ne at ./FHEM/95_Shares.pm line 829.
2023.06.11 21:34:55.350 1: eval: {Shares_QueryQuotesFinished('Depot_Xetra|IE0004866889&exchange&KVG Fondskurse|IE0004866889&change&-|IE0004866889&symbol&IE0004866889|IE0004866889¤cy&EUR|IE0004866889&p_change&-|IE0004866889&last&993.7200|IE0004866889&success&1|IE0004866889&isodate&2023-06-09|IE0004866889&name&Barings Intl-Hong Kong China Regist.Units Cl.A EO Inc. o.N.|IE0004866889&price&993.7200|IE0004866889&method&xetra|IE0004866889&volume&0|IE0004866889&date&06/09/2023|IE0004866889&close&986.8300')}
2023.06.11 21:34:55.350 1: stacktrace:
2023.06.11 21:34:55.350 1:     main::__ANON__                      called by ./FHEM/95_Shares.pm (829)
2023.06.11 21:34:55.350 1:     main::Shares_QueryQuotesFinished    called by (eval 1761) (1)
2023.06.11 21:34:55.350 1:     (eval)                              called by fhem.pl (1173)
2023.06.11 21:34:55.350 1:     main::AnalyzePerlCommand            called by fhem.pl (1202)
2023.06.11 21:34:55.350 1:     main::AnalyzeCommand                called by fhem.pl (1129)
2023.06.11 21:34:55.350 1:     main::AnalyzeCommandChain           called by ./FHEM/98_telnet.pm (263)
2023.06.11 21:34:55.350 1:     main::telnet_Read                   called by fhem.pl (3980)
2023.06.11 21:34:55.350 1:     main::CallFn                        called by fhem.pl (784)

Als Readings steht das dann hier drin, woraus sich aber auch kein Trend ableiten lässt, weil die entsprechenden Readings fehlen (deine Änderungen sind in Finance::Quote eingebaut für xetra):

setstate Depot_Xetra 3974.88 EUR ( 5.88 % = 220.88 EUR)  2023-06-11 21:34:55
setstate Depot_Xetra 2023-06-11 21:34:55 IE0004866889_category finance
setstate Depot_Xetra 2023-06-11 21:34:55 IE0004866889_change 5.88
setstate Depot_Xetra 2023-06-11 21:34:55 IE0004866889_count 4
setstate Depot_Xetra 2023-06-11 21:34:55 IE0004866889_diff 220.88
setstate Depot_Xetra 2023-06-11 21:34:55 IE0004866889_last 993.7200
setstate Depot_Xetra 2023-06-11 21:34:55 IE0004866889_name Barings Intl-Hong Kong China Regist.Units Cl.A EO Inc. o.N.
setstate Depot_Xetra 2023-06-11 21:34:55 IE0004866889_price 993.7200
setstate Depot_Xetra 2023-06-11 21:34:55 IE0004866889_value 3974.88
setstate Depot_Xetra 2023-06-11 21:34:55 depot_change 5.88
setstate Depot_Xetra 2023-06-11 21:34:55 depot_change_day 0.70
setstate Depot_Xetra 2023-06-11 21:34:55 depot_diff 220.88
setstate Depot_Xetra 2023-06-11 21:34:55 depot_diff_day 27.56
setstate Depot_Xetra 2023-06-11 21:34:55 depot_value 3974.88
setstate Depot_Xetra 2023-06-11 21:34:55 depot_value_entry 3754.00
setstate Depot_Xetra 2023-06-11 21:34:55 exchangerate 1 EUR/EUR
setstate Depot_Xetra 2023-06-11 21:34:55 state 3974.88 EUR ( 5.88 % = 220.88 EUR)  2023-06-11 21:34:55

PS: Ich habe jetzt mal die Änderungen mit "sudo cpan -f -i Finance::Quote" rückgängig gemacht und jetzt kommen nach einem fhem restart auch wieder Werte für tradegate rein. Es scheint also defintiv an den Änderungen von dir zu liegen.

Ich habe deine Version von oben jetzt auch noch mal angepasst, weil irgendwie einiges nicht gepasst hat. Meins sieht jetzt so aus:

95_Shares.pm

Geändert habe ich folgendes:

- das Attribut für die Hindergrundfarbe konnte man nicht setzen, weil es in der Attributliste gefehlt hatte
- ich habe & im Namen eines Wertpapieres durch nichts ersetzt (dann wird bei meinem Fonds wenigstens etwas vernünftiges angezeigt)
- ich habe die Logik für fallende/steigende Kurse noch mal angepasst, weil ich diese besser finde
- ich habe die existenz einiger Werte abgefragt und wenn diese nicht vorhanden sind, dann nehme ich 0.0 als default (verhindert massenweise Fehler im Log)

Prof. Dr. Peter Henning

Sorry, mein Fehler. Und da ich in der letzten Woche einen gesundheitlichen Notfall hatte, komme ich erst jetzt dazu. In der Datei TradegateNEW.pm war ein Tippfehler - und dann wird das eben nicht als Quelle angezeigt. Ist in der Anlage behoben, ebenso ist 95_Shares.pm noch um einen kleinen Bug bereinigt.

Damit die Links in der Übersicht korrekt angezeigt werden, müssen jetzt jeweils die Protokoll-Anteile im Attribute sourcesLinks angegeben werden.

Also z.B.
xetra:https://web.s-investor.de/app/detail.htm?INST_ID=<HIER INSTITUTSID DER SPARKASSE>&isin=$SYMBOL
yahoo_json:http://de.finance.yahoo.com/quote/$SYMBOL

Instituts-ID ist z.B. 0000057 (Sparkasse Krefeld, für mich benutze ich meine eigene). Womit ich noch hadere, ist die Fehlerseite, die man beim Klick auf das Symbol bekommt. Angeblich sei der Referrer nicht freigeschaltet. Ein Reload der Seite führt aber dann zur korrekten Kursanzeige.

LG

pah

mumpitzstuff

Ich habe inzwischen alles hinbekommen. Ich poste heute Abend mal meine Version bzw. vergleiche es mal mit der von dir.