Diskussion zum Artikel "Neuronale Netze leicht gemacht (Teil 14): Datenclustering"

 

Neuer Artikel Neuronale Netze leicht gemacht (Teil 14): Datenclustering :

Es ist mehr als ein Jahr her, dass ich meinen letzten Artikel veröffentlicht habe. Das ist eine ganze Menge Zeit, um Ideen zu überarbeiten und neue Ansätze zu entwickeln. In dem neuen Artikel möchte ich von der bisher verwendeten Methode des überwachten Lernens abweichen. Diesmal werden wir uns mit Algorithmen des unüberwachten Lernens beschäftigen. Wir werden insbesondere einen der Clustering-Algorithmen - K-Means - betrachten.

Wie Sie sehen, können unüberwachte Lernalgorithmen zur Lösung verschiedener Probleme eingesetzt werden. Aber wie können sie im Handel eingesetzt werden? Lasst uns nachdenken. Grafische Analysemethoden beinhalten fast immer bestimmte Chartmuster: Double Top / Double Bottom, Kopf und Schultern, Flahne, verschiedene harmonische Muster, usw. Darüber hinaus gibt es viele kleinere Muster, die aus 1 bis 3 Kerzen bestehen. Wenn wir aber versuchen, ein bestimmtes Muster in mathematischer Sprache zu beschreiben, müssen wir uns mit einer großen Anzahl von Konventionen und Toleranzen auseinandersetzen. Dies erschwert ihre Verwendung im algorithmischen Handel. Selbst wenn ein menschlicher Händler die Muster bestimmt, gibt es eine Menge Subjektivität. Deshalb finden verschiedene Händler bei der Analyse ein und desselben Chartmuster, die oft gegenläufige Vorhersagebewegungen aufweisen. Nun, vielleicht ist dies die Grundregel des gesamten Handels. Einige machen Gewinn, andere verlieren. Im Handelsprozess werden keine neuen Warenwerte geschaffen, während die Geldmenge unverändert bleibt. Sie wird nur von einer Brieftasche zur anderen verschoben. Wie können wir also Verluste vermeiden?

Kopf-Schulter-Muster

Werfen wir noch einmal einen Blick auf die oben erwähnten Chartmuster. Ja, sie haben alle ihre Varianten. Aber gleichzeitig hat jedes Muster seine eigene spezifische Struktur, die es von der allgemeinen Kursbewegungsgrafik unterscheidet. Wie wäre es also, wenn wir unüberwachte Datencluster-Algorithmen verwenden, damit das Modell alle möglichen Variationen in den Daten über einen bestimmten Zeitraum identifizieren kann. Da wir unüberwachtes Lernen verwenden, müssen die Daten nicht gekennzeichnet werden, und der Zeitraum kann recht groß sein. Vergessen Sie jedoch nicht, dass eine Vergrößerung des Zeitraums der Historie die Kosten der Modellschulung erhöht.

Autor: Dmitriy Gizlyk

 
Dieser Artikel ist genau das, wonach ich gesucht habe.
 

Hallo Dmitriy

ich habe alle Bibliotheken installiert, aber wenn ich versuche, dieses Python-Programm auszuführen, bekomme ich diesen Fehler:


runfile('C:/Users/rogerio/ título1.py', wdir='C:/Users/rogerio')

Traceback (letzter Aufruf):

Datei "C:/Users/rogerio/ título1.py", Zeile 20, in <module>

rsi=tl.RSI(rates['close'])

TypeError: 'NoneType'-Objekt ist nicht subscriptable


Ich verwende folgenden Quellcode


# -------------------------------------------------------#

# Data clustering model #

# -------------------------------------------------------#

# Bibliotheken importieren

importiere numpy als np

import matplotlib.pyplot as plt

importiere MetaTrader5 als mt5

von talib importieren abstrakt als tl

import sklearn.cluster as cluster

from datetime import datetime as dt


# Verbinden mit dem MetaTrader 5 Terminal

if not mt5.initialize():

print("initialize() failed, error code =",mt5.last_error())

quit()

# Herunterladen von Kursen

Kurse=mt5.copy_kurse_bereich('EURUSD',mt5.TIMEFRAME_H1,dt(2006,1,1),dt(2022,1,1))

mt5.shutdown()

# Indikatorwerte berechnen

rsi=tl.RSI(Kurse['Schluss'])

cci=tl.CCI(kurse['hoch'],kurse['tief'],kurse['schluss'])

macd,macdsignal,macdhist=tl.MACD(kurse['close'])


# Gruppieren der Trainingsstichprobe

data=np.array([rates['close']-rates['open'],rates['high']-rates['close'],rates['close']-rates['low'],rsi,cci,macd,macdsignal,macdhist]).T

s=data.shape[0]

data=np.hstack([data[40+k:s-20+k] for k in range(0,20)])


# Clustering mit einer anderen Anzahl von Clustern durchführen

R=bereich(50,1000,50)

KM = (cluster.KMeans(n_clusters=k).fit(data) for k in R)

distance=(k.transform(data) for k in KM)

dist = (np.min(D, axis=1) für D in distance)

avgWithinSS = [sum(d) / data.shape[0] for d in dist]

# Plotten der Trainingsergebnisse des Modells

plt.plot(R, avgWithinSS)

plt.xlabel('$Clasters$')

plt.title('Loss dynamic')

# Anzeige der generierten Graphen

plt.show()


Vielen Dank für die Hilfe

Rogerio

 
MrRogerioNeri .copy_rates_range('EURUSD',mt5.TIMEFRAME_H1,dt(2006,1,1),dt(2022,1,1))

mt5.shutdown()

# Indikatorwerte berechnen

rsi=tl.RSI(rates['close'])

cci=tl.CCI(Kurse['hoch'],Kurse['tief'],Kurse['Schluss'])

macd,macdsignal,macdhist=tl.MACD(kurse['close'])


# Gruppieren Sie die Trainingsstichprobe

data=np.array([rates['close']-rates['open'],rates['high']-rates['close'],rates['close']-rates['low'],rsi,cci,macd,macdsignal,macdhist]).T

s=data.shape[0]

data=np.hstack([data[40+k:s-20+k] for k in range(0,20)])


# Clustering mit einer anderen Anzahl von Clustern durchführen

R=range(50,1000,50)

KM = (cluster.KMeans(n_clusters=k).fit(data) for k in R)

distance=(k.transform(data) for k in KM)

dist = (np.min(D, axis=1) for D in distance)

avgWithinSS = [sum(d) / data.shape[0] for d in dist]

# Plotten der Trainingsergebnisse des Modells

plt.plot(R, avgWithinSS)

plt.xlabel('$Clasters$')

plt.title('Verlustdynamik')

# Generierte Graphen anzeigen

plt.show()


Vielen Dank für die Hilfe

Rogerio

Hallo Rogerio.
Haben Sie
TA-Lib : Technical Analysis Library installiert ?

TA-Lib : Technical Analysis Library - Home
  • TA-LIB.org
  • ta-lib.org
Technical analysis open-source software library to process financial data. Provides RSI, MACD, Stochastic, moving average... Works with Excel, C/C++, Java, Perl, Python and .NET