Das mit Huobi finde ich interessant. Die wollen sich einfach nicht in die Karten schauen lassen.
Das mit dem Bucket Shop verstehe ich allerdings nicht ganz. Bei dem Begriff denke ich zum Beispiel an 1broker, wo die eigenen Trades nicht den Markt beeinflussen, sondern nur auf dem Bucket Shop stattfinden. Man wettet quasi gegen das Haus, bzw auf einen steigenden oder fallenden Kurs.
Bittrex ist wohl am präsentesten auf meiner Website. Einfach, weil davon auch Visualisierungen implementiert sind. Im Hintergrund aber werden noch viele andere APIs abgefragt und ausgewertet, wie etwa BTC-e, Coinmarketcap.com, diverse BTC Chartseiten, 1broker, Twitter und sicherlich noch einige, die ich vergessen habe.
Es ist schon sehr viel interessantes Material, welches ich auch wirklich mal langsam auswerten sollte.
Oder, wie es LimxDev iirc vorgeschlagen hat, der Öffentlichkeit zur Verfügung stellen. Vielleicht entwickelt sich ja das eine oder andere interessante Projekt drum herum.
Huobi bietet eine Rest API an die auch so die letzten 10 Trades enthält. Mit dem Websocket bekommst du Orderbücher und Trades als Datenstrom mit so 50Kb/s die wären komplett. Vielleicht sind die Transparenter wenn der ansaugende Rechner in Peking steht und wollen nur keinen Datenstrom über die Große Firewall raus ins Ausland.
Boiler Room = Twitter, Bucket Shop = Bittrex. Früher lief das noch per Telefon, "Pinks" im Outbound verhökern. Filmtip "Wolf of Wallstreet"
Was zapfst du denn aus Coinmarketcap.com raus? Benutze das als BTC Referenzkurs gewichtet nach Umsatz über alle Tradesites
if(! file_exists($cache) || filemtime($cache) + (4 * 60 * 60) < time() || filesize($cache) <= 1024)
{
$webpage = retrieveURL("https://coinmarketcap.com/exchanges/volume/24-hour/");
file_put_contents($cache, $webpage);
}
else
$webpage = file_get_contents($cache);
preg_match_all('/BTC\/'.$waehrung.'.+? volume" .+? data-btc="([0-9.\?]+)".+? price" data-usd="([0-9.\?]+)"/s', $webpage, $found, PREG_SET_ORDER);
$Kurs = 0;
$Volume = 0;
foreach($found as $hit) //das Gesamtgewicht, um die einzelnen Gewichtungen beurteilen zu können
$Volume += (float) $hit[1]; //falls ein Gewicht == "?" ist sollte das als 0 nicht ins Gewicht fallen
foreach($found as $hit)
{
//~ daten1 * gewichtung1 + daten2 * gewichtung2 + ... + datenN * gewichtungN
//~ wenn (float) $var == 0 ist wird halt 0 dazuaddiert!
$Kurs += (float) $hit[2] * ((float) $hit[1] / $Volume);
}
//~ print "der Kurs ergibt sich aus Daten über ein Volumen von ".$Volume." BTC\n";
return round($Kurs, 8, PHP_ROUND_HALF_EVEN);
Und über die Daten der Europäischen Zentralbank hast du dann die Umrechnungskurse in alle anderen Währungen (Beispielcode, nicht von mir)
//This is a PHP(4/5) script example on how eurofxref-daily.xml can be parsed
//Read eurofxref-daily.xml file in memory
//For this command you will need the config
//option allow_url_fopen=On (default)
$XMLContent=file("http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml");
//the file is updated daily between 2.15 p.m. and 3.00 p.m. CET
foreach($XMLContent as $line){
if(preg_match("/currency='([[:alpha:]]+)'/",$line,$currencyCode)){
if(preg_match("/rate='([[:graph:]]+)'/",$line,$rate)){
//Output the value of 1EUR for a currency code
echo'1€='.$rate[1].' '.$currencyCode[1].'
'."\n";
//--------------------------------------------------
//Here you can add your code for inserting
//$rate[1] and $currencyCode[1] into your database
//--------------------------------------------------
}
}
}
Ja, vielleicht.
Hey, das Abfragen von europa.eu ist eine gute Idee!
Bzgl coinmarketcap.com empfehle ich, beim Seitenaufruf mal kurz in die Devtools/Console des Browsers mit aktivierten XHR-Requests zu schauen. Die Seite nutzt ihre eigene API, und die URLs kannst Du so sehen. Dann kann man sich das manuelle Parsen des HTML-Codes sparen, und Du bekommst direkt JSON zurück.
Die Schnittstelle ist ja quasi öffentlich, und ob nun ein Browser sie abfragt oder ein PHP Client ist eigentlich Wurst.
Habe damals dennoch den Entwickler kontaktiert wegen fair use policy, und habe ihm mitgeteilt, was ich ungefähr vorhabe, und wie viele Requests meine Anwendung ungefähr am Tag machen wird.
Das habe ich bei allen Schnittstellen, die ich mir auf die Art besorgt habe, so gemacht und das Feedback der Entwickler war eigentlich durchweg positiv.
Werde zu dem Thema ggf später oder die Tage gern mehr schreiben. Bin nur seit Freitag auf meinem Androiden unterwegs, und da ist das Antworten immer etwas langwierig.
Dann auch gerne mit ein paar Code-Beispielen.