[PYTHON] Generieren technischer Indikatoren für den Systemhandel in der Anaconda-Umgebung Versuchen Sie, technische Indikatoren für Bitcoin mit TA-LIB zu erstellen

Inhaltsverzeichnis

  1. Übersicht
  2. Erstellen Sie eine Conda-Umgebung für den Systemhandel
  3. Installieren Sie TA-LIB
  4. Versuchen Sie es mit TA-LIB
  5. Zusammenfassung

1. Übersicht

Ich wollte meinen eigenen Systemhandel machen, [[Wikipedia] Moving Average](https://ja.wikipedia.org/wiki/%E7%A7%BB%E5%8B%95%E5%B9%B3%E5%9D Wenn Sie% 87) oder [Wikipedia] MACD selbst geschrieben haben, Ich wusste, dass es ein Paket zum Erstellen eines netten technischen Index namens TA-LIB gab, ohne ihn von Hand drücken zu müssen. Beschreiben der Einführungsmethode, der Umgebungskonstruktionsmethode und des Ausführungsbeispiels

⬇️ Mit einer solchen Zeile können Sie problemlos unzählige Indikatoren erstellen

Erstellen Sie eine Bollinger-Band: [[Wikipedia] Bollinger-Band](https://ja.wikipedia.org/wiki/%E3%83%86%E3%82%AF%E3%83%8B%E3%82%AB% E3% 83% AB% E6% 8C% 87% E6% A8% 99% E4% B8% 80% E8% A6% A7 #% E3% 83% 9C% E3% 83% AA% E3% 83% B3% E3 % 82% B8% E3% 83% A3% E3% 83% BC% E3% 83% 90% E3% 83% B3% E3% 83% 89)

python


import ta-lib as ta
pperband, middleband, lowerband = ta.BBANDS(close, timeperiod=5, nbdevup=2, nbdevdn=2, matype=0)

Es gibt viele technische Indikatoren. Viele Dinge, die ich nicht weiß ...

Screen Shot 2020-02-25 at 22.00.51.png

2. Erstellen Sie eine Conda-Umgebung für den Systemhandel

[Qiita] Virtuelle Umgebung mit Anaconda speichern / rekonstruieren / duplizieren Der obige Artikel war sehr einfach über die virtuelle Umgebung mit conda zu verstehen. Wenn Sie also nicht mit der Umgebung vertraut sind, schauen Sie sie sich bitte an.

Überprüfung der Conda-Umgebung

Terminal


conda info -e

Ausführungsbeispiel: Basis nur in Standardumgebung Screen Shot 2020-02-25 at 21.36.26.png

Klonen Sie die Conda-Umgebung

Dieses Mal werden wir die Basisumgebung klonen und eine neue Umgebung erstellen

Terminal


conda create -n <Neuer Umgebungsname> --clone <Umgebungsname, den Sie duplizieren möchten>

Ausführungsbeispiel Screen Shot 2020-02-25 at 21.41.22.png

Aktivieren Sie die neue Conda-Umgebung

Terminal


conda activate <Neuer Umgebungsname>

Ausführungsbeispiel Screen Shot 2020-02-25 at 21.43.52.png

3. Installieren Sie TA-LIB

Suche TA-LIB nach conda

Terminal


anaconda search -t conda ta-lib

Ausführungsbeispiel: Diesmal Plattform: Linux-64, Builds: py37_0 Ich wollte eine Umgebung, notieren Sie sich also den entsprechenden Umgebungsnamen "quantnet / ta-lib".

Hinweis: Für Mac OS- und Windows-Benutzer wählen Sie bitte "Quantopian / ta-lib". Da "Quantopian / ta-lib" nur bis zu Python 3.6 unterstützt, Es kann mit dem Klon der Basisumgebung (Python3.7) nach dem obigen Verfahren nicht verwendet werden. Erstellen Sie eine Python 3.6-Umgebung mit conda create -n <Name der neuen Umgebung> python = 3.6

Screen Shot 2020-02-25 at 21.46.34.png

Suchen Sie nach dem Installationsbefehl des Zielpakets

Terminal


anaconda show <Name des Zielpakets>

Ausführungsbeispiel Screen Shot 2020-02-25 at 21.55.31.png

Conda installiert TA-LIB

Terminal


conda install --channel https://conda.anaconda.org/quantnet ta-lib

Überprüfen Sie, ob TA-LIB installiert ist

Terminal


conda list | grep ta-lib

Ausführungsbeispiel Screen Shot 2020-02-25 at 22.05.50.png

4. Versuchen Sie es mit TA-LIB

Holen Sie sich tägliche Daten von BTC und machen Sie es DataFrame

Dieses Mal erhalten wir die täglichen Daten von Bitcoin in bitFlyer von Cryptwatch. [Cryptowatch] bifFlyer BITCFXJPY tägliche Daten

python


import requests
import pandas as pd

#1 Tag von Cryptowatch bis OHTC von BTC(14400 Minuten)Erstellen Sie eine Funktion, die in einem DataFrame abgerufen und zurückgegeben wird
def get_btc_ohlc(period=14400):

    #Anfrage an Cryptowatch
    response_data = requests.get("https://api.cryptowat.ch/markets/bitflyer/btcfxjpy/ohlc",params = { "periods" : period , "after" : 1})
    response_data = response_data.json()
    
    #In einen DataFrame umgewandelt
    df_tmp = pd.DataFrame(pd.DataFrame(response_data)[:1]['result'][0],
                        columns=['date', 'open', 'high', 'low', 'close', 'tmp1', 'tmp2']).drop(columns=['tmp1', 'tmp2'])

    #Da date int ist, konvertieren Sie in datetime
    df_tmp['date'] = pd.to_datetime(df_tmp['date'].astype(int), unit='s')
    return df_tmp

#Erhalten Sie tatsächlich BTC OHLC-Informationen
df_btc = get_btc_ohlc()

#Schauen Sie sich die erfassten Daten an
df_btc.head()
Ausführungsbeispiel: Sie sollten das folgende Ergebnis erhalten
Screen Shot 2020-02-26 at 16.36.51.png

Zur Verwendung in TA-LIB in Array konvertieren

** [Achtung] Informationen wie Öffnen und Schließen beim Erstellen technischer Indikatoren mit TA-LIB können von DataFrame nicht verarbeitet werden und müssen ein Array sein **

python


import numpy as np

btc_open = np.array(df_btc['open'])
btc_close = np.array(df_btc['close'])
btc_high = np.array(df_btc['high'])
btc_low = np.array(df_btc['low'])

Erstellen Sie mit TA-LIB verschiedene technische Indikatoren

Ich habe nur die repräsentativen Indikatoren geschrieben, die oft verwendet werden, aber es gibt wirklich unzählige. Weitere Informationen finden Sie unter TA-LIB.

python


# TA-LIB-Paket importieren
import talib as ta

#Berechnen Sie das Bollinger-Band
upperband, middleband, lowerband = ta.BBANDS(btc_close, timeperiod=5, nbdevup=2, nbdevdn=2, matype=0)

#Impuls berechnen
momentum=ta.MOM(btc_close,timeperiod=10)

#RSI berechnen
rsi = ta.RSI(btc_close, timeperiod=14)

# MACD
macd, macdsignal, macdhist = ta.MACD(btc_close, fastperiod=12, slowperiod=26, signalperiod=9)

# Stochastic
slowk, slowd = ta.STOCH(btc_high, btc_low, btc_close, fastk_period=5, slowk_period=3, slowk_matype=0, slowd_period=3, slowd_matype=0)

# ATR
real = ta.ATR(btc_high, btc_low, btc_close, timeperiod=14)

# EMA
ema25 = ta.EMA(btc_close, timeperiod=25)
ema75 = ta.EMA(btc_close, timeperiod=75)


#Kombinieren Sie die erstellten technischen Index-Arrays zu einem DataFrame, um sie mit dem ursprünglichen DataFrame zu kombinieren
array_tmp = np.c_[upperband, middleband, lowerband, momentum, rsi, macd, macdsignal, macdhist, slowk, slowd, real, ema25, ema75]
df_tmp = pd.DataFrame(data=array_tmp, columns=['upperband', 'middleband', 'lowerband', 'momentum', 'rsi', 'macd', 'macdsignal', 'macdhist', 'slowk', 'slowd', 'real', 'ema25', 'ema75'])


#Join by Dataframe,Indexbasierter Typ
df_btc = df_btc.merge(df_tmp, left_index=True, right_index=True)

#Schauen Sie sich die Ergebnisse an
df_btc.tail(10)
Ausführungsbeispiel: Aufgrund der Größe des Bildes werden nur die Ergebnisse mit bis zu 3 Zeilen eingefügt, die Ergebnisse können jedoch bis zu 10 Zeilen ordnungsgemäß erhalten werden.
Screen Shot 2020-02-26 at 16.46.59.png

5. Zusammenfassung

Bisher steht die Vorbereitung auf den automatischen Handel kurz bevor. Macht es also so viel Spaß? Es kann niemanden geben. Das nächste Mal möchte ich einen Artikel über das Zeichnen dieses Ergebnisses und das Backtesting für den Systemhandel verfassen (ein Test wie Zug- und Testdaten getrennt und Kreuzvalidierung des Modells beim maschinellen Lernen).

Recommended Posts

Generieren technischer Indikatoren für den Systemhandel in der Anaconda-Umgebung Versuchen Sie, technische Indikatoren für Bitcoin mit TA-LIB zu erstellen
Ich habe versucht, TradeWave zu verwenden (BitCoin-Systemhandel in Python)
Eine Sammlung von Befehlszeilen, die virtuelle Umgebungen mit Anaconda verwenden
[Python] [Word] [python-docx] Versuchen Sie, mit python-docx eine Vorlage für einen Wortsatz in Python zu erstellen
Einführung in Docker Erstellen einer Ubuntu-Umgebung in Ubuntu
Für Anfänger, um eine Anaconda-Umgebung aufzubauen. (Memo)
Versuchen Sie, Blueprint with Flask zu verwenden, um Controller zu trennen
Versuchen Sie, RPN mit Python zu berechnen (für Anfänger)
Versuchen Sie, mit Node.js einen HTTP-Server zu erstellen