Neues Modul: 98_STOCKQUOTES

Begonnen von vbs, 04 Februar 2015, 21:01:42

Vorheriges Thema - Nächstes Thema

masterpete23

Zitat von: vbs am 27 November 2015, 12:47:47
Ich fürchte du musst mal sagen, was du genau gemacht hast. Logs dazu wären auch gut.
Oh nachdem ich den Thread aus der Versenkung geholt habe, gibt es  scheinbar viele Interessenten :)
Ich habe ein depot angelegt und dann 2 Stocks gekauft mit Anzahl und Preis.

Achja noch was - wie bekomme ich das gut geplottet?

vbs

Zitat von: Mumpitz am 30 November 2015, 00:59:44
Ist es auch möglich den einzelnen Positionen die Währung beizugeben?
Als Beispiel habe ich Wertpapiere einer Bank in CHF sowie einer anderen Bank in USD.
Es werden defaultmäßig alle Kurse in Euro umgerechnet. Es gibt aber das Attribut "currency" mit dem du die Währung auf eine andere Umstellen kannst.

Zitat von: masterpete23 am 30 November 2015, 06:36:07
Ich habe ein depot angelegt und dann 2 Stocks gekauft mit Anzahl und Preis.
Ich bräuchte das noch etwas genauer inkl. Logs und Device-Listing um das nachstellen zu können.

Zitat von: masterpete23 am 30 November 2015, 06:36:07
Achja noch was - wie bekomme ich das gut geplottet?
Schau dir mal das SVG-Modul an, damit kann man gut plotten.

Mumpitz


Zitat von: vbs am 30 November 2015, 09:23:30
Es werden defaultmäßig alle Kurse in Euro umgerechnet. Es gibt aber das Attribut "currency" mit dem du die Währung auf eine andere Umstellen kannst.

Ja das habe ich auf CHF geändert. Aber dadurch werden jetzt natürlich auch meine Wertpapiere in USD in CHF angezeigt.

Gerne würde ich pro Position die Währung angeben und danach das Gesamtergebnis in CHF umgewandelt haben!

Geht das?
So quasi currency positionen...

masterpete23

#63
Mumpitz eine Idee wäre ein zweites Depot anzulegen. Oder?
Vbs kann ich von zu Hause machen. Kann per Remote irgendwie keine befehle absetzen


Internals: NAME Depot
NR 120
STATE 2015-11-30 10:20:52
TYPE STOCKQUOTES
Readings:
2015-11-30 10:20:52 531446_d_buy_quote 52.46
2015-11-30 10:20:52 531446_d_buy_value_total 4400
2015-11-30 10:20:52 531446_d_stockcount 83.877
2015-11-30 10:20:52 531446_date 11/30/2015
2015-11-30 10:20:52 531446_errormsg Stock name 531446 not found
2015-11-30 10:20:52 531446_exchange Berlin / Bremen
2015-11-30 10:20:52 531446_high 63.470
2015-11-30 10:20:52 531446_isodate 2015-11-30
2015-11-30 10:20:52 531446_low 63.450
2015-11-30 10:20:52 531446_method bourso
2015-11-30 10:20:52 531446_name UNIRAK NET
2015-11-30 10:20:52 531446_open 63.470
2015-11-30 10:20:52 531446_p_change -0.24
2015-11-30 10:20:52 531446_previous 63.600
2015-11-30 10:20:52 531446_success 1
2015-11-30 10:20:52 531446_symbol HTML
2015-11-30 10:20:52 531446_volume 0
2015-11-30 10:20:52 depot_buy_value_total 4400
2015-11-30 10:20:52 depot_cur_value_total 0
2015-11-30 10:20:52 depot_p_change -100.00
2015-11-30 10:20:52 depot_p_change_total -100.00
2015-11-30 10:20:52 depot_value_diff 0.00
2015-11-30 10:20:52 depot_value_diff_total -4400.00
2015-11-30 10:20:52 state 2015-11-30 10:20:52
Helper:
Attributes: currency EUR
defaultSource europe
pollInterval 2400
queryTimeout 120
room Depot
stocks 531446:83.877:4400,A1CTSU:152.069:16387.28

