[PYTHON] Betrieb des automatischen Handelsskripts für virtuelle Währungen
In Schwierigkeiten sein
Das derzeit in Betrieb befindliche automatische Handelsskript ist nicht stabil genug, um mit der while-Anweisung stabil und dauerhaft ausgeführt zu werden.
Ich bin ab morgen auf Geschäftsreise, aber ich möchte das Skript auch während einer Geschäftsreise am Laufen halten.
Aber ich möchte keinen PC mitnehmen. Ich möchte es vervollständigen, indem ich es auf dem iPhone betreibe.
while True:
Gründe für einen instabilen Betrieb
- REST-API-Fehler
- Echtzeit-API-Fehler
- Aus irgendeinem Grund bleibt aufgrund der Marktordnung der Betrag der offenen Positionen von 0,01 BTC oder weniger bestehen, und wir warten weiterhin auf den Kontrakt.
→ Wenn Sie diesbezüglich vorerst 100 Sekunden oder länger auf die Ausführung eines Marktauftrags warten, wird eine Ausnahme ausgelöst, die abnormal endet.
vorübergehende Lösung
Bei den grundlegenden Gegenmaßnahmen werden wir die sogenannte "operative Abdeckung" in Betracht ziehen. (nicht gut)
- Wenn in der try-Anweisung eine Ausnahme erkannt wird, wird eine LINE-Benachrichtigung gesendet.
Informationen zur Implementierung der LINE-Benachrichtigung in Python finden Sie im Folgenden.
Senden Sie Benachrichtigungen mit Python an LINE
https://qiita.com/analytics-hiro/items/e42f857bd6b40bc178a3
- Die folgende LINE-Benachrichtigung wird angezeigt.
[Automatische Benachrichtigung über den Abschluss des Handels] 2020-01-19 17:20:20.630975 Der Startvorgang wurde abnormal beendet.
Die Anzahl der Transaktionen betrug drei.
Die Details des Fehlers sind wie folgt.
{'parent_order_acceptance_id': 'JRF20200119-082028-389427'}None
- Melden Sie sich an der Börse an, um offene Zinsen zu begleichen und Bestellungen zu stornieren.
- SSH an den Server, auf dem das Skript auf Termius ausgeführt wird.
(Ich schäme mich zu wissen, dass wir in diesem Fall zum ersten Mal SSH von einem iPhone aus ausführen können.)
In Bezug auf Termius habe ich Folgendes erwähnt.
So stellen Sie eine SSH-Verbindung vom iPhone mithilfe des öffentlichen Schlüssels mit der Terminal-App her
https://itneko.com/iphone-ssh/
- Führen Sie die Shell zum Ausführen des Skripts auf dem SSH-Server aus.
rerun.sh
#!/bin/sh
cd ~/bf/code_bf/
source ~/bf/bin/activate
nohup python IFDOCOBOTv3.1.py &
- Melden Sie sich an der Börse an und bestätigen Sie, dass der automatische Handel wieder aufgenommen wurde.
Zukünftige Aufgaben
- Erstellen Sie ein Skript, das nicht an erster Stelle steht. (Dies)
――Da wir LINE-Benachrichtigungen gesendet haben, fügen wir die URL in den Benachrichtigungsinhalt ein, damit sie mit einem Klick erneut ausgeführt werden kann. (Kann es mit API Gateway gemacht werden?)
- Wenn der Server, auf dem das Skript ausgeführt wird, ausfällt, kann der obige Ablauf nicht damit umgehen. Ziehen Sie daher eine Gegenmaßnahme in Betracht. (Zuerst hatte ich die Idee, Lambda zu verwenden, aber ich kann Lambda schon lange nicht mehr ausführen, daher ist es NG. Kann ich es mit AWS Batch implementieren? Ich habe nicht genug gelernt.)
- Da der Name des automatischen Handelsskripts (IFDOCOBOTv3.1.py im obigen Beispiel) häufig geändert wird, wird das Skript zur erneuten Ausführung jedes Mal geändert. (Ich denke darüber nach, es um CodeDeploy und CodeBuild herum zu lösen. Ich hoffe, dass es überhaupt über die URL erneut ausgeführt werden kann.)
- Ich verwende eine EC2-Instanz, aber die öffentliche IP-Adresse ändert sich aufgrund eines Neustarts. Wenn ich sie also versehentlich neu starte, muss ich beim Herstellen einer Verbindung von einem iPhone aus eine Verbindung zur AWS Management Console herstellen, was problematisch ist (ich kann es jedoch mithilfe von Elastic IP lösen Ich möchte es mir zur Gewohnheit machen, den Server herunterzufahren, wenn er nicht verwendet wird. Daher wird NG * Elastic IP abgerechnet, wenn das Betriebssystem gestoppt wird.
――Ich habe verschiedene Dinge geschrieben, aber es gibt kein Skript, das nicht fällt. Sie sollten einen Mechanismus erstellen, der automatisch unter der Annahme erneut ausgeführt wird, dass er fallen wird. Initialisierung (Abwicklung von Open Interest und Stornierung der Bestellung) Natürlich erfolgt dies automatisch.