[PYTHON] Holen Sie sich die vollständigen Tick-Daten für Bitflyer

Einführung

Ich habe mich zum ersten Mal seit einiger Zeit wieder bei bitflyer lightning angemeldet. Die virtuelle Währung wird seit "2017" gehalten, als sie einen starken Anstieg verzeichnete, aber nicht gehandelt wurde. Als ich die schnellen Änderungen in der endgültigen Transaktionsmenge von Lightnig sah, fühlte ich mich "potentiell" und wollte zum ersten Mal seit langer Zeit wieder handeln. スクリーンショット 2020-01-11 8.49.19.png

Fortsetzen

Früher habe ich diskretionär gehandelt, aber ich glaube nicht, dass ich es wieder tun werde. Dies liegt daran, dass sie nicht die Mentalität haben, der mentalen Belastung standzuhalten. Daher ist es notwendig, ein automatisches Handelssystem aufzubauen. Daher werden als erstes Daten benötigt, die als Kriterium für die Handelslogik dienen. API Einfach ausgedrückt ist eine API eine Schnittstelle, über die Sie auf bestimmte Daten (z. B. den neuesten BTC-Wert) zugreifen können, indem Sie auf eine URL klicken und bestimmte Anweisungen ausführen (z. B. einen BTC-Kaufauftrag). Die meisten virtuellen Geldwechsel haben diese API. Natürlich ist es auch in Bitflyer Lightning erhältlich. https://lightning.bitflyer.com/docs?lang=ja

Gehen Sie gemäß der Dokumentation wie folgt vor, um den neuesten Wert von "FX_BTC_JPY" zu erhalten: https://api.bitflyer.com//v1/getticker?product_code=FX_BTC_JPY

Ausführungslimitwand

Ich habe sofort folgendes von Mac ausgeführt.

while true; do curl https://api.bitflyer.com//v1/getticker?product_code=FX_BTC_JPY | jq . ; done

Der Wert wird im JSON-Format wie unten gezeigt zurückgegeben.

{
  "product_code": "FX_BTC_JPY",
  "timestamp": "2020-01-09T11:40:18.027",
  "tick_id": 340221409,
  "best_bid": 873088,
  "best_ask": 873160,
  "best_bid_size": 0.01325506,
  "best_ask_size": 0.026,
  "total_bid_depth": 7516.42989333,
  "total_ask_depth": 6798.27220924,
  "ltp": 873160,
  "volume": 196692.50042163,
  "volume_by_product": 196682.81646233
}

Aber nach einer Weile ein Fehler

{
  "status": -1,
  "error_message": "Over API limit per period, per IP address",
  "data": null
}

→ Beim Lesen des Dokuments sind API-Aufrufe von derselben IP auf xxx pro Minute begrenzt. Dies ist aus diesem Grund. Bei 1 / s ist kein Fehler aufgetreten.

Wie man die Barriere von Ausführungsbeschränkungen überwindet (Täuschung)

Führen Sie beim Ändern der öffentlichen IP-Adresse mit AWS die API von mehreren Lambda aus aus, kombinieren Sie die Ergebnisse mit SQS usw. und speichern Sie sie in DynamoDB. Beim Speichern nach Zeit sortieren. Der Bau kostet Zeit und Kosten. → Sie können sehen, dass es wie unten gezeigt völlig falsch ist.

Überwindung der Hindernisse für Ausführungsbeschränkungen (Adoptionsplan)

Es fiel mir schwer, fortlaufende Tick-Daten abzurufen, aber wenn ich mir das Dokument anschaue, gibt es eine API, um den Ausführungsverlauf abzurufen. Die Vertragshistorie ist ein Satz, der alle Tick-Daten enthält. Verwenden Sie dies, um es zu lösen !!! Ich habe versucht, es sofort auszuführen.

curl https://api.bitflyer.com/v1/getexecutionsproduct_code=FX_BTC_JPY&count=10

Ergebnis

