Versuchen Sie, Bitcoin-Kerzendiagramme und technische Indikatoren in Python zu zeichnen

Inhaltsverzeichnis

  1. Übersicht
  2. Installieren Sie mpl-Finance
  3. Versuchen Sie, mit mpl-Finance zu zeichnen
  4. Zusammenfassung

1. Übersicht

[Qiita] Erstellen Sie technische Indikatoren für Bitcoin mithilfe von TA-LIB, um technische Indikatoren für den Systemhandel in der Anaconda-Umgebung zu generieren. wurde fortgesetzt ist. Nachdem ich die technischen Indikatoren für Bitcoin habe, möchte ich das Kerzendiagramm und die erstellten Indikatoren zusammen zeichnen.

Informationen zu Bitcoin-Diagrammen werden unter der Annahme beschrieben, dass sie bereits erfasst wurden. Wenn Sie dies nicht getan haben, lesen Sie bitte den obigen Qiita-Artikel, um sie zu erstellen.

Ziel: Erstellen Sie ein Diagramm wie dieses
Screen Shot 2020-03-03 at 18.22.09.png

2. Installieren Sie mpl-Finance

Aktivieren Sie die Conda-Umgebung, in der Sie mpl-Finance installieren möchten

Terminal


conda activate <Name der CONDA-Zielumgebung>
Ausführungsbeispiel: ist "Handel"
Screen Shot 2020-03-03 at 17.36.52.png

Installieren Sie mpl-Finance mit pip

Ich wollte unbedingt eine Conda-Installation durchführen, hatte aber kein Conda-Paket für die Zielumgebung, daher werde ich es mit pip installieren.

Terminal


pip install mpl-finance
Ausführungsbeispiel
Screen Shot 2020-03-03 at 17.40.07.png

Starten Sie das Jupiter-Labor. Die Einheimischen führen das "Jupiter-Labor" ohne Optionen aus

Terminal


jupyter lab --ip=0.0.0.0 --no-browser
Ausführungsbeispiel
Screen Shot 2020-03-03 at 17.44.53.png

Greifen Sie mit einem Browser auf jupyter lab zu. Personen in der lokalen Umgebung starten jupyter lab automatisch mit einem Browser.

Notieren Sie sich die externe IP, die von einem roten Rahmen umgeben ist Screen Shot 2020-03-03 at 17.47.02.png

Greifen Sie mit einem Browser auf ": 8888" zu Screen Shot 2020-03-03 at 17.50.19.png

Screen Shot 2020-03-03 at 17.52.06.png

3. Versuchen Sie, mit mpl-Finance zu zeichnen

Holen Sie sich Bitcoin OHLC-Daten

OHLC steht für Open (offener Preis), High (hoher Preis), Low (niedriger Preis), Close (Schlusspreis) Da der Inhalt mit dem vorherigen Artikel identisch ist, können diejenigen, die ihn bereits erstellt haben, ihn überspringen.

import requests
import pandas as pd
import numpy as np
import talib as ta

#1 Tag von Cryptowatch bis OHTC von BTC(14400 Minuten)Erstellen Sie eine Funktion, die in einem DataFrame abgerufen und zurückgegeben wird
def get_btc_ohlc(period=14400):

    #Anfrage an Cryptowatch
    response_data = requests.get("https://api.cryptowat.ch/markets/bitflyer/btcfxjpy/ohlc",params = { "periods" : period , "after" : 1})
    response_data = response_data.json()

    #In einen DataFrame umgewandelt
    df_tmp = pd.DataFrame(pd.DataFrame(response_data)[:1]['result'][0],
                        columns=['date', 'open', 'high', 'low', 'close', 'tmp1', 'tmp2']).drop(columns=['tmp1', 'tmp2'])

    #Da date int ist, konvertieren Sie in datetime
    df_tmp['date'] = pd.to_datetime(df_tmp['date'].astype(int), unit='s')
    return df_tmp

#Erhalten Sie tatsächlich BTC OHLC-Informationen
df_btc = get_btc_ohlc()

# TA-In Array-Typ konvertiert, damit es von LIB verarbeitet werden kann
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'])

#Berechnen Sie das Bollinger-Band
upperband, middleband, lowerband = ta.BBANDS(btc_close, timeperiod=5, nbdevup=2, nbdevdn=2, matype=0)

