Hallo zusammen,
vor einiger Zeit habe ich hier mal eine Anfrage hinsichtlich Börsendaten und Ticker gelesen, leider habe ich es gerade nicht mehr über die Suche gefunden.
Das Thema hatte mich damals schon interessiert und ich habe jetzt eine Lösung dafür gefunden.
Die Daten kann man sich über die Yahoo Finance via CSV abholen:
Yahoo:
Yahoo Finance - Business Finance, Stock Market, Quotes, News
CSV Abholen:
http://finance.yahoo.com/d/quotes.csv?s=AAPL&f=snl1hg
Parameter
s = Wertkennzeichen
f = Finance Tags ( s= Ticker n = Name, l1 = aktuellen Kurs, h = Tageshoch, g Tagestief)
Bei mir sieht das im WebFront dann ungefähr so aus:
Und hier noch ein kleines Script dazu:
<?
################################################################################
# Scriptbezeichnung: Internet.StockExchange.ips.php
# Version: 1.0.20170904
# Author: Heiko Wilknitz (@Pitti)
#
# Börsenticker:
# CSV - Yahoo
# http://finance.yahoo.com/
# s = Wertkennzeichen
# f = Finance Tags ( s= Ticker n = Name, l1 = aktuellen Kurs,
# h = Tageshoch, g Tagestief)
# http://finance.yahoo.com/d/quotes.csv?s=AAPL&f=snl1hg
#
#
# Installation:
# - WKN-Array unter Konfiguration mit den entsprechenden Werten befüllen
# - Script in der Konsole ausführen
#
# ------------------------------ Konfiguration ---------------------------------
#
$wkn = array(
"AAPL" => "Apple Inc."
);
#
# ----------------------------------- ID´s -------------------------------------
#
#
################################################################################
if ($_IPS['SENDER'] == "Execute") {
// ID des ArchiveHandler ermitteln
$instances = IPS_GetInstanceListByModuleID('{43192F0B-135B-4CE7-A0A7-1475603F3060}');
$id_archive_handler = $instances[0];
// pro WKN eine Variable
foreach($wkn as $ident => $name) {
$vid = CreateVariableByName($_IPS['SELF'], $name, 2 /*Float*/);
IPS_SetInfo($vid, $ident);
IPS_SetIcon($vid, "Graph");
AC_SetLoggingStatus($id_archive_handler, $vid, true);
}
}
if($_IPS['SENDER'] == "TimerEvent") {
// alle untergeordneten Objekt einsammeln
$ids = IPS_GetChildrenIDs($_IPS['SELF']);
// echo print_r($ids);
foreach ($ids as $id) {
// for each Wertkennzeichen daten holen
$array = IPS_GetObject($id);
// Float-Variable?
if ($array['ObjectType'] == 2) {
$url = 'http://finance.yahoo.com/d/quotes.csv?s='.$array['ObjectInfo'].'&f=snl1hg';
$req = file_get_contents($url); // Lesen der Daten.
$csv = str_getcsv($req, ",");
SetValue($id, $csv[2]);
}
}
}
# ------------------------------ Funktionen ------------------------------------
function CreateVariableByName($id, $name, $type)
{
$vid = @IPS_GetVariableIDByName($name, $id);
if($vid===false) {
$vid = IPS_CreateVariable($type);
IPS_SetParent($vid, $id);
IPS_SetName($vid, $name);
}
return $vid;
}
function CreateEventByName($id, $name, $type)
{
$eid = @IPS_GetEventIDByName($name, $id);
if($eid===false) {
$eid = IPS_CreateEvent($type);
IPS_SetParent($eid, $id);
IPS_SetName($eid, $name);
}
return $eid;
}
################################################################################
?>
Ich habe dann noch einen entsprechenden Timer für Mo-Fr von 9-18 Uhr aller 30min angelegt und im WF die Graphen dazu gepackt. Fertig
Viel Spaß
Heiko