[{"id":1510454721,"side":"BUY","price":904727.0,"size":0.02,"exec_date":"2020-01-11T00:29:56.813","buy_child_order_acceptance_id":"JRF20200111-002956-217585","sell_child_order_acceptance_id":"JRF20200111-002955-073037"},{"id":1510454720,"side":"BUY","price":904727.0,"size":0.01,"exec_date":"2020-01-11T00:29:56.797","buy_child_order_acceptance_id":"JRF20200111-002956-109098","sell_child_order_acceptance_id":"JRF20200111-002955-073037"},{"id":1510454719,"side":"BUY","price":904727.0,"size":0.01,"exec_date":"2020-01-11T00:29:56.797","buy_child_order_acceptance_id":"JRF20200111-002956-995485","sell_child_order_acceptance_id":"JRF20200111-002955-073037"},{"id":1510454718,"side":"BUY","price":904708.0,"size":0.62,"exec_date":"2020-01-11T00:29:56.797","buy_child_order_acceptance_id":"JRF20200111-002956-109097","sell_child_order_acceptance_id":"JRF20200111-002954-142777"},{"id":1510454717,"side":"BUY","price":904707.0,"size":0.383,"exec_date":"2020-01-11T00:29:56.797","buy_child_order_acceptance_id":"JRF20200111-002956-109097","sell_child_order_acceptance_id":"JRF20200111-002955-217572"},{"id":1510454716,"side":"BUY","price":904686.0,"size":0.091,"exec_date":"2020-01-11T00:29:56.797","buy_child_order_acceptance_id":"JRF20200111-002956-109097","sell_child_order_acceptance_id":"JRF20200111-002956-073060"},{"id":1510454715,"side":"BUY","price":904686.0,"size":0.01,"exec_date":"2020-01-11T00:29:56.783","buy_child_order_acceptance_id":"JRF20200111-002956-458844","sell_child_order_acceptance_id":"JRF20200111-002956-073060"},{"id":1510454714,"side":"BUY","price":904686.0,"size":0.01,"exec_date":"2020-01-11T00:29:56.607","buy_child_order_acceptance_id":"JRF20200111-002956-152005","sell_child_order_acceptance_id":"JRF20200111-002956-073060"},{"id":1510454713,"side":"BUY","price":904707.0,"size":0.01,"exec_date":"2020-01-11T00:29:56.577","buy_child_order_acceptance_id":"JRF20200111-002956-458842","sell_child_order_acceptance_id":"JRF20200111-002955-217572"},{"id":1510454712,"side":"BUY","price":904707.0,"size":0.04,"exec_date":"2020-01-11T00:29:56.547","buy_child_order_acceptance_id":"JRF20200111-002956-217578","sell_child_order_acceptance_id":"JRF20200111-002955-217572"}]

→ Sie können die Anzahl der Fälle mit Anzahl angeben. Diesmal war die Zahl 10. Es scheint, dass es bis zu 500 Fälle gibt.

Visualisierung mit Python

plottest.ipynb



import requests
import json 
import matplotlib.pyplot as plt
%matplotlib inline

response = requests.get("https://api.bitflyer.com/v1/getexecutions?product_code=FX_BTC_JPY&count=100")
res_json = json.loads(response.text)

res_price_list = []
for res in res_json :
    res_price_list.append(res['price'])
    
plt.plot(res_price_list)

→ Verwenden Sie Anfrage anstelle von Locken. → Extrahieren Sie nur den Text der Anforderungsantwort mit .text und konvertieren Sie ihn mit json.load in den Listentyp. → Die Anzahl der zu erwerbenden Verträge beträgt 100.

Ergebnis

output_7_1.png Bitte versuchen Sie es in Ihrer Umgebung (Jupyter Notebook). Das angezeigte Diagramm sollte sich bei jeder Ausführung vollständig ändern. Dies ist auf den aktiven Handel mit Bitflyer-Blitzen zurückzuführen. Viele mehrfach erzeugte Grafiken haben etwas gemeinsam. Es ist so, dass ein relativ bemerkenswerter Trend in den letzten 100 Vertragsverläufen nicht auftritt, sondern sich wie eine sich wiederholende Bewegung verhält. Ich frage mich, ob dies in die Handelslogik einbezogen werden kann.

Recommended Posts

Holen Sie sich die vollständigen Tick-Daten für Bitflyer
Holen Sie sich die Spaltenliste und Datenliste von CASTable
Holen Sie sich die GNOME-Version
Erhalten Sie Kommentare und Abonnenten mit der YouTube-Daten-API
Holen Sie sich Gzip-komprimierte Daten in den Speicher
Holen Sie sich den MIME-Typ
[Einführung in Python] So erhalten Sie Daten mit der Funktion listdir
Strukturdaten von CHEMBLID abrufen
Python --bitflyer Holen Sie sich das Guthaben
Holen Sie sich Youtube-Daten mit Python
Gzip komprimiert Daten durch Streaming
Holen Sie sich die Anzahl der Ziffern
[Python] Holen Sie sich den Vormonat
Maya | Ruft den Arbeitsbereichspfad ab
Python --bitflyer Chat-Inhalte abrufen