TA-Lib ist eine Bibliothek zur Berechnung typischer Indikatoren in der technischen Analyse beim Sammeln und Analysieren von Finanzdaten mit Python. Wie ich in Zurück geschrieben habe, bei der Analyse der täglichen Bestandsdaten (= täglicher Eröffnungspreis, hoher Preis usw.) mit Pandas, verschiedene typische Es ist bequemer und sicherer, eine Bibliothek zu verwenden, als alles selbst zu implementieren, um verschiedene Indikatoren zu berechnen.
TA-Lib http://ta-lib.org/
Um diese TA-Lib mit Python zu verwenden, werden Bindungen für Python bereitgestellt.
Wie installiert man http://mrjbq7.github.io/ta-lib/install.html
Die Installationsmethode ist einfach. Laden Sie einfach den Quell-Teerball herunter und installieren Sie ihn. Im obigen Link wird --prefix = / usr verwendet, aber unter Berücksichtigung von FHS ist --prefix = / usr / local besser.
VERSION=0.4.0
FILENAME=ta-lib-$VERSION-src.tar.gz
curl -L http://prdownloads.sourceforge.net/ta-lib/$FILENAME -O
tar xzvf $FILENAME
cd ta-lib
./configure --prefix=/usr/local
make
sudo make install
Python-Bindungen können zum Zeitpunkt des Schreibens in easy_install enthalten sein.
easy_install TA-Lib
Wenn eazy_install erfolgreich ist, importieren Sie aus IPython und stellen Sie sicher, dass Sie die Funktionen verwenden können, die mit ta beginnen.
Sie können die Liste der Funktionen und deren Verwendung auf der obigen GitHub-Site anzeigen, aber kurz erläutern
import talib as ta
ta.get_function_groups
Dann können Sie jede Funktion und die Gruppe für jede Funktion sehen.
Wie ich in Zurück geschrieben habe, können Sie mit TA-Lib frei rechnen, wenn Sie die Aktienkursdaten von Yahoo! Finance kratzen. Es kann jedoch ein Problem sein, wenn Sie versuchen, zu viele Daten über das Scraping hinaus zu verarbeiten. Es wird eine Gebühr erhoben, Sie können jedoch auch Zeitreihendaten vom Yahoo! Finance VIP Club herunterladen, um die Daten nach Bedarf herunterzuladen. Sie können es auch kaufen.
Nachdem Sie die Daten vorbereitet haben, können Sie sie mit IPython verarbeiten.
filename = 'stock_N225.csv' #Nikkei durchschnittliche Aktienkursdaten
df = pd.read_csv(filename,
index_col=0, parse_dates=True)
closed = df.asfreq('B')['Adj Close'].dropna() #Extrahieren Sie den angepassten Schlusskurs
prices = np.array(stock, dtype='f8') #Bewahren Sie es in einem NumPy-Array mit Gleitkommazahlen auf
#Finden Sie den einfachen gleitenden 5-Tage-Durchschnitt
sma5 = ta.SMA(prices, timeperiod=5)
# RSI (14 ..)Ich suche
rsi14 = ta.RSI(prices, timeperiod=14)
# MACD (Führender gleitender 12-Tage-Durchschnitt, nachlaufender gleitender 26-Tage-Durchschnitt, 9-Tage-Signalleitung)Ich suche
macd, macdsignal, macdhist = ta.MACD(prices,
fastperiod=12, slowperiod=26, signalperiod=9)
Nun, Sie können alle in TA-Lib implementierten technischen Indikatoren so berechnen.
Es ist schwer vorstellbar, ob es sich nur um numerische Werte handelt. Versuchen wir also, etwas zu zeichnen. Mit der bekannten Kombination von Pandas + Matplotlib und Talib können Sie Diagramme wie bei der sogenannten Aktiensoftware zeichnen.
Zeichnen wir zunächst den Tages-Chart, den EWMA (indexgewichteten gleitenden Durchschnitt) und das Bollinger-Band aus dem durchschnittlichen Nikkei-Aktienkurs der letzten 180 Tage.
Wie Sie sehen können, ist die Abweichung vom gleitenden 25-Tage-Durchschnitt eine gewisse Unterstützung, und die Standardabweichung + 2σ-Linie ist der obere Preis.
Schauen wir uns als nächstes DeNA an, das aufgrund der Partnerschaft mit Nintendo an zwei aufeinander folgenden Tagen zu einem heißen Thema geworden ist. Diesmal ist es eine Handlung für die letzten 90 Tage.
Ein Blick auf den Oszillatorindex zeigt, dass der Markt erstaunlich optimistisch ist.
Wenn es um solche Diagramme geht, kommen verschiedene Aktienexperten heraus und es ist schwierig, aber der Autor ist kein Aktienexperte, sondern Daten aus der Perspektive der Datenanalyse durch IT und Statistik / maschinelles Lernen. Ich schaue es mir an.
Wenn Sie einen statistischen Ansatz wählen, ist es legitim, einen Ansatz zu wählen, z. B. Änderungen an Daten zu quantifizieren und vorherzusagen, wie sie sich gegenüber früheren Daten ändern werden.
Es gibt eine Verzerrung in der menschlichen Wahrnehmung. Ich kaufe es, weil ich denke, dass es steigen wird, und ich verkaufe es, weil ich denke, dass es sinken wird, also neige ich dazu, voreingenommene Entscheidungen zu treffen.
Technische Analysen sind natürlich nicht allzweckmäßig, können jedoch dazu beitragen, diese Verzerrungen zu beseitigen und mechanische Entscheidungen zu treffen.
Wenn nun einige Aktien steigen, möchten Sie möglicherweise andere Aktien mit ähnlichen Marktpreisen von allen Aktien der TSE basierend auf diesen technischen Indikatoren suchen und kaufen. Die Suche nach der nächsten steigenden Aktie bei gleichzeitiger Suche nach Anlagezielen in anderen Branchen in einem derart steigenden Markt wird als [kreisförmige Farbe] bezeichnet (http://www.daiwa.jp/glossary/jpn/00369.html). .. Mit anderen Worten, die Aktien, die Gewinne gesichert haben, sind bereits hoch genug, daher suchen wir nach dem nächsten Ziel und denken, dass diesmal eine andere Aktie steigen könnte.
Wenn Sie die Aktien, die Sie derzeit halten, verkaufen und neues Geld in andere materielle Aktien wie diese investieren möchten, würde es eine Menge Zeit und Arbeit kosten, den Markt nacheinander zu erforschen. Es kann nur gesagt werden, dass es ein Freizeitmensch ist, jedes Mal so etwas zu tun. Da Computer entwickelt wurden und jeder IT und Mathematik problemlos in vollem Umfang nutzen kann, werde ich die Zirkulationsfarbe durch maschinelles Lernen ausprobieren.
Zunächst werden wir als Lehrerdaten mehrere Aktien in Branchen aufnehmen, die bereits Gewinne erzielt haben, und einen Datenrahmen generieren. Es hängt davon ab, welche Art von Standpunkt Sie hier erstellen möchten, aber dieses Mal werde ich einfach den Impuls der Zeitreihendaten als Beispiel aufgreifen.
import os
import pandas as pd
import numpy as np
from sklearn import svm
def read_from_csv(stock, filename):
if os.path.exists(filename):
return pd.read_csv(filename,
index_col=0, parse_dates=True)
def read_txt(filename):
stocks = pd.read_csv(filename, header=None)
data = pd.DataFrame([])
for s in stocks.values:
stock = str(s[0])
csvfile = "".join(['ti_', stock, '.csv'])
df = read_from_csv(stock, csvfile).asfreq('B')[-30:]
data[stock] = df.ix[:,'mom25']
print(data.T.tail(10))
return data.T
data = read_txt('stocks.txt')
Dadurch wird ein Datenrahmen mit dem Aktiencode und der täglichen Dynamik erstellt. Lassen Sie uns dies in eine Mehrfachliste mit Zeitreihenimpuls für jeden Issue-Code im Voraus konvertieren. Das ist schlammig, also werde ich es weglassen.
Was die Geschichte des maschinellen Lernens betrifft, ein Beispiel für die Klassifizierung von Schülernoten in Gruppen und die Klassifizierung von Schülern für die gesamte Klasse basierend darauf Ich schrieb. Auf diese Weise klassifiziert der Support Vector Machine Classifier, der die oben genannten Lehrerdaten gelernt hat, die vergangenen Daten aller Aktien, die im ersten Abschnitt der Tokioter Börse aufgeführt sind.
from sklearn.cluster import KMeans
from sklearn import svm
kmeans_model = KMeans(n_clusters=100, random_state=100).fit(train_X)
labels = kmeans_model.labels_
clf = svm.SVC(kernel='rbf', C=1) #RBF-Kernel-Unterstützung Vector-Maschine als Klassifikator
clf.fit(train_X, labels) #Lernen
results = clf.predict(test_X) #Einstufung
Jetzt ist es möglich, Aktien mit ähnlicher Dynamik mechanisch zu extrahieren.
Jeder, der IT und Mathematik voll ausnutzt, kann Finanzdaten wie Quants analysieren und tatsächlich investieren, um Gewinn zu erzielen. Datenanalyse ist ohne Zweck bedeutungslos und nutzlos, aber wenn es einen klaren Zweck gibt, zum Beispiel bei Investitionen zu helfen, denke ich, dass sich die Berechnung lohnt. Bitte beachten Sie, dass dieser Artikel die Leser nicht zum Investieren ermutigt.
Dies ist das Ende der Analyse der Bestandsdaten, und ich möchte mehr über das maschinelle Lernen schreiben, das in der zweiten Hälfte dieser Zeit ab dem nächsten Mal auftrat.
Recommended Posts