Anfänger machen einen automatischen Bitcoin-Handelsbot, der viel Geld anstrebt! Teil 1 Anfänger machen einen automatischen Bitcoin-Handelsbot, der viel Geld anstrebt! Teil 2 wird fortgesetzt.
Dieses Mal werden wir endlich einen ** Bitcoin Automatic Trading Bot-like ** erstellen, den Sie selbst kaufen und verkaufen können!
Als Experiment, um zu sehen, ob es in Kombination funktioniert ** Kaufen, wenn es billiger wird, und verkaufen, wenn es teuer wird! Ich habe einen dummen Bot wie ** gemacht.
① Übergeben Sie den vorherigen Transaktionsbetrag (dieser Betrag ist das Kriterium für die Beurteilung) ② Wenn Sie Bitcoin haben und der Preis steigt, verkaufen Sie es! (Und aktualisieren Sie den vorherigen Transaktionsbetrag) ③ Wenn Sie japanischen Yen haben und der Preis fällt, kaufen Sie ihn! (Und aktualisieren Sie den vorherigen Transaktionsbetrag) ④ Wenn die Transaktion nicht verarbeitet wird, warten Sie 1 Minute. Wenn sie auch nach dem Warten nicht verarbeitet wird, brechen Sie ab (und stellen Sie den vorherigen Transaktionsbetrag wieder her).
【Referenz】 -Wenn die "order_id" der Antwort nach der Transaktion nicht 0 ist (order_id wird ausgegeben), wird die Transaktion angehalten.
Ab diesem Zeitpunkt habe ich den Schlüssel und das Geheimnis in json geändert und in einer separaten Datei gespeichert.
[]···Ordner
[zaif]
|- main.py
|- [config] - zaif_keys.json
| -...
main.py
# -*- coding: utf-8 -*-
import json
import time
from zaifapi import ZaifPublicApi #Klasse, die eine API ausführt, für die keine von Zaif veröffentlichten Authentifizierungsinformationen erforderlich sind
from zaifapi import ZaifPrivateApi #Eine Klasse, die eine API ausführt, für die von Zaif veröffentlichte Anmeldeinformationen erforderlich sind
from pprint import pprint #Zur Ausstellung(Es zeigt json ordentlich an)
zaif_keys_json = open('config/zaif_keys.json', 'r')
zaif_keys = json.load(zaif_keys_json)
KEY = zaif_keys["key"]
SECRET = zaif_keys["secret"]
if __name__ == '__main__':
zaif_public = ZaifPublicApi()
zaif_private = ZaifPrivateApi(KEY, SECRET)
#Letzter Transaktionsbetrag
Last_transaction_amount = 122210
#Informationsbeschaffung
last_price = int(zaif_public.last_price('btc_jpy')["last_price"])
trade_info = zaif_private.get_info2()
funds_btc = trade_info["funds"]["btc"]
funds_jpy = trade_info["funds"]["jpy"]
print('■ Dies sind die aktuellen Informationen.')
print('last_price: ' + str(last_price))
print('funds_btc: ' + str(funds_btc))
print('funds_jpy: ' + str(funds_jpy))
cancel_flag = False
order_id = 0
last_price_old = 0
#Wenn Sie BTC haben und der Preis steigt
if funds_btc != 0 and last_price > Last_transaction_amount:
#Bitcoin verkaufen
trade_result = zaif_private.trade(currency_pair="btc_jpy", action="ask", price=last_price, amount=funds_btc)
print('■ Ich habe den Verkauf von Bitcoin beantragt.')
pprint(trade_result)
last_price_old = Last_transaction_amount
Last_transaction_amount = last_price
if trade_result["order_id"] != 0:
cancel_flag = True
order_id = trade_result["order_id"]
else:
print('■ Die Transaktion ist abgeschlossen.')
#Wenn Sie jpy haben und der Preis fällt
#(Mindesteinheit (0).0001btc Minuten) wenn Sie mehr als japanische Yen haben)
elif funds_jpy > Last_transaction_amount / 10000 and last_price < Last_transaction_amount:
#Da die API bis zu 4 Nachkommastellen unterstützt, runden Sie()
#Wenn die 5. Stelle nach oben verschoben wird, besteht ein Mangel an Vermögenswerten.(- 0.0001)
amount = round(float(funds_jpy) / last_price, 4) - 0.0001
#Bitcoin kaufen
trade_result = zaif_private.trade(currency_pair="btc_jpy", action="bid", price=last_price, amount=amount)
print('■ Ich habe den Kauf von Bitcoin beantragt')
pprint(trade_result)
last_price_old = Last_transaction_amount
Last_transaction_amount = last_price
if trade_result["order_id"] != 0:
cancel_flag = True
order_id = trade_result["order_id"]
else:
print('■ Die Transaktion ist abgeschlossen.')
#Wenn die Transaktion gehalten wird, warten Sie 60 Sekunden und brechen Sie ab, wenn sie noch gehalten wird
if cancel_flag:
print('■ Warten Sie 60 Sekunden.')
time.sleep(60)
trade_info = zaif_private.get_info2()
if trade_info["open_orders"] > 0:
print('■ Abgebrochen.')
pprint(zaif_private.cancel_order(order_id=order_id))
Last_transaction_amount = last_price_old
else:
print('■ Die Transaktion ist abgeschlossen.')
pprint(trade_info)
Erstellen Sie einen Ordner "config" in derselben Hierarchie wie main.py und speichern Sie ihn in der folgenden JSON-Datei.
zaif_keys.json
{
"key" : "[Erstellter Schlüssel]",
"secret" : "[Erstelltes Geheimnis]"
}
■ Ausführungsergebnis Wenn der Preis mit btc steigt
python
■ Dies sind die aktuellen Informationen.
last_price: 126725
funds_btc: 0.0075
funds_jpy: 7.9355
■ Ich habe den Verkauf von Bitcoin beantragt.
{u'funds': {u'btc': 0.0, u'jpy': 7.9355, u'mona': 0.0, u'xem': 0.0},
u'order_id': 156957485,
u'received': 0.0,
u'remains': 0.0075}
■ Warten Sie 60 Sekunden.
■ Die Transaktion ist abgeschlossen.
{u'deposit': {u'btc': 0.0, u'jpy': 958.373, u'mona': 0.0, u'xem': 0.0},
u'funds': {u'btc': 0.0, u'jpy': 958.373, u'mona': 0.0, u'xem': 0.0},
u'open_orders': 0,
u'rights': {u'info': 1, u'personal_info': 0, u'trade': 1, u'withdraw': 0},
u'server_time': 1491323133}
■ Ausführungsergebnis Wenn der Preis mit jpy fällt
python
■ Dies sind die aktuellen Informationen.
last_price: 126815
funds_btc: 0.0
funds_jpy: 959.048
■ Ich habe den Kauf von Bitcoin beantragt
{u'funds': {u'btc': 0.0, u'jpy': 7.9355, u'mona': 0.0, u'xem': 0.0},
u'order_id': 156951488,
u'received': 0.0,
u'remains': 0.0075}
■ Warten Sie 60 Sekunden.
■ Die Transaktion ist abgeschlossen.
{u'deposit': {u'btc': 0.0, u'jpy': 959.048, u'mona': 0.0, u'xem': 0.0},
u'funds': {u'btc': 0.0, u'jpy': 7.9355, u'mona': 0.0, u'xem': 0.0},
u'open_orders': 1,
u'rights': {u'info': 1, u'personal_info': 0, u'trade': 1, u'withdraw': 0},
u'server_time': 1491322779}
Ich verarbeitete den obigen Code, führte ihn einmal pro Minute aus und versuchte ihn einen Tag lang zu verschieben.
① Fügen Sie eine Endlosschleife "while True:" vor "# Get information" ein. ② Fügen Sie am Ende des Codes "time.sleep (60)" ein
Das Ergebnis ist ...!
Betrag der ersten Transaktion letzte Nacht: * ¥ 957.8495 *
python
■ Die Transaktion ist abgeschlossen.
{u'deposit': {u'btc': 0.0, u'jpy': 957.8495, u'mona': 0.0, u'xem': 0.0},
u'funds': {u'btc': 0.0, u'jpy': 957.8495, u'mona': 0.0, u'xem': 0.0},
u'open_orders': 0,
u'rights': {u'info': 1, u'personal_info': 0, u'trade': 1, u'withdraw': 0},
u'server_time': 1491324869}
Aktuelles Geld: * ¥ 958.8245 *
python
■ Dies sind die aktuellen Informationen.
last_price: 127740
funds_btc: 0.0
funds_jpy: 958.8245
Wenn ich es berechne. .. ..
・ Sie können den Momentanwert nur jede Minute sehen (ich kenne die Schwankung nicht) ・ Da der Transaktionsbetrag nur in einer Variablen gespeichert ist, fliegt er, wenn er aufgrund eines Fehlers fällt. ・ Es ist nicht schön, auf der Konsole meines Heim-PCs weiterzulaufen (PC-Lüfter sind im Schlaf laut) ・ In den folgenden Fällen (wenn die Bedingungen nicht erfüllt sind und Sie nicht zurückkehren) können Sie keine Transaktionen durchführen. ・ Wenn Sie Bitcoin haben und der Preis fällt ・ Wenn Sie japanischen Yen haben und der Preis steigt ・ Selbst wenn der Preis steigt, selbst wenn er 0,0001 beträgt, ist es nicht gut, ihn zu verkaufen (kein Gewinn ...)
Wie auch immer, es war gut, dass ich mich bewegen konnte, ohne einen Tag lang zu fallen. Nächstes Mal möchte ich meine Reflexionspunkte nutzen und ** auf AWS Lambda ausführen **! Bei Lambda wird es jedes Mal ausgeführt, sodass Sie die Daten in der Datenbank speichern müssen, damit die Daten nicht fliegen.
Vielen Dank für Ihre harte Arbeit ~
06.04.2017: Die Beschreibung, dass der Schlüssel und das Geheimnis auf json gesetzt und als separate Datei gespeichert wurden, wurde weggelassen. .. ..