Es gibt viele Pakete zum Zeichnen von Diagrammen in Python, aber keines ist auf Candlestick-Diagramme spezialisiert.
Dieses Mal habe ich matplotlib und Plotly als Paket ausprobiert, mit dem sich aus 4-Wert-Daten relativ einfach ein Candlestick-Diagramm erstellen lässt.
Der Python-Code in diesem Artikel soll auf einem Jupyter-Notebook ausgeführt werden. Das Diagramm wird auch inline im Jupyter-Notizbuch angezeigt.
Zunächst werden wir ab Juni 2016 fiktive Marktpreisdaten für zwei Monate erstellen. Zufälliger Spaziergang in Python Mit Bezug auf
%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
Erstellen Sie daher in Abständen von 1 Minute einen zufälligen Spaziergang, und verwenden Sie dann pandas'resampleund
ohlc`, um 4-Wert-Daten zu erstellen.
df = pd.Series(rnd_walk, index=idx).resample('B').ohlc()
df.plot()
Hier zeigt das Argument "B" von "Resample" an, dass die Probenahme nur an Werktagen durchgeführt wird. Mit anderen Worten, wie der tatsächliche Marktpreis sind die Daten nur an Wochentagen. Wenn es als Liniendiagramm angezeigt wird, sieht es wie folgt aus.
matplotlib verfügt über Tools for Finance, mit dem Kerzendiagramme angezeigt werden können.
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)
Und 4 Arten von Funktionen sind vorbereitet. Diese unterscheiden sich darin, ob die vierwertigen Daten einzeln oder gemeinsam eingegeben werden und ob die Reihenfolge der vier Werte OHLC oder OCHL ist.
Da die zuvor erstellten 4-Wert-Daten die DataFrame-Klasse von OHLC sind, wird hier candlestick_ohlc
verwendet.
Das Argument "Anführungszeichen" von "candlestick_ohlc" muss x-Achsen-Daten, offene Daten, hohe Daten, niedrige Daten und geschlossene Daten in Form eines zweidimensionalen Arrays enthalten. Df.index kann jedoch nicht als x-Achsendaten verwendet werden. Daher wird "df.index" auf "datetime" gesetzt und der reale Wert wird zu OHLC addiert.
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() #Rasteranzeige
ax.set_xlim(df.index[0].date(), df.index[-1].date()) #x-Achsenbereich
fig.autofmt_xdate() #x-Achsen-Autoformat
Wenn ich diesen Code ausführe, erhalte ich ein Candlestick-Diagramm, das folgendermaßen aussieht:
Derzeit ist die obige Tabelle eine Candlestick-Tabelle, aber was ein wenig besorgniserregend ist, ist, dass an der Stelle, die Samstag und Sonntag entspricht, ein Leerzeichen vorhanden ist. Normalerweise sind im Marktchart nur Werktage verbunden und es gibt keinen Teil für Samstag und Sonntag.
Daher werden wir an den Daten der x-Achse arbeiten. Verwenden Sie df.index
nicht als x-Achsen-Daten, sondern machen Sie es einfach zu einem ganzzahligen Index. Stellen Sie dann die anzuzeigende x-Achsenskala auf die entsprechenden Datums- und Zeitdaten ein. Da der Markt am Montag beginnt, wird die Skala ab Montag alle 5 Tage angezeigt.
fig = plt.figure()
ax = plt.subplot()
ohlc = np.vstack((range(len(df)), df.values.T)).T #Daten der x-Achse in Ganzzahl
mpf.candlestick_ohlc(ax, ohlc, width=0.7, colorup='g', colordown='r')
xtick0 = (5-df.index[0].weekday())%5 #Erster Montag Index
plt.xticks(range(xtick0,len(df),5), [x.strftime('%Y-%m-%d') for x in df.index][xtick0::5])
ax.grid() #Rasteranzeige
ax.set_xlim(-1, len(df)) #x-Achsenbereich
fig.autofmt_xdate() #x-Achsen-Autoformat
Wenn Sie dies tun, sollten Sie ein Diagramm wie das folgende sehen:
Jetzt ist das Diagramm nur an Werktagen fortlaufend. Diese Methode gilt jedoch für Tagesdiagramme, und für Intraday-Diagramme müssen Sie die x-Achsen-Skala anpassen.
Plotly Edition ist ↓ Candlestick-Diagramm in Python anzeigen (Plotly Edition)
Recommended Posts