Ich kann aber auch gerne das ganze neu anlegen, wenn es dann besser zum nachvollziehen ist


vbs

Zitat von: Mumpitz am 30 November 2015, 10:13:19
Gerne würde ich pro Position die Währung angeben und danach das Gesamtergebnis in CHF umgewandelt haben!

Geht das?
So quasi currency positionen...
Das geht so erstmal nicht. Alle Positionen müssen eine einheitliche Währung haben (sonst könnten auch zB die Depotwert-Berechnungen nicht funktionieren). Einzige Lösung wäre wirklich ein eigenes Device dafür anzulegen.

vbs

Hab mal ein paar Bugs behoben und etwas optimiert (Anhang im ersten Post).

@masterpete23
Ich kann dein Problem hier so nicht nachstellen. Manchmal kommt bei einem Update das "last" nicht mit (providerbedingt), aber beim zweiten Updaten kam es bei mir dann immer und wurde korrekt gefüllt.

masterpete23

also.
neues Depot angelegt
dann
Internals:
   NAME       Depot
   NR         193
   STATE      2015-12-04 20:22:59
   TYPE       STOCKQUOTES
   Readings:
     2015-12-04 20:22:59   depot_buy_value_total 0
     2015-12-04 20:22:59   depot_cur_value_total 0
     2015-12-04 20:22:59   depot_p_change  0
     2015-12-04 20:22:59   depot_p_change_total 0
     2015-12-04 20:22:59   depot_value_diff 0.00
     2015-12-04 20:22:59   depot_value_diff_total 0.00
     2015-12-04 20:22:59   state           2015-12-04 20:22:59
   Helper:
Attributes:
   currency   EUR
   defaultSource europe
   pollInterval 2400
   queryTimeout 120
   room       Depot

nun
set Depot buy 531446 83.877 4400
dann
Internals:
   NAME       Depot
   NR         193
   STATE      2015-12-04 20:30:03
   TYPE       STOCKQUOTES
   Readings:
     2015-12-04 20:30:03   531446_d_buy_quote 52.46
     2015-12-04 20:30:03   531446_d_buy_value_total 4400
     2015-12-04 20:30:03   531446_d_stockcount 83.877
     2015-12-04 20:30:03   531446_date     12/04/2015
     2015-12-04 20:30:03   531446_errormsg Stock name 531446 not found
     2015-12-04 20:30:03   531446_exchange Berlin / Bremen
     2015-12-04 20:30:03   531446_high     61.750
     2015-12-04 20:30:03   531446_isodate  2015-12-04
     2015-12-04 20:30:03   531446_low      61.040
     2015-12-04 20:30:03   531446_method   bourso
     2015-12-04 20:30:03   531446_name     UNIRAK NET
     2015-12-04 20:30:03   531446_open     61.550
     2015-12-04 20:30:03   531446_p_change -3.28
     2015-12-04 20:30:03   531446_previous 63.420
     2015-12-04 20:30:03   531446_success  1
     2015-12-04 20:30:03   531446_symbol   HTML
     2015-12-04 20:30:03   531446_volume   0
     2015-12-04 20:30:03   depot_buy_value_total 4400
     2015-12-04 20:30:03   depot_cur_value_total 0
     2015-12-04 20:30:03   depot_p_change  -100.00
     2015-12-04 20:30:03   depot_p_change_total -100.00
     2015-12-04 20:30:03   depot_value_diff 0.00
     2015-12-04 20:30:03   depot_value_diff_total -4400.00
     2015-12-04 20:30:03   state           2015-12-04 20:30:03
   Helper:
Attributes:
   currency   EUR
   defaultSource europe
   pollInterval 2400
   queryTimeout 120
   room       Depot
   stocks     531446:83.877:4400


und nun?

vbs

