Anzeigen des Candlestick-Diagramms in Python (Matplotlib-Edition)

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.

Vorbereitung

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'resampleundohlc`, 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.

index.png

Kerzenfußkarte mit Matplotlib

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:

index.png

Kerzenfußkarte nur für Werktage

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:

index.png

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

Anzeigen des Candlestick-Diagramms in Python (Matplotlib-Edition)
Anzeigen des Candlestick-Diagramms in Python (Plotly Edition)
Kerzentabelle mit Python zeichnen
Holen Sie sich Aktienkurse und erstellen Sie mit Python Kerzendiagramme
Heatmap mit Dendrogramm in Python + Matplotlib
Der erste Schritt von Python Matplotlib
Anzeigen von LaTeX-Notationsformeln in Python, matplotlib
CGI Server (1) Python Edition in einer Zeile
Beginnen wir mit TopCoder in Python (Version 2020)
Warum kann ich matplotlib nicht mit Python installieren? !!
Quadtree in Python --2
Python in der Optimierung
CURL in Python
Metaprogrammierung mit Python
Python 3.3 mit Anaconda
Geokodierung in Python
SendKeys in Python
Metaanalyse in Python
Unittest in Python
Wenn ich matplotlib in Python versuche, heißt es'cairo.Context '.
# Python-Grundlagen (#matplotlib)
Epoche in Python
Zwietracht in Python
Deutsch in Python
DCI in Python
Quicksort in Python
nCr in Python
N-Gramm in Python
Programmieren mit Python
Plink in Python
Konstante in Python
Meine Matplotlib (Python)
FizzBuzz in Python
SQLite in Python
Schritt AIC in Python
LINE-Bot [0] in Python
CSV in Python
Reverse Assembler mit Python
[Python] Wie zeichnet man mit Matplotlib ein Histogramm?
Reflexion in Python
Konstante in Python
nCr in Python.
Format in Python
Scons in Python 3
Puyopuyo in Python
Python in Virtualenv
PPAP in Python
Erkennen Sie das Golden Cross Stock Chart mit Python
Quad-Tree in Python
Reflexion in Python
Chemie mit Python
Hashbar in Python
DirectLiNGAM in Python
LiNGAM in Python
In Python reduzieren
In Python flach drücken
Versuchen Sie, Bitcoin-Kerzendiagramme und technische Indikatoren in Python zu zeichnen
Sortierte Liste in Python
Legen Sie matplotlib in Centos7.