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