Nun musst du mal Logs posten. Lass mal 15 Minuten laufen vorher.

masterpete23

Was für logs? Was sollte ich vorher einstellen? Log Level verbose?

Gesendet von meinem Huawei Honor 7


vbs

Das normale FHEM Log. Stockquotes mindestens auf verbose 4.

masterpete23

Meinst du sowas? 15.12.04 10:17:18 4: STOCKQUOTES: Start blocking query 2015.12.04 10:17:18 4: STOCKQUOTES_QueryQuotesBlocking 2015.12.04 10:17:18 4: STOCKQUOTES_QueryQuotesBlocking: Query stockname: 531446 from source europe 2015.12.04 10:17:18 4: STOCKQUOTES_QueryQuotesBlocking: Fetching from source: europe 2015.12.04 10:17:22 4: STOCKQUOTES_QueryQuotesBlocking Return value: Depot2|531446&volume&0|531446&high&61.750|531446&errormsg&Stock name 531446 not found|531446&open&61.550|531446&date&12/04/2015|531446&previous&63.420|531446&exchange&Berlin / Bremen|531446&low&61.550|531446&name&UNIRAK NET|531446&method&bourso|531446&symbol&HTML|531446&isodate&2015-12-04|531446&p_change&-2.63%|531446&success&1 2015.12.04 10:17:22 4: STOCKQUOTES_QueryQuotesFinished 2015.12.04 10:17:22 4: STOCKQUOTES_QueueTimer: 2400 seconds 2015

.12.07 22:30:39 4: STOCKQUOTES: Start blocking query 2015.12.07 22:30:39 4: STOCKQUOTES_QueryQuotesBlocking 2015.12.07 22:30:39 4: STOCKQUOTES_QueryQuotesBlocking: Query stockname: 531446 from source europe 2015.12.07 22:30:39 4: STOCKQUOTES_QueryQuotesBlocking: Fetching from source: europe 2015.12.07 22:30:43 4: STOCKQUOTES_QueryQuotesBlocking Return value: Depot|531446&volume&0|531446&high&61.800|531446&errormsg&Stock name 531446 not found|531446&open&0.00|531446&date&12/07/2015|531446&previous&61.340|531446&exchange&Berlin / Bremen|531446&low&61.690|531446&name&UNIRAK NET|531446&method&bourso|531446&symbol&HTML|531446&isodate&2015-12-07|531446&p_change&0.75%|531446&success&1 2015.12.07 22:30:43 4: STOCKQUOTES_QueryQuotesFinished 2015.12.07 22:30:43 4: STOCKQUOTES_QueueTimer...

   


Gesendet von meinem Huawei Honor 7

klausw

Hallo vbs,

habe mal bisschen Text für die commandref zusammengeklöppelt:

=pod
=begin html

<a name="STOCKQUOTES"></a>
<h3>STOCKQUOTES</h3>
(en | <a href="commandref_DE.html#STOCKQUOTES">de</a>)
<ul>
<a name="STOCKQUOTES"></a>
    Fetching actual stock quotes from various sources<br>
    <b>Preliminary</b><br>
    Perl module  Finance::Quote must be installed:<br>
    <code>cpan install Finance::Quote</code> or <code>sudo apt-get install libfinance-quote-perl</code><br><br>
   
<b>Define</b>
<ul>
<code>define Depot STOCKQUOTES</code><br><br>
</ul>

<a name="STOCKQUOTESset"></a>
<b>Set</b>
<ul>
&lt;Symbol&gt; depends on source. May also an WKN.<br><br>
<li><code>set &lt;name&gt; buy &lt;Symbol&gt; &lt;Amount&gt; &lt;Value of amount&gt;</code><br>
Add an stock exchange securities. If stock exchange securities already exists, new values will be added to old values.<br><br>
</li>
<li><code>set &lt;name&gt; sell &lt;Symbol&gt; &lt;Amount&gt; &lt;Value of amount&gt;</code><br>
Remove an stock exchange securities (or an part of it).<br><br>
</li>
<li><code>set &lt;name&gt; add &lt;Symbol&gt;</code><br>
Watch only<br><br>
</li>
<li><code>set &lt;name&gt; remove &lt;Symbol&gt;</code><br>
Remove watched stock exchange securities.<br><br>
</li>
<li><code>set &lt;name&gt; clearReadings</code><br>
Clears all readings.<br><br>
</li>
<li><code>set &lt;name&gt; update</code><br>
Refresh all readings.<br><br>
</li>
</ul>
 
