Le trading FX est essentiellement un processus manuel. Ce serait très amusant de pouvoir régler cela automatiquement en programmant avec Python. Vous pouvez utiliser l'apprentissage automatique pour prédire les prix futurs et même configurer le trading automatique à des heures fixes et à une logique fixe. Ici, comme première étape pour cela, nous visons à pouvoir effectuer des paiements en utilisant Python en accédant à l'api de Docker.
--Créez un compte (un compte de démonstration est bien) dans oanda et émettez un jeton API --Environnement où docker et docker-compose peuvent être utilisés
Vous devez accéder à l'API pour acheter et vendre des effets à l'aide d'un langage de programmation tel que Python. Il existe de nombreuses entreprises qui peuvent faire du FX comme SBI Securities et DMMFX, mais seul oanda fournit des API pour le FX au Japon, alors créez d'abord un compte avec oanda. S'il y a des bogues, ce sera difficile, donc un compte de démonstration convient au début. Vous pouvez le faire en 15 minutes environ. Concernant le trading FX utilisant l'API oanda, les articles suivants sont faciles à comprendre avec Qiita.
Si vous regardez l'article ci-dessus, vous pouvez accéder à l'API d'un seul coup, mais étant donné que vous implémenterez diverses choses à l'avenir, il est plus facile de le faire en tant que classe ou fonction. Je pensais que ce serait ennuyeux de l'implémenter moi-même, mais quand je l'ai cherché, j'ai trouvé un bon exemple de code sur Github.
Vous pouvez cloner ce type et le faire exactement comme il est écrit. Vous pouvez voir comment le faire en détail en regardant REAMDE dans le référentiel ci-dessus, mais les principaux points sont résumés ci-dessous.
virtualenv
de Python~ / .v20.conf
setup.py
, et vous pouvez l'acheter ou le vendre simplement en tapant v20-order-entry
ou v20-order-cancel
et en spécifiant l'argument.Cela semble pratique. Vous pouvez l'essayer sur votre propre PC tel quel, mais comme c'est un gros problème, je vais essayer les modifications suivantes.
virtualenv
est utilisé pour créer quelque chose comme l'environnement virtuel de Pyhon, mais si vous utilisez Docker, il peut être utilisé dans n'importe quel environnement, ce sera donc plus pratique?Dockerfile
sur le serveur AWS et essayez d'acheter et de vendre sur le conteneur sans utiliser le virtualenv
.~ / .v20.conf
comme la spécification d'origine, alors utilisez docker-compose
et passez-le comme secrets
(il existe de nombreuses autres bonnes méthodes) peut être)Tout va bien tant que je peux utiliser docker, mais je n'ai jamais utilisé ʻAWS, donc je l'ai essayé. Cette fois, j'ai créé une instance à partir de ʻAWS
's ʻAmazon EC2 avec un système d'exploitation approprié (je l'ai fait ʻubuntu
), et j'ai essayé d'utiliser docker. C'est un cadre d'essai gratuit, donc les spécifications telles que la mémoire sont les pires. Si c'est la valeur par défaut, rien n'est inclus, alors vérifiez-le correctement
J'ai mis dans docker.
En regardant le référentiel d'origine, il indique que la configuration nécessite les éléments suivants:
user@host: ~/v20-python-samples$ make bootstrap #Faire virtualenv de makefile
user@host: ~/v20-python-samples$ source env/bin/activate
(env)user@host: ~/v20-python-samples$ python setup.py develop #paramètres du point d'entrée
Dans le makefile ci-dessus
env/bin/pip install -r requirements/base.txt
J'ai installé les packages nécessaires. Laissez le docker faire tous les réglages pour cela. Écrivez avec le sentiment suivant.
Dockerfile
FROM centos:7 #Version appropriée
#Extraire le référentiel correspondant de github (branche principale)
ARG BRANCH="master"
RUN yum install git -y \
&& git clone --depth 1 --single-branch -b ${BRANCH} https://github.com/oanda/v20-python-samples.git
#Mettez dans les paquets nécessaires
RUN yum install python3 -y \
&& yum install python3-devel -y \
&& yum install gcc -y \
&& cd v20-python-samples/ \
&& pip3 install -r requirements/base.txt \
&& python3 setup.py develop
Chaque fois que vous effectuez un paiement, lisez les informations d'authentification telles que le jeton API de .v20.conf
.
Écrivez comme suit.
bash:.v20.conf
hostname: api-fxpractice.oanda.com #Parce que c'est une démo, fxfractice
streaming_hostname: stream-fxpractice.oanda.com
port: 443
ssl: true
token: e6ab562b039325f12a026c6fdb7b71bb-b3d8721445817159410f01514acd19hbc #Exemple de jeton émis par oanda
username: user
accounts:
- 101-001-100000-001
- 101-001-100000-002
active_account: 101-001-100000-002 #Exemple d'identifiant de compte oanda
Le problème est l'emplacement de celui-ci, si vous voulez le déplacer de votre environnement local comme prévu à l'origine, vous pouvez simplement le mettre dans ~ / .v20.conf
, mais copiez ce fichier tel qu'il est dans l'image du docker N'est pas très bon pour la sécurité, alors utilisez docker-compose
.
Pour utiliser docker-compose
, écrivez docker-compose.yaml
comme suit.
docker-compose.yaml
services:
oanda: #
image: oanda #nom de l'image
build: #./oanda #avec ça./oanda/Construit à l'aide de Dockerfile
tty: true #Sans cela, il se fermera immédiatement après l'exécution, alors attachez-le
secrets:
- .v20.conf #Fichier que vous souhaitez transmettre
secrets: #paramètres secrets
.v20.conf:
file: .v20.conf
La structure du fichier est la suivante
$ tree -a
.
├── .v20.conf
├── docker-compose.yaml
└── oanda
└── Dockerfile
Le mécanisme de docker-compose
n'est pas abordé ici, mais il peut gérer plusieurs conteneurs à la fois.
Cette fois, une image docker est créée sur la base de . / Oanda / Dockerfile
.
Les informations sur les secrets sont montées sous / run / secrets
dans le conteneur.
J'ai fait référence à ce qui suit
Il semble y avoir plusieurs autres façons de passer des informations PASS, etc. en tant que variables d'environnement, mais cette fois j'ai utilisé cette méthode parce que je voulais utiliser la spécification de lecture de «.20.conf» telle quelle.
Maintenant que nous sommes prêts, créons un conteneur.
$ sudo docker-compose up -d #Je veux l'exécuter en arrière-plan-Ajouter d
Creating network "test_default" with the default driver
Creating test_oanda_1 ... #Cette fois~/test/Il semble que ce soit une telle règle de dénomination car elle a été exécutée ci-dessous
Creating test_oanda_1 ... done
Attaching to test_oanda_1
#Vous pouvez vérifier diverses choses avec les commandes suivantes
$ sudo docker-compose ps
Name Command State Ports
----------------------------------------
test_oanda_1 /bin/bash Up #Puisque l'état est en place, il semble que le conteneur fonctionne correctement
$ sudo docker-compose images #Confirmer l'image
Container Repository Tag Image Id Size
----------------------------------------------------------
test_oanda_1 oanda latest c84xxxxxxxxx 489 MB
$ sudo docker ps #Vous pouvez également vérifier en utilisant la commande docker normalement
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d56xxxxxxxxx oanda "/bin/bash" 2 minutes ago Up 2 minutes test_oanda_1
Cette fois, je viens de passer les informations sur les secrets, mais il semble que docker-compose
puisse être utilisé de la même manière lors de la liaison nginx
et mysql
.
Au fait, vous pouvez supprimer le conteneur en cours d'exécution avec docker-compose down
.
Entrez l'image docker créée et exécutez la commande
$ sudo docker-compose exec oanda bash #oanda est le nom du service défini dans le Dockerfile
Si vous le mettez en toute sécurité, vous devriez pouvoir voir le référentiel cloné depuis github, donc
Remplacez DEFAULT_PATH =" ~ / .v20.conf "
dans v20-python-samples / src / common / config.py
par" / run / secrets "
. (Parce que le fichier d'authentification est monté sous / run / secrets)
Après cela, vous pouvez acheter et vendre simplement en exécutant la commande. Essayons d'afficher les informations de votre compte.
# cd v20-python-samples/
# v20-account-details
=============================== ==============================
Account ID 100-xxx-xxxxxxxx-xxx
Alias xxxxxxx
Home Currency JPY
Balance 2999999.978 #Équilibre. Parce que c'est un compte de démonstration, il y en a environ 3 millions
Created by User ID xxxxxxxx
Create Time 2020-06-03T12:45:17.366012787Z
Guaranteed Stop Loss Order Mode DISABLED
Profit/Loss -0.022
Resettable Profit/Loss -0.022
Profit/Loss Reset Time 0
Financing 0.0
Commission 0.0
Guaranteed Execution Fees 0.0
Margin Rate 0.04
Open Trade Count 0
Open Position Count 0
Pending Order Count 0
Hedging Enabled True
Unrealized Profit/Loss 0.0
Net Asset Value 2999999.978
Margin Used 0.0
Margin Available 2999999.978
Position Value 0.0
Closeout UPL 0.0
Closeout NAV 2999999.978
Closeout Margin Used 0.0
Margin Closeout Percentage 0.0
Margin Closeout Position Value 0.0
Withdrawal Limit 2999999.978
Last Transaction ID 10
=============================== ==============================
l'a fait!
README
du référentiel, car elles apparaîtront lorsque vous vérifierez comment écrire le code pour frapper oanda-api et l'implémentation..v20.conf
sous ~ / de l'image Docker à cause de la mort cérébrale sans utiliser docker-compose. Vous devez réfléchir à la manière de transmettre les informations d'authentification en toute sécurité. ..Recommended Posts