#Impuls berechnen
momentum=ta.MOM(btc_close,timeperiod=10)

#RSI berechnen
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)


#Kombinieren Sie die erstellten technischen Index-Arrays zu einem DataFrame, um sie mit dem ursprünglichen DataFrame zu kombinieren
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'])


#Join by Dataframe,Indexbasierter Typ
df_btc = df_btc.merge(df_tmp, left_index=True, right_index=True)

Vorverarbeitung für Plot: Timed & Array

import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import mpl_finance

#Geben Sie den anzuzeigenden Zeitraum an.Wenn Sie alle sehen wollen, "df_btc.copy()Ist in Ordnung
df_w = df_btc.query('"2020-02-01" <= date <= "2020-02-29"').copy()

#In chronologischer Reihenfolge sortieren
df_w.sort_values(by='date', ascending=True, inplace=True)

#Indexzeit
df_w.set_index('date', inplace=True)

#In matplotlib wird die Zeit nur verarbeitet, wenn sie auf Unix-Zeit eingestellt ist. Konvertieren Sie daher von Datenzeit zu Unix-Zeit
df_w.index = mdates.date2num(df_w.index)

# mpl_Plot mit Finanzen.Übergeben Sie einfach das OHLC-Array und es wird ein Kerzendiagramm geschrieben
data_w = df_w[['open', 'high', 'low', 'close']].copy().reset_index().values

Handlung: Kerzentabelle, Bollinger Band, EMA, RSI, MACD

#Grafik in 3 Zeilen und 1 Spalte anzeigen. sharex=Echte gemeinsame Nutzung der x-Achse. gridspec_Passen Sie das Verhältnis jedes Diagramms mit kw an
fig, axes = plt.subplots(nrows=3, ncols=1, figsize=(20, 10), sharex=True, gridspec_kw={'height_ratios': [3, 1, 1]})

# mpl_finance.candlestick_Übergeben Sie in ohlc die OHLC-Daten des Arrays und zeigen Sie das Kerzendiagramm an
mpl_finance.candlestick_ohlc(axes[0], data_w, width=0.1, alpha=0.8, colorup='limegreen', colordown='red')

#Bollinger-Band über Kerzengraph überlagert
axes[0].plot(df_w.index, df_w['upperband'], color='green', alpha=0.9)
axes[0].plot(df_w.index, df_w['lowerband'], color='green', alpha=0.9)

#EMA überlagert das Kerzendiagramm
axes[0].plot(df_w.index, df_w['ema25'], color='red', alpha=0.8)
axes[0].plot(df_w.index, df_w['ema75'], color='orange', alpha=0.8)

#RSI-Diagramm anzeigen
axes[1].plot(df_w.index, df_w['rsi'], color='deepskyblue')

#MACD-Diagramm anzeigen
axes[2].bar(df_w.index, df_w['macdhist'], color='skyblue')

#Fügen Sie dem Diagramm ein Raster hinzu
axes[0].grid()
axes[1].grid()
axes[2].grid()

#Legende hinzufügen
axes[0].legend(['upperband', 'lowerband', 'ema25', 'ema75'])
axes[1].legend(['RSI'])
axes[2].legend(['MACD'])

locator = mdates.AutoDateLocator()
axes[0].xaxis.set_major_locator(locator)
axes[0].xaxis.set_major_formatter(mdates.AutoDateFormatter(locator))

#Da die x-Achsen-Notation abgedeckt ist, drehen Sie sie um 70 °
plt.xticks(rotation=70)

#Handlung
plt.show()
Ausführungsbeispiel
Screen Shot 2020-03-03 at 18.22.09.png

4. Zusammenfassung

Es kann gut so angezeigt werden, aber wenn Sie nur das Diagramm sehen möchten, ist es bequemer, Tradingview lol zu verwenden

Screen Shot 2020-03-03 at 18.27.58.png

Wenn Sie jedoch einen kostenlosen Plan für Tradingview haben, können Sie nur bis zu 3 technische Indikatoren verwenden. Lesen Sie daher bitte diesen Artikel und zeichnen Sie verschiedene Indikatoren kostenlos auf.

