[PYTHON] Fonctionnement du script de trading automatique de monnaie virtuelle
Être en difficulté
Le script de trading automatique actuellement en fonctionnement n'est pas suffisamment stable pour être exécuté de manière stable et permanente avec l'instruction while.
Je suis en voyage d'affaires à partir de demain, mais je veux que le script continue à fonctionner même lorsque je suis en voyage d'affaires.
Mais je ne veux pas emporter de PC avec moi. Je veux le compléter en le faisant fonctionner sur l'iphone.
while True:
Raisons d'un fonctionnement instable
- Erreur de l'API REST
- Erreur d'API en temps réel
- Pour une raison quelconque, en raison de l'ordre de marché, le montant de l'intérêt ouvert de 0,01 BTC ou moins demeure, et nous continuons d'attendre le contrat.
→ À ce propos, si vous attendez l'exécution d'un ordre au marché pendant 100 secondes ou plus pour le moment, une exception sera lancée et elle se terminera anormalement.
solution temporaire
En ce qui concerne les contre-mesures fondamentales, nous examinerons la soi-disant «couverture opérationnelle». (pas bon)
- Si une exception est détectée dans l'instruction try, une notification LINE sera envoyée.
Pour l'implémentation de la notification LINE en python, reportez-vous à ce qui suit.
Envoyer des notifications à LINE avec Python
https://qiita.com/analytics-hiro/items/e42f857bd6b40bc178a3
- La notification LINE suivante viendra.
[Notification automatique de fin de transaction] 2020-01-19 17:20:20.630975 Le processus de démarrage s'est terminé anormalement.
Le nombre de transactions était de trois.
Les détails de l'erreur sont les suivants.
{'parent_order_acceptance_id': 'JRF20200119-082028-389427'}None
- Connectez-vous à la bourse pour régler les intérêts ouverts et annuler les commandes.
- Connectez-vous en SSH au serveur exécutant le script sur Termius.
(De façon embarrassante, nous avons appris pour la première fois que nous pouvons SSH à partir d'un iPhone.)
En ce qui concerne Termius, j'ai évoqué ce qui suit.
Comment se connecter via SSH depuis l'iPhone à l'aide de la clé publique avec l'application Terminal
https://itneko.com/iphone-ssh/
- Exécutez le shell pour exécuter le script sur le serveur SSH.
rerun.sh
#!/bin/sh
cd ~/bf/code_bf/
source ~/bf/bin/activate
nohup python IFDOCOBOTv3.1.py &
- Connectez-vous à la bourse et confirmez que le trading automatique a repris.
Tâches futures
- Créez un script qui ne tombe pas en premier. (cette)
――Depuis que nous avons envoyé une notification LINE, mettez l'URL dans le contenu de la notification afin que vous puissiez ré-exécuter en un clic. (Cela peut-il être fait avec API Gateway?)
- Si le serveur sur lequel le script est exécuté tombe en panne, le flux ci-dessus ne peut pas le gérer, alors considérez une contre-mesure. (Au début, j'ai eu l'idée d'utiliser Lambda, mais je ne peux pas exécuter Lambda pendant longtemps, donc c'est NG. Puis-je l'implémenter avec AWS Batch? Je n'ai pas suffisamment étudié.)
- Puisque le nom du script de trading automatique (IFDOCOBOTv3.1.py dans l'exemple ci-dessus) est fréquemment modifié, le script de réexécution sera modifié à chaque fois. (Je pense à le résoudre autour de CodeDeploy et CodeBuild. J'espère qu'il pourra être ré-exécuté à partir de l'URL en premier lieu)
- J'utilise une instance EC2, mais l'IP publique change en raison d'un redémarrage, donc si je la redémarre accidentellement, je dois me connecter à AWS Management Console lors de la connexion depuis un iphone, ce qui est gênant (je peux le résoudre en utilisant Elastic IP, mais Je veux prendre l'habitude d'arrêter le serveur lorsqu'il n'est pas utilisé, donc NG * Elastic IP est sujet à facturation lorsque le système d'exploitation est arrêté)
«J'ai écrit diverses choses, mais il n'y a pas de script qui ne tombe pas. Vous devez créer un mécanisme qui se réexécute automatiquement en supposant qu'il tombera. Initialisation (règlement des intérêts ouverts et annulation de commande) Naturellement, cela se fait automatiquement.