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

#90
Bitte sei mir nicht böse, aber deine Files können so gar nicht funktionieren.

Tradegate.pm:
- du füllst hier 'change', aber in 95_Shares.pm suchst du nach 'changenew, das passt nicht zusammen. Bitte bleib bei Tradegate bei change (das ist der Standard in dem Modul) und ändere den Namen in 95_Shares.pm
- du verwendest für change den Index 23 und für p_change den Index 25. Hier passen meines Erachtens 2 Dinge nicht. Zwischen den Einträgen auf der Webseite liegen immer genau 3 TD und nicht 2 wie bei dir. Selbst wenn der Index richtig wäre, dann würdest du maximal change von Heute und den prozentualen Change von Gestern bekommen. Außerdem scheint dein besonderes Institut eine andere Webseite zu generieren als die aus Krefeld. Ich verwende aktuell Index 16 für change und 19 für p_change.

95_Shares.pm:
- ganz oben bei "my $attr ..." fehlt immer noch 'headercolor', das Attribut lässt sich sonst nicht setzen
- in der Zeile 724 fehlt sowas hier: '$val =~ s/\&//g;' damit das Ganze nicht bei einem & im Namen abraucht
- in der Zeile 831 habe ich das hier drin: 'if( $1 && $1 ne "" );' sonst bekomme ich haufenweise Fehler im Log, das $1 uninitialisiert ist (vermutlich stimmt in der Zeile davor schon irgendwas nicht...)
- closenew vs close hatte ich ja schon oben erwähnt...
- einige Dinge wie z.b. '$trend  = $hash->{READINGS}{"depot_change_day"}{VAL};' werden niemals Daten enthalten und deshalb haufenweise Fehler im Logfile erzeugen. Das Problem hierbei ist, das diese Readings an ein Attribut gekoppelt sind, was mehr als fragwürdig ist. Ich habe bei mir erst folgendes Attribut setzen müssen: 'attr Depot_Xetra shareFurtherReadings diff_day,change_day,close,last,return'. Leider ist das nirgends beschrieben und das habe ich mir erst mühsam aus dem Code lutschen müssen. Ich habe bei mir deshalb Zugriffe auf solche Dinge wie z.b. '$hash->{READINGS}{"depot_change_day"}{VAL}' abgefangen und schaue erst mal ob das Ding überhaupt existiert und falls nicht, setze ich es auf 0.0. Das reduziert dann die Fehler im Log auf 0.

Ich hänge hier noch mal meine voll funktionsfähigen Versionen (ich habe deine letzten Änderungen übernommen) an. Bitte vergleich die mal mit deinen und übernimm bitte diese Änderungen. Wichtig ist, das man folgendes Attribut setzt:

attr <device> shareFurtherReadings diff_day,change_day,close,last,return
Und falls man iOS verwendet auch noch das hier:

attr <device> arrows &#8593;,&#8599;,&#8594;,&#8600;,&#8595;
Deine Links müssen vermutlich eher so aussehen (boerse fehlt bei dir). Bei mir passiert aber irgendwie gar nichts mit dem Attribut allein...:

Xetra: attr Depot_Xetra sourcesLinks https://web.s-investor.de/app/detail.htm?INST_ID=0000057&boerse=GER&isin=$SYMBOL
Tradegate: attr Depot_Xetra sourcesLinks https://web.s-investor.de/app/detail.htm?INST_ID=0000057&boerse=TDG&isin=$SYMBOL

Prof. Dr. Peter Henning

#91
Ich bin keinesfalls böse, denn wie gesagt hatte ich schwerwiegende gesundheitliche Probleme, die mich vom ordentlichen Testen abhielten.

Indizes 23/25 vs. 16/19: Stimmt - ich hatte in meinem Tran ältere Testdateien geändert und hier hoch geladen. Und das nicht gemerkt, weil mein FHEM auf die Versionen mit meiner Instituts-ID 0003055 zugegriffen hat. Und nein: Die Webseiten sind identisch. Irgendwie müsste man das noch konfigurierbar machen, so dass Finance::Quote über verschiedene Institute läuft.