Als ich versuchte, die Bollinger-Band EMA25, EMA75, RSI anzuzeigen, wurde ich gebeten, einen bezahlten Plan zu erstellen.
Screen Shot 2020-03-03 at 18.29.05.png

Recommended Posts

Versuchen Sie, Bitcoin-Kerzendiagramme und technische Indikatoren in Python zu zeichnen
Kerzentabelle mit Python zeichnen
Wie man Autokorrelation und partielle Autokorrelation mit Python zeichnet
Zeichnen und verstehen Sie die multivariate Normalverteilung in Python
Holen Sie sich Aktienkurse und erstellen Sie mit Python Kerzendiagramme
Stapel und Warteschlange in Python
Unittest und CI in Python
Zeichnen Sie geografische Informationen in Python
Poisson-Verteilung und kumulative Poisson-Verteilung über SQLite in Python und Java
Pakete, die MIDI mit Python Midi und Pretty_Midi verarbeiten
Unterschied zwischen list () und [] in Python
Unterschied zwischen == und ist in Python
Zeigen Sie Fotos in Python und HTML an
Sortieralgorithmus und Implementierung in Python
Bearbeiten Sie Dateien und Ordner in Python
Über Python und Cython dtype
Zuweisungen und Änderungen in Python-Objekten
Überprüfen und verschieben Sie das Verzeichnis in Python
Verschlüsselung mit Python: IND-CCA2 und RSA-OAEP
Hashing von Daten in R und Python
Funktionssynthese und Anwendung in Python
Exportieren und Ausgeben von Dateien in Python
Reverse Flat Pseudonym und Katakana in Python2.7
Lesen und Schreiben von Text in Python
[GUI in Python] PyQt5-Menü und Symbolleiste-
Erstellen und lesen Sie Messagepacks in Python
Überlappende reguläre Ausdrücke in Python und Java
Unterschied in der Authentizität zwischen Python und JavaScript
Hinweise zur Verwendung von cChardet und python3-chardet in Python 3.3.1.
Module und Pakete in Python sind "Namespaces"
Vermeiden Sie verschachtelte Schleifen in PHP und Python
Anzeigen des Candlestick-Diagramms in Python (Matplotlib-Edition)
Unterschiede zwischen Ruby und Python im Umfang
Unterschied zwischen Anweisungen (Anweisungen) und Ausdrücken (Ausdrücken) in Python
Echte Werte und Eigenvektoren: Lineare Algebra in Python <7>
Warteschlangen- und Python-Implementierungsmodul "deque"
Gefaltetes Liniendiagramm und Skalierungslinie in Python
Unterschiede zwischen Python- und Java-Syntax
Überprüfen und empfangen Sie die serielle Schnittstelle in Python (Portprüfung)
Suchen und spielen Sie YouTube-Videos mit Python
Unterschied zwischen @classmethod und @staticmethod in Python
Schreiben Sie die O_SYNC-Datei in C und Python
Umgang mit "Jahren und Monaten" in Python
Private Methoden und Felder in Python [Verschlüsselung]
Suchen und überprüfen Sie die inverse Matrix in Python
Lineare Unabhängigkeit und Basis: Lineare Algebra in Python <6>
Rufen Sie sudo in Python auf und füllen Sie das Passwort automatisch aus
Unterschiede in der Multithread-Verarbeitung zwischen Python und Jython
Anzeigen des Candlestick-Diagramms in Python (Plotly Edition)
Modulimport und Ausnahmebehandlung in Python
Verwendung ist und == in Python
Projekt Euler # 1 "Vielfaches von 3 und 5" in Python
Verarbeitung (Python) Diagramm der Koordinaten der Liste Geben Sie an, wie oft in draw ()
Technische Veranstaltungen und Studiensitzungen in Nagoya
Organisieren Sie Python-Module und -Pakete in einem Chaos
Was ist "funktionale Programmierung" und "objektorientiert"? Python Edition
DL, Bytewert und Löschen der Datei in Python3
Python-Variablen und Datentypen, die mit Chemoinfomatik gelernt wurden
Empfangen und Anzeigen von HTML-Formulardaten in Python
Unterschied zwischen Variablen und Selbst. Variablen in der [Python] -Klasse
Implementieren Sie die Wiederholung und Erkundung von Gedenkstätten in Python und Go