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
python
import ta-lib as ta
pperband, middleband, lowerband = ta.BBANDS(close, timeperiod=5, nbdevup=2, nbdevdn=2, matype=0)
[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.
Terminal
conda info -e
Ausführungsbeispiel: Basis nur in Standardumgebung
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
Terminal
conda activate <Neuer Umgebungsname>
Ausführungsbeispiel
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
Terminal
anaconda show <Name des Zielpakets>
Ausführungsbeispiel
Terminal
conda install --channel https://conda.anaconda.org/quantnet ta-lib
Terminal
conda list | grep ta-lib
Ausführungsbeispiel
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()
** [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'])
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)
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