Ich versuche, ein Programm zu schreiben, das die Mt.Gox-API verwendet, um eine aktuelle, konsistente Ansicht ihrer Markttiefe zu erhalten. Meine derzeitige Vorgehensweise ist wie folgt:
Nachdem ich eine Weile damit herumgespielt hatte, bemerkte ich, dass der Download der Daten in voller Tiefe nicht immer mit den Daten übereinstimmt, die durch Updates generiert wurden. Aus diesem Grund habe ich die 1-Minuten-Verzögerung hinzugefügt, weil ich dachte, dass der Mt.Gox-Server die Daten mit voller Tiefe möglicherweise nur regelmäßig aktualisiert, aber nicht im laufenden Betrieb generiert.
Aber selbst mit diesem Protokoll sehe ich, wenn ich das Programm zweimal parallel laufen lasse, in beiden Fällen unterschiedliche Daten.
Irgendeine Idee, was ich falsch machen könnte?
Meiner Erfahrung nach führt das Anfordern der vollen Markttiefe von MtGox oft zu völlig falschen Informationen. Um damit umzugehen, habe ich auf die Konstruktion meiner eigenen zurückgegriffen, ähnlich wie Sie es oben beschrieben haben.
Ich schaue mir mit der Websocket-API alle eingehenden depth
Ereignisse an. Ich behalte dann zwei geordnete Arrays von Bids und Asks. Bei Tiefenereignissen, wenn das Volumen positiv ist, füge ich die Reihenfolge basierend auf der type_str
Eigenschaft dem jeweiligen Array hinzu. Wenn das Volumen negativ ist , entferne ich das Objekt aus dem Array.
Stellen Sie sicher, dass Sie Objekte mit demselben Preis, aber unterschiedlichem Volumen kombinieren. Ebenso beim Entfernen von Objekten, wenn das negative Volumen geringer ist als das Volumen des Objekts mit denselben Preisen, dann nur vom Volumen abziehen, anstatt es zu entfernen. So wird es auf dem Server von MtGox gemacht und es wird zu Fehlern führen, wenn es anders gemacht wird.
Nachdem dies eine Weile laufen gelassen wurde, wenn auch nicht tief, ist das Orderbuch ziemlich genau und repräsentativ für das, was das MtGox-Orderbuch sein sollte.
Markus A.
Lourr
price_int
und an, bevor ich das Objekt entferne.amount_int
Ich benutzetotal volume
überhaupt nicht und habe festgestellt, dass dies ganz gut funktioniert.Markus A.
Lourr