Je voulais faire mon propre système d'échange, [[Wikipedia] Moving Average](https://ja.wikipedia.org/wiki/%E7%A7%BB%E5%8B%95%E5%B9%B3%E5%9D Si vous avez écrit% 87) ou [Wikipedia] MACD vous-même, Je savais qu'il y avait un package pour créer un joli index technique appelé TA-LIB sans avoir à le presser à la main. Décrire la méthode d'introduction, la méthode de construction de l'environnement et l'exemple d'exécution
python
import ta-lib as ta
pperband, middleband, lowerband = ta.BBANDS(close, timeperiod=5, nbdevup=2, nbdevdn=2, matype=0)
[Qiita] Enregistrer / Reconstruire / Dupliquer l'environnement virtuel à l'aide d'Anaconda L'article ci-dessus était très facile à comprendre sur l'environnement virtuel utilisant conda, donc si vous ne le connaissez pas, allez le voir.
Terminal
conda info -e
Exemple d'exécution: base uniquement dans l'environnement par défaut
Cette fois, nous clonerons l'environnement de base et créerons un nouvel environnement
Terminal
conda create -n <Nouveau nom d'environnement> --clone <Nom de l'environnement que vous souhaitez dupliquer>
Exemple d'exécution
Terminal
conda activate <Nouveau nom d'environnement>
Exemple d'exécution
Terminal
anaconda search -t conda ta-lib
Exemple d'exécution: Cette fois, Platform: linux-64, Builds: py37_0 Je voulais un environnement, alors notez le nom d'environnement correspondant "quantnet / ta-lib".
Remarque: pour les utilisateurs de Mac OS et Windows, veuillez sélectionner "Quantopian / ta-lib"
De plus, étant donné que "Quantopian / ta-lib" ne prend en charge que jusqu'à Python 3.6,
Il ne peut pas être utilisé avec le clone de l'environnement de base (Python3.7) par la procédure ci-dessus.
Créez un environnement Python 3.6 avec conda create -n <nouveau nom d'environnement> python = 3.6
Terminal
anaconda show <Nom du package cible>
Exemple d'exécution
Terminal
conda install --channel https://conda.anaconda.org/quantnet ta-lib
Terminal
conda list | grep ta-lib
Exemple d'exécution
Cette fois, nous obtiendrons les données quotidiennes de Bitcoin dans bitFlyer de Cryptwatch. [Cryptowatch] bifFlyer BITCFXJPY données quotidiennes
python
import requests
import pandas as pd
#1 jour de Cryptowatch à l'OHLC de BTC(14400 minutes)Créer une fonction qui obtient et retourne dans un DataFrame
def get_btc_ohlc(period=14400):
#Demande à Cryptowatch
response_data = requests.get("https://api.cryptowat.ch/markets/bitflyer/btcfxjpy/ohlc",params = { "periods" : period , "after" : 1})
response_data = response_data.json()
#Transformé en DataFrame
df_tmp = pd.DataFrame(pd.DataFrame(response_data)[:1]['result'][0],
columns=['date', 'open', 'high', 'low', 'close', 'tmp1', 'tmp2']).drop(columns=['tmp1', 'tmp2'])
#Puisque la date est int, convertir en datetime
df_tmp['date'] = pd.to_datetime(df_tmp['date'].astype(int), unit='s')
return df_tmp
#En fait, obtenez des informations BTC OHLC
df_btc = get_btc_ohlc()
#Jetez un œil aux données acquises
df_btc.head()
** [Attention] Les informations telles que l'ouverture et la fermeture lors de la création d'indicateurs techniques avec TA-LIB ne peuvent pas être traitées par DataFrame et doivent être array **
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'])
Je n'ai écrit que les indicateurs représentatifs qui sont souvent utilisés, mais ils sont vraiment innombrables. Veuillez vous référer à TA-LIB
python
# TA-Importer le package LIB
import talib as ta
#Calculer la bande de Bollinger
upperband, middleband, lowerband = ta.BBANDS(btc_close, timeperiod=5, nbdevup=2, nbdevdn=2, matype=0)
#Calculer l'élan
momentum=ta.MOM(btc_close,timeperiod=10)
#Calculer le RSI
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)
#Combinez les tableaux d'index techniques créés dans un DataFrame à combiner avec le DataFrame d'origine
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'])
#Rejoindre par Dataframe,Guy basé sur un index
df_btc = df_btc.merge(df_tmp, left_index=True, right_index=True)
#Jetez un œil aux résultats
df_btc.tail(10)
Jusqu'à présent, c'est proche de la préparation du trading automatique, alors est-ce tellement amusant? Il n'y a peut-être personne. La prochaine fois, j'aimerais faire un article sur le traçage de ce résultat et le backtesting pour le trading système (un test comme les données de train et de test séparées et la validation croisée du modèle en apprentissage automatique).
Recommended Posts