<a name="STOCKQUOTESget"></a>
<b>Get</b>
<ul>
<li><code>get &lt;name&gt; sources</code><br>
Lists all avaiable data sources.<br><br>
</li>
<li><code>get &lt;name&gt; currency &lt;Symbol&gt;</code><br>
Get currency of stock exchange securities<br><br>
</li>
</ul>

<a name="STOCKQUOTESattr"></a>
<b>Attributes</b>
<ul>
<li>currency<br>
All stock exchange securities will shown in this currency.<br>
Default: EUR, valid values: W&auml;hrungsk&uuml;rzel<br><br>
</li>
<li>defaultSource<br>
Default source for stock exchange securities values.<br>
Default: europe, valid values: from <code>get &lt;name&gt; sources</code><br><br>
</li>
<li>queryTimeout<br>
Fetching timeout in seconds.<br>
Standard: 120, valid values: Number<br><br>
</li>
<li>pollInterval<br>
Refresh interval in seconds.<br>
Standard: 300, valid values: Number<br><br>
</li>
<li>sources<br>
An individual data source can be set for every single stock exchange securities.<br>
Data sources can be fetched with: <code>get &lt;name&gt; sources</code>.<br>
Format: &lt;Symbol&gt;:&lt;Source&gt;[,&lt;Symbol&gt;:&lt;Source&gt;...]<br>
Example: <code>A0M16S:vwd,532669:unionfunds,849104:unionfunds</code><br>
Stock exchange securities not listed in sources will be updated from defaultSource.<br><br>
</li>
<li>stocks<br>
Will be created/modified via buy/sell/add/remove<br>
Contains stock exchange securities informations in format: &lt;Symbol&gt;:&lt;Anzahl&gt;:&lt;Einstandswert&gt;[,&lt;Symbol&gt;:&lt;Anzahl&gt;:&lt;Einstandswert&gt;...]<br><br>
</li>
</ul><br>
</ul><br>
</ul>

=end html

=begin html_DE

<a name="STOCKQUOTES"></a>
<h3>STOCKQUOTES</h3>
(<a href="commandref.html#STOCKQUOTES">en</a> | de)
<ul>
<a name="STOCKQUOTES"></a>
Wertpapierdaten von verschiedenen Quellen holen<br>
<b>Vorbereitung</b><br>
Perl Modul Finance::Quote muss installiert werden:<br>
<code>cpan install Finance::Quote</code> oder <code>sudo apt-get install libfinance-quote-perl</code><br><br>

<b>Define</b>
<ul>
<code>define &lt;name&gt; STOCKQUOTES</code><br><br>
</ul>

<a name="STOCKQUOTESset"></a>
<b>Set</b>
<ul>
&lt;Symbol&gt; h&auml;ngt von den jeweiligen Quellen ab. Kann auch eine WKN sein. Hier muss ggf. experimentiert werden.<br><br>
<li><code>set &lt;name&gt; buy &lt;Symbol&gt; &lt;Menge&gt; &lt;Gesamtpreis&gt;</code><br>
Wertpapier in Depot einbuchen. Wenn dieses Wertpapier bereits vorhanden ist, werden die Neuen einfach dazuaddiert.<br><br>
</li>
<li><code>set &lt;name&gt; sell &lt;Symbol&gt; &lt;Menge&gt; &lt;Gesamtpreis&gt;</code><br>
Wertpapier (auch Teilmenge) wieder ausbuchen.<br><br>
</li>
<li><code>set &lt;name&gt; add &lt;Symbol&gt;</code><br>
Wertpapier nur beobachten<br><br>
</li>
<li><code>set &lt;name&gt; remove &lt;Symbol&gt;</code><br>
Entferne Wertpapier das nur beobachtet wird.<br><br>
</li>
<li><code>set &lt;name&gt; clearReadings</code><br>
Alle Readings l&ouml;schen.<br><br>
</li>
<li><code>set &lt;name&gt; update</code><br>
Alle Readings aktualisieren.<br><br>
</li>
</ul>

<a name="STOCKQUOTESget"></a>
<b>Get</b>
<ul>
<li><code>get &lt;name&gt; sources</code><br>
Verf&uuml;gbare Datenquellen auflisten. Diese werden f&uuml;r die Attribute defaultSource und sources ben&ouml;tigt<br><br>
</li>
<li><code>get &lt;name&gt; currency &lt;Symbol&gt;</code><br>
Wertpapierw&auml;hrung ermitteln<br><br>
</li>
</ul>

<a name="STOCKQUOTESattr"></a>
<b>Attribute</b>
<ul>
<li>currency<br>
W&auml;hrung, in der die Wertpapiere angezeigt werden.<br>
Default: EUR, g&uuml;ltige Werte: W&auml;hrungsk&uuml;rzel<br><br>
</li>
<li>defaultSource<br>
Standardquelle f&uuml;r die Wertpapierdaten.<br>
Default: europe, g&uuml;ltige Werte: alles was <code>get &lt;name&gt; sources</code> ausgibt.<br><br>
</li>
<li>queryTimeout<br>
Timeout beim holen der Daten in Sekunden.<br>
Standard: 120, g&uuml;ltige Werte: Zahl<br><br>
</li>
<li>pollInterval<br>
Aktualisierungsintervall in Sekunden.<br>
Standard: 300, g&uuml;ltige Werte: Zahl<br><br>
</li>
<li>sources<br>
F&uuml;r jedes Wertpapier kann eine eigene Datenquelle definiert werden.<br>
Die Datenquellen k&ouml;nnen &uuml;ber <code>get &lt;name&gt; sources</code> angefragt werden.<br>
Format: &lt;Symbol&gt;:&lt;Source&gt;[,&lt;Symbol&gt;:&lt;Source&gt;...]<br>
Beispiel: <code>A0M16S:vwd,532669:unionfunds,849104:unionfunds</code><br>
Alle nicht aufgef&uuml;hrten Werpapiere werden &uuml;ber die defaultSource abgefragt.<br><br>
</li>
<li>stocks<br>
Wird &uuml;ber buy/sell/add/remove angelegt/modifiziert<br>
Enth&auml;lt die Werpapiere im Format &lt;Symbol&gt;:&lt;Anzahl&gt;:&lt;Einstandswert&gt;[,&lt;Symbol&gt;:&lt;Anzahl&gt;:&lt;Einstandswert&gt;...]<br><br>
</li>
</ul><br>
</ul>

=end html_DE
=cut


kannst ja mal drüberschauen und auch gern an dein Modul anhängen ;)
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

vbs

Wow, fantastisch! Herzlichen Dank! Werde ich mir gerne anschauen!!

Würde ich dann wahrscheinlich mal zum Anlassen nehmen, um zu versuchen, das Modul ins offizielle Repo zu bekommen.

Nochmals danke!

klausw

Zitat von: vbs am 27 Januar 2016, 12:56:51
Würde ich dann wahrscheinlich mal zum Anlassen nehmen, um zu versuchen, das Modul ins offizielle Repo zu bekommen.
Das wäre super.
Mach mal  8)
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

vbs

Ist jetzt eingecheckt. Nochmals besten Dank klausw!

@Mods:
Könnte jemand das Thema bitte nach "Unterstützende Dienste" verschieben? Die Rubrik hab ich in die MAINTAINER.txt eingetragen. Danke!