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.
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
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.
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.
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.
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.
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