[PYTHON] Générer des indicateurs techniques pour le trading du système dans l'environnement Anaconda Essayez de créer des indicateurs techniques pour Bitcoin en utilisant TA-LIB

table des matières

  1. Vue d'ensemble
  2. Créez un environnement conda pour le trading système
  3. Installez TA-LIB
  4. Essayez d'utiliser TA-LIB
  5. Résumé

1. Vue d'ensemble

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

⬇️ Vous pouvez facilement créer d'innombrables indicateurs avec une seule ligne comme celle-ci

Créer une bande de Bollinger: [[Wikipedia] Bande de Bollinger](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)

Il y a beaucoup d'indicateurs techniques, beaucoup de choses que je ne sais pas ...

Screen Shot 2020-02-25 at 22.00.51.png

2. Créez un environnement conda pour le trading système

[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.

Vérification de l'environnement conda

Terminal


conda info -e

Exemple d'exécution: base uniquement dans l'environnement par défaut Screen Shot 2020-02-25 at 21.36.26.png

Cloner l'environnement conda

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 Screen Shot 2020-02-25 at 21.41.22.png

Activez le nouvel environnement conda

Terminal


conda activate <Nouveau nom d'environnement>

Exemple d'exécution Screen Shot 2020-02-25 at 21.43.52.png

3. Installez TA-LIB

Rechercher TA-LIB par conda

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

Screen Shot 2020-02-25 at 21.46.34.png

Recherchez la commande d'installation du package cible

Terminal


anaconda show <Nom du package cible>

Exemple d'exécution Screen Shot 2020-02-25 at 21.55.31.png

Conda installer TA-LIB

Terminal


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

Vérifiez si TA-LIB est installé

Terminal


conda list | grep ta-lib

Exemple d'exécution Screen Shot 2020-02-25 at 22.05.50.png

4. Essayez d'utiliser TA-LIB

Obtenez des données quotidiennes de BTC et faites-en DataFrame

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()
Exemple d'exécution: vous devriez obtenir le résultat suivant
Screen Shot 2020-02-26 at 16.36.51.png

Convertir en tableau pour une utilisation dans TA-LIB

** [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'])

Créer divers indicateurs techniques à l'aide de TA-LIB

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)
Exemple d'exécution: En raison de la taille de l'image, seuls les résultats jusqu'à 3 lignes sont collés, mais les résultats peuvent être obtenus jusqu'à 10 lignes correctement.
Screen Shot 2020-02-26 at 16.46.59.png

5. Résumé

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

Générer des indicateurs techniques pour le trading du système dans l'environnement Anaconda Essayez de créer des indicateurs techniques pour Bitcoin en utilisant TA-LIB
J'ai essayé d'utiliser TradeWave (commerce du système BitCoin en Python)
Une collection de lignes de commande qui utilisent des environnements virtuels avec Anaconda
[Python] [Word] [python-docx] Essayez de créer un modèle de phrase de mot en Python en utilisant python-docx
Introduction à docker Création d'un environnement ubuntu dans ubuntu
Pour les débutants à créer un environnement Anaconda. (Note)
Essayez d'utiliser Blueprint avec Flask pour séparer les contrôleurs
Essayez de calculer RPN avec Python (pour les débutants)
Essayez de créer un serveur HTTP en utilisant Node.js