Affichage du graphique en chandeliers en Python (édition matplotlib)

Il existe de nombreux packages pour dessiner des graphiques en Python, mais aucun n'est spécialisé pour les graphiques en chandeliers.

Cette fois, j'ai essayé matplotlib et Plotly en tant que package permettant de créer un graphique en chandelier relativement facilement à partir de données à 4 valeurs.

Préparation

Le code Python de cet article est destiné à être exécuté sur un bloc-notes Jupyter. Le graphique est également affiché en ligne dans le bloc-notes Jupyter.

Tout d'abord, nous créerons des données fictives sur les prix du marché pendant deux mois à partir de juin 2016. Random walk in Python En référence à

%matplotlib inline
import numpy as np
import pandas as pd

idx = pd.date_range('2016/06/01', '2016/07/31 23:59', freq='T')
dn = np.random.randint(2, size=len(idx))*2-1
rnd_walk = np.cumprod(np.exp(dn*0.0002))*100

En conséquence, créez une marche aléatoire à 1 minute d'intervalle, puis utilisez pandas'resample, ʻohlc pour créer des données à 4 valeurs.

df = pd.Series(rnd_walk, index=idx).resample('B').ohlc()
df.plot()

Ici, l'argument «B» de «rééchantillonnage» indique que l'échantillonnage est effectué uniquement les jours ouvrables. En d'autres termes, comme le prix réel du marché, les données ne sont données qu'en semaine. Lorsqu'il est affiché sous forme de graphique en courbes, ce sera comme suit.

index.png

Tableau des pieds de bougie avec matplotlib

matplotlib a Tools for Finance, qui a une fonction pour afficher des graphiques en bougies.

candlestick2_ochl(ax, opens, closes, highs, lows, width=4, colorup='k', colordown='r', alpha=0.75)
candlestick2_ohlc(ax, opens, highs, lows, closes, width=4, colorup='k', colordown='r', alpha=0.75)
candlestick_ochl(ax, quotes, width=0.2, colorup='k', colordown='r', alpha=1.0)
candlestick_ohlc(ax, quotes, width=0.2, colorup='k', colordown='r', alpha=1.0)

Et 4 types de fonctions sont préparés. Celles-ci diffèrent selon que les données à quatre valeurs sont entrées individuellement ou collectivement et si l'ordre des quatre valeurs est OHLC ou OCHL.

Les données à 4 valeurs créées précédemment sont la classe DataFrame d'OHLC, donc ici nous utiliserons candlestick_ohlc.

L'argument quotes of candlestick_ohlc doit avoir des données sur l'axe des x, des données ouvertes, des données élevées, des données faibles et des données de fermeture sous la forme d'un tableau à deux dimensions. Cependant, df.index ne peut pas être utilisé tel quel en tant que données sur l'axe des x. Par conséquent, «df.index» est défini sur «datetime», et la valeur réelle est ajoutée à OHLC.

import matplotlib.pyplot as plt
import matplotlib.finance as mpf
from matplotlib.dates import date2num

fig = plt.figure()
ax = plt.subplot()

xdate = [x.date() for x in df.index] #Timestamp -> datetime
ohlc = np.vstack((date2num(xdate), df.values.T)).T #datetime -> float
mpf.candlestick_ohlc(ax, ohlc, width=0.7, colorup='g', colordown='r')

ax.grid() #Affichage de grille
ax.set_xlim(df.index[0].date(), df.index[-1].date()) #plage de l'axe des x
fig.autofmt_xdate() #mise en forme automatique sur l'axe des x

Lorsque j'exécute ce code, j'obtiens un graphique en chandeliers qui ressemble à ceci:

index.png

Tableau des pieds de bougie pour les jours ouvrables uniquement

Pour le moment, le graphique ci-dessus est un graphique en chandelier, mais ce qui est un peu inquiétant, c'est qu'il y a un blanc à l'endroit correspondant au samedi et au dimanche. Normalement, dans le graphique du marché, seuls les jours ouvrables sont connectés et il n'y a pas de partie samedi et dimanche.

Par conséquent, nous travaillerons sur les données de l'axe des x. N'utilisez pas df.index tel quel en tant que données sur l'axe des x, faites-en simplement un index entier. Ensuite, définissez l'échelle de l'axe des x à afficher sur les données de date et d'heure correspondantes. Puisque le marché commence le lundi, la balance sera affichée tous les 5 jours à partir du lundi.

fig = plt.figure()
ax = plt.subplot()

ohlc = np.vstack((range(len(df)), df.values.T)).T #données de l'axe des x en nombre entier
mpf.candlestick_ohlc(ax, ohlc, width=0.7, colorup='g', colordown='r')

xtick0 = (5-df.index[0].weekday())%5 #Index du premier lundi
plt.xticks(range(xtick0,len(df),5), [x.strftime('%Y-%m-%d') for x in df.index][xtick0::5])
ax.grid() #Affichage de grille
ax.set_xlim(-1, len(df)) #plage de l'axe des x
fig.autofmt_xdate() #mise en forme automatique sur l'axe des x

Lorsque vous faites cela, vous devriez voir un graphique comme celui-ci:

index.png

Désormais, le graphique est continu uniquement les jours ouvrables. Cependant, cette méthode s'applique aux graphiques quotidiens et aux graphiques intrajournaliers, vous devrez ajuster l'échelle de l'axe des x.

L'édition tracée est ↓ Afficher le graphique en chandeliers en Python (édition Plotly)

Recommended Posts

Affichage du graphique en chandeliers en Python (édition matplotlib)
Affichage du graphique en chandeliers en Python (édition Plotly)
Dessin de bougie avec python
Obtenez les cours des actions et créez des graphiques en bougies avec Python
Heatmap avec dendrogramme en Python + matplotlib
La première étape de Python Matplotlib
Afficher les formules de notation LaTeX en Python, matplotlib
CGI Server (1) édition python en une ligne
Commençons avec TopCoder en Python (version 2020)
Pourquoi ne puis-je pas installer matplotlib avec python! !!
Quadtree en Python --2
Python en optimisation
CURL en Python
Métaprogrammation avec Python
Python 3.3 avec Anaconda
Géocodage en python
SendKeys en Python
Méta-analyse en Python
Unittest en Python
Quand j'essaye matplotlib en Python, il dit 'cairo.Context'
Les bases de #Python (#matplotlib)
Époque en Python
Discord en Python
Allemand en Python
DCI en Python
tri rapide en python
nCr en python
N-Gram en Python
Programmation avec Python
Plink en Python
Constante en Python
Mon matplotlib (Python)
FizzBuzz en Python
Sqlite en Python
Étape AIC en Python
LINE-Bot [0] en Python
CSV en Python
Assemblage inversé avec Python
[Python] Comment dessiner un histogramme avec Matplotlib
Réflexion en Python
Constante en Python
nCr en Python.
format en python
Scons en Python 3
Puyopuyo en python
python dans virtualenv
PPAP en Python
Détecter le graphique boursier Golden Cross avec Python
Quad-tree en Python
Réflexion en Python
Chimie avec Python
Hashable en Python
DirectLiNGAM en Python
LiNGAM en Python
Aplatir en Python
Aplatir en python
Essayez de tracer des graphiques en bougies Bitcoin et des indicateurs techniques en Python
Liste triée en Python
Mettez matplotlib dans Centos7.