Zitat- ganz oben bei "my $attr ..." fehlt immer noch 'headercolor', das Attribut lässt sich sonst nicht setzen
OK, stimmt, übernommen.
Zitat- in der Zeile 724 fehlt sowas hier: '$val =~ s/\&//g;' damit das Ganze nicht bei einem & im Namen abraucht
Abrauchen nicht, aber die Anzeige stimmt nicht. Übernehme ich auch.
Zitat- in der Zeile 831 habe ich das hier drin: 'if( $1 && $1 ne "" )
Komisch, ich bekomme - bei mehr als 50 Papieren - keine Fehler im Log. Aber gut, diese Absicherung ist immer besser.

ZitatDeine Links müssen vermutlich eher so aussehen (boerse fehlt bei dir)
Stimmt nicht ganz. Wenn boerse fehlt, werden die Kurse in der Sparkassen-Darstellung automatisch von Gettex geholt - und das sind die Xetra-Kurse. Siehe https://www.gettex.de/

Also:Weitestgehend Übereinstimmung, und Danke für die Unterstützung. Auf die habe ich natürlich in der aktuellen Version auch hingewiesen.

Holla, noch etwas:
ZitatBei mir passiert aber irgendwie gar nichts mit dem Attribut allein...:
: Nene, da muss stehen xetra:[hier der link],tradegate:[hier der link], etc..

LG

pah

mumpitzstuff

Dann auf jeden Fall eine gute Besserung!

mumpitzstuff

Ich habe mir erlaubt einen PR im Originalprojekt mit deinen Änderungen zu machen und auch noch einen Bug gefixt, der aufgetreten ist, weil eine meiner Aktien den Wert 1000 überschritten hatte. In diesem Fall wird aus 1000 eine 1.000, was zu Problemen geführt hat.

https://github.com/finance-quote/finance-quote/pull/304

Prof. Dr. Peter Henning

Zitatund auch noch einen Bug gefixt, der aufgetreten ist, weil eine meiner Aktien den Wert 1000 überschritten hatte
Äh ja, wo genau?

LG

pah

mumpitzstuff

Überall dort wo , durch einen Punkt ersetzt wurde, musste man vorher erst mal einen Punkt durch nichts ersetzten, damit zuerst die tausender Punkte weg sind.

Step 1: 1.000,50 -> 1000,50
Step 2: 1000,50 -> 1000.50

Prof. Dr. Peter Henning

Komisch, alle meine Werte werden korrekt angezeigt. Und da ist ehrlich gesagt nicht viel unter 1000. Also wo tritt das denn auf?

LG

pah

mumpitzstuff

Wenn der Wert einer einzelnen Aktie 1000 überschritten hatte, dann fügt die Webseite einen Punkt hinzu. Dieser Punkt wurde nicht entfernt und im Reading stand dann 1.005.00, woraus dann 1 anstatt 1000 wurde. Das hat dazu geführt, das eine meiner Aktien 99% ihres Wertes verloren haben (laut deinem Modul). Der Fix entfernt den Punkt und alles ist wieder gut.

Der PR ist im Originalprojekt gemerged. Im Release 1.57 sollte es dann drinn sein.

mumpitzstuff

#98
Könntest du folgendes mal ausprobieren bitte?

$q = Finance::Quote->new('XETRA', 'xetra' => {INST_ID => '0000057'});
%info = $q->fetch("xetra", "<any ISIN>");

Das wäre im Prinzip eine Möglichkeit die Instituts ID von außen vorzugeben. Ich bin mir allerdings nicht sicher, wie du das dann in dein Modul unterbringen willst. Würde das deiner Meinung nach funktionieren? Wenn ja, dann würde ich Tradegate und sinvestor auch noch anpassen und einen PR stellen.

Die Instituts IDs kann man hier abfragen:
https://web.s-investor.de/app/webauswahl.jsp

Prof. Dr. Peter Henning

OK, werde ich spätestens Sonntag testen.

LG

pah

Prof. Dr. Peter Henning

Folgender Vorschlag für solche Parameter:

- sie werden gesetzt mit dem Befehl set <Depotname> key <keyname> <keyvalue>
- sie werden mit den FHEM-Funktionen getKeyValue und setKeyValue lokal abgespeichert (nicht im Klartext, natürlich)

Beim Aufruf von des quoters in Finance::Quote wird abhängig von der eingestellten source dieser Parameter geholt und mit an den quoter übergeben.

Beispielsweise braucht man für alphavantage einen API-Key, dieser müsste also vor dem Aufruf von alphavantage (z.B. für Devisenkurse) gesetzt werden als

set <Depotname> key alphavantage {API_KEY => 'xxxxxxx'}

und dementsprechend für xetra, tradegate und sinvestor

set <Depotname> key xetra {INST_ID => 'yyyyyyyy'}

In der Dokumentation von Shares.pm wird darauf hingewiesen.

Allerdings sehe ich noch nicht, dass das mit der Instituts-ID in das allgemein Finance::Quote einfließen kann. Da hängen ja auch noch solche Sachen wie gnucash dran, in denen dann ein Umbau nötig wäre.

LG

pah

mumpitzstuff

Das Default Verhalten ist aber exakt gleich geblieben. Das kannst du einfach prüfen mit:

$q = Finance::Quote->new();
%info = $q->fetch("xetra", "<any ISIN>");

Wenn keine INST_ID vorhanden ist, wird einfach weiterhin die Krefeld ID verwendet.

Wenn du einen Weg siehst das im Modul zu verwenden, dann bereite ich den PR entsprechend vor...


romakrau

Tag zusammen,
ich bekomme neuerdings eine Fehlermeldung im log:

Use of uninitialized value $1 in string ne at ./FHEM/95_Shares.pm line 822.
Bevor ihr fragt hier das List eines Depots:

Internals:
   FUUID      645a2782-f33f-e93f-17f7-ff597c938ea50aa0
   NAME       Depot_US
   NR         364
   STATE      2480.22 EUR ( -10.47 % = -289.98 EUR)  2023-07-24 13:35:04
   TYPE       Shares
   eventCount 3
   DATA:
     categories:
       Kommunikation:
         depot_value 2480.22
         depot_value_entry 2770.20
         depot_value_prev 2480.22
   OLDREADINGS:
   READINGS:
     2023-07-24 13:35:04   US92343V1044_category Kommunikation
     2023-07-24 13:35:04   US92343V1044_change -10.47
     2023-07-24 13:35:04   US92343V1044_count 81
     2023-07-24 13:35:04   US92343V1044_diff -322.54
     2023-07-24 13:35:04   US92343V1044_last 34.058626
     2023-07-24 13:35:04   US92343V1044_name Verizon Communications Inc. Registered Shares DL -,10
     2023-07-24 13:35:04   US92343V1044_value 2758.75
     2023-07-24 13:35:04   depot_change    -10.47
     2023-07-24 13:35:04   depot_change_day -0.00
     2023-07-24 13:35:04   depot_diff      -289.98
     2023-07-24 13:35:04   depot_diff_day  -0.00
     2023-07-24 13:35:04   depot_value     2480.22
     2023-07-24 13:35:04   depot_value_entry 2770.20
     2023-07-24 13:35:04   exchangerate    0.89903802930864 EUR/USD
     2023-07-24 13:35:04   state           2480.22 EUR ( -10.47 % = -289.98 EUR)  2023-07-24 13:35:04
   helper:
Attributes:
   defaultSource xetra
   depotCurrency EUR:€
   event-on-change-reading depot_value
   pollInterval 14400
   queryTimeout 120
   shareCurrency USD:$
   stocks     US92343V1044:81:2770.2:Kommunikation
   verbose    0

Welche Version muss ich denn nutzen? Die aus der Antwort #91 vom 14.06.2023 und wohin mit der XetraNEW.pm? Ersetzen der Xetra.pm in /Finance/Quote?

Gruß Roman

Prof. Dr. Peter Henning

Ich teile Euren Ärger über die ausbleibenden Readings...

Im angehängten Bild sieht man oben den (von Xetra geholten) Gesamtwert zweier Depots über den heutigen Tag - obwohl ich keine Transaktionen vorgenommen habe. Im unteren Bild die Spartenwerte Energie und Wasserstoff über den heutigen Tag - vollkommen absurd. Eine Lösung habe ich aber noch nicht.

LG

pah