Der Devisenhandel ist grundsätzlich ein manueller Prozess. Es würde viel Spaß machen, dies automatisch durch Programmieren mit Python regeln zu können. Sie können maschinelles Lernen verwenden, um zukünftige Preise vorherzusagen, und sogar den automatischen Kauf und Verkauf zu festen Zeiten und fester Logik einrichten. Als ersten Schritt möchten wir in der Lage sein, Zahlungen mit Python zu tätigen, indem wir auf die API von Docker klicken.
--Erstellen Sie in oanda ein Konto (ein Demo-Konto ist in Ordnung) und stellen Sie ein API-Token aus
Sie müssen die API drücken, um FX mit einer Programmiersprache wie Python zu kaufen und zu verkaufen. Es gibt viele Unternehmen, die FX ausführen können, wie SBI Securities und DMMFX, aber nur oanda bietet APIs für FX in Japan an. Erstellen Sie daher zuerst ein Konto bei oanda. Wenn es Fehler gibt, wird es schwierig sein, daher ist ein Demo-Konto zunächst in Ordnung. Sie können es in etwa 15 Minuten tun. In Bezug auf den Devisenhandel mit der Oanda-API sind die folgenden Artikel mit Qiita leicht zu verstehen.
Wenn Sie sich den obigen Artikel ansehen, können Sie die API auf einmal aufrufen. Wenn Sie jedoch berücksichtigen, dass Sie in Zukunft verschiedene Dinge implementieren werden, ist es einfacher, dies als Klasse oder Funktion zu tun. Ich dachte, es wäre ärgerlich, es selbst zu implementieren, aber als ich danach suchte, fand ich einen schönen Beispielcode auf Github.
Sie können diesen Kerl klonen und es genau so machen, wie es geschrieben steht. Sie können sehen, wie es im Detail geht, indem Sie sich REAMDE im obigen Repository ansehen. Die wichtigsten Punkte sind jedoch unten zusammengefasst.
~ / .v20.conf
erforderlich sindEs sieht bequem aus. Sie können es auf Ihrem eigenen PC ausprobieren, aber da es eine große Sache ist, werde ich die folgenden Änderungen hinzufügen.
Alles ist in Ordnung, solange ich Docker verwenden kann, aber ich habe noch nie "AWS" verwendet, also habe ich es versucht. Dieses Mal habe ich eine Instanz aus "Amazon EC2" von "AWS" mit einem geeigneten Betriebssystem erstellt (ich habe es "Ubuntu" gemacht) und versucht, Docker darin zu verwenden. Es ist ein kostenloser Testrahmen, daher sind die Spezifikationen wie Speicher am schlechtesten. Wenn dies die Standardeinstellung ist, ist nichts enthalten. Überprüfen Sie sie daher entsprechend Ich habe Docker eingesetzt.
Im ursprünglichen Repository heißt es, dass für die Einrichtung Folgendes erforderlich ist:
user@host: ~/v20-python-samples$ make bootstrap #Machen Sie virtualenv aus dem Makefile
user@host: ~/v20-python-samples$ source env/bin/activate
(env)user@host: ~/v20-python-samples$ python setup.py develop #Einstiegspunkteinstellungen
Im Makefile oben
env/bin/pip install -r requirements/base.txt
Ich habe die notwendigen Pakete installiert. Lassen Sie den Docker alle Einstellungen dafür vornehmen. Schreiben Sie mit folgendem Gefühl.
Dockerfile
FROM centos:7 #Geeignete Version
#Ziehen Sie das entsprechende Repository aus Github (Hauptzweig).
ARG BRANCH="master"
RUN yum install git -y \
&& git clone --depth 1 --single-branch -b ${BRANCH} https://github.com/oanda/v20-python-samples.git
#Legen Sie die erforderlichen Pakete ein
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
Jedes Mal, wenn Sie eine Zahlung tätigen, werden die Authentifizierungsinformationen wie das API-Token aus der .v20.conf gelesen. Schreiben Sie wie folgt.
bash:.v20.conf
hostname: api-fxpractice.oanda.com #Weil es eine Demo ist, fxfractice
streaming_hostname: stream-fxpractice.oanda.com
port: 443
ssl: true
token: e6ab562b039325f12a026c6fdb7b71bb-b3d8721445817159410f01514acd19hbc #Beispiel eines von Oanda ausgegebenen Tokens
username: user
accounts:
- 101-001-100000-001
- 101-001-100000-002
active_account: 101-001-100000-002 #Beispiel für eine Oanda-Konto-ID
Das Problem ist der Speicherort dieses Dokuments. Wenn Sie es wie ursprünglich erwartet aus Ihrer lokalen Umgebung verschieben möchten, können Sie es einfach in ~ / .v20.conf
ablegen, diese Datei jedoch so kopieren, wie sie im Docker-Image enthalten ist Ist nicht sehr gut für die Sicherheit, verwenden Sie also "Docker-Compose".
Um docker-compose
zu verwenden, schreiben Sie docker-compose.yaml
wie folgt.
docker-compose.yaml
services:
oanda: #
image: oanda #Bildname
build: #./oanda #mit diesem./oanda/Mit Dockerfile erstellt
tty: true #Ohne dies wird es sofort nach der Ausführung beendet, also hängen Sie es an
secrets:
- .v20.conf #Datei, die Sie übergeben möchten
secrets: #Geheimnisse Einstellungen
.v20.conf:
file: .v20.conf
Die Struktur der Datei ist wie folgt
$ tree -a
.
├── .v20.conf
├── docker-compose.yaml
└── oanda
└── Dockerfile
Der Mechanismus von "Docker-Compose" wird hier nicht angesprochen, kann jedoch mehrere Container gleichzeitig verarbeiten.
Dieses Mal wird ein Docker-Image basierend auf . / Oanda / Dockerfile
erstellt.
Die Geheiminformationen werden im Container unter "/ run / secret" eingehängt.
Ich bezog mich auf Folgendes
Es scheint mehrere andere Möglichkeiten zu geben, PASS-Informationen usw. als Umgebungsvariablen zu übergeben, aber dieses Mal habe ich diese Methode verwendet, weil ich die Spezifikation des Lesens von ".20.conf" so wie sie ist verwenden wollte.
Nachdem wir fertig sind, erstellen wir einen Container.
$ sudo docker-compose up -d #Ich möchte es im Hintergrund ausführen-Hinzufügen d
Creating network "test_default" with the default driver
Creating test_oanda_1 ... #Diesmal~/test/Es scheint, dass es sich um eine solche Namensregel handelt, da sie unten ausgeführt wurde
Creating test_oanda_1 ... done
Attaching to test_oanda_1
#Sie können verschiedene Dinge mit den folgenden Befehlen überprüfen
$ sudo docker-compose ps
Name Command State Ports
----------------------------------------
test_oanda_1 /bin/bash Up #Da State Up ist, scheint der Container ordnungsgemäß zu funktionieren
$ sudo docker-compose images #Bild bestätigen
Container Repository Tag Image Id Size
----------------------------------------------------------
test_oanda_1 oanda latest c84xxxxxxxxx 489 MB
$ sudo docker ps #Sie können dies auch überprüfen, indem Sie den Docker-Befehl normal verwenden
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d56xxxxxxxxx oanda "/bin/bash" 2 minutes ago Up 2 minutes test_oanda_1
Dieses Mal habe ich nur die Geheiminformationen übergeben, aber es scheint, dass "Docker-Compose" auf die gleiche Weise verwendet werden kann, wenn "Nginx" und "MySQL" verknüpft werden. Übrigens können Sie den laufenden Container mit "Docker-Compose Down" löschen.
Geben Sie das erstellte Docker-Image ein und führen Sie den Befehl aus
$ sudo docker-compose exec oanda bash #oanda ist der Name des Dienstes, der in der Docker-Datei festgelegt ist
Wenn Sie es sicher ablegen, sollten Sie das geklonte Repository von Github aus sehen können Ändern Sie "DEFAULT_PATH =" ~ / .v20.conf "in" v20-python-samples / src / common / config.py "in" / run / Secrets ". (Weil die Authentifizierungsdatei unter / run / secret eingehängt ist)
Danach können Sie kaufen und verkaufen, indem Sie den Befehl ausführen. Versuchen wir, Ihre Kontoinformationen anzuzeigen.
# cd v20-python-samples/
# v20-account-details
=============================== ==============================
Account ID 100-xxx-xxxxxxxx-xxx
Alias xxxxxxx
Home Currency JPY
Balance 2999999.978 #Balance. Da es sich um ein Demo-Konto handelt, gibt es ungefähr 3 Millionen
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
=============================== ==============================
erledigt!
.v20.conf
unter ~ / des Docker-Bildes aufgrund von Hirntod zu kopieren, ohne Docker-Compose zu verwenden. Sie müssen darüber nachdenken, wie Sie die Authentifizierungsinformationen sicher weitergeben können. ..Recommended Posts