Discussão do artigo "Redes neurais de maneira fácil (Parte 14): Agrupamento de dados"

 

Novo artigo Redes neurais de maneira fácil (Parte 14): Agrupamento de dados foi publicado:

Devo confessar que já se passou mais de um ano desde que o último artigo foi publicado. Em um período tão longo como esse, é possível reconsiderar muitas coisas, desenvolver novas abordagens. E neste novo artigo, gostaria de me afastar um pouco do método de aprendizado supervisionado usado anteriormente, e sugerir um pouco de mergulho nos algoritmos de aprendizado não supervisionado. E, em particular, desejaria analisar um dos algoritmos de agrupamento, o k-médias (k-means).

Como você pode ver, algoritmos de aprendizado não supervisionados permitem a resolução de diversos problemas. Mas como podemos usá-los em nossa negociação? Vamos pensar. Quando usamos os métodos de análise gráfica, quase sempre falamos sobre certos padrões: topo duplo/fundo duplo, cabeça e ombros, bandeira, padrões harmônicos, etc. Existem também padrões de velas pequenos que consistem em 1-3 velas. E, quase sempre, quando tentamos descrever um padrão em termos matemáticos, somos confrontados com muitas convenções e suposições. O que complica seu uso na negociação algorítmica. Francamente, há também muita subjetividade na hora de o operador humano determinar padrões. É por isso que, após analisar o mesmo gráfico, diferentes operadores encontram padrões diferentes, muitas vezes indo na direção oposta do movimento previsto. Sim, devo aceitar, todo o sistema de negociação é construído sobre isso. Digamos que alguns desses operadores têm lucro e outros, prejuízo, porque, possivelmente, não foram criados novos inventários no curso do pregão, e a oferta de dinheiro permaneceu inalterada. Só que, na verdade, pode ter acontecido que tal oferta tenha apenas pulado de um bolso para outro. Mas como podemos evitar levar prejuízo?

Padrão cabeça ombros

Vamos dar outra olhada nos padrões gráficos mencionados acima. Sim, todos eles têm suas suposições. Mas, ao mesmo tempo, cada padrão tem sua própria estrutura, que o distingue do gráfico geral do movimento de preços. Bem, e se usarmos algoritmos de agrupamento de dados não supervisionados e instruirmos o modelo a destacar todas as possíveis variações nos dados durante um determinado período? Como usamos aprendizado não supervisionado, não precisamos marcar os dados e o período pode ser bastante grande. Obviamente, devemos lembrar que, à medida que o período do histórico aumenta, também os recursos gastos no treinamento do modelo aumentam.

Autor: Dmitriy Gizlyk

 
Este artigo é o que eu estava procurando.
 

Oi Dmitriy

Eu instalei todas as bibliotecas, mas quando tento executar esse programa em python, recebo este erro:


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

Traceback (última chamada mais recente):

Arquivo "C:\Users\rogerio\sem título1.py", linha 20, em <module>

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

TypeError: o objeto 'NoneType' não é subscritível


Estou usando este código-fonte


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

# Modelo de agrupamento de dados

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

# Importar bibliotecas

import numpy as np

import matplotlib.pyplot as plt

import MetaTrader5 as mt5

from talib import abstract as tl

import sklearn.cluster as cluster

from datetime import datetime as dt


# Conecte-se ao terminal do MetaTrader 5

if not mt5.initialize():

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

quit()

# Download das cotações

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

mt5.shutdown()

# Calcular valores do indicador

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

cci=tl.CCI(rates['high'],rates['low'],rates['close'])

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


# Agrupar a amostra de treinamento

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)])


# Executar o clustering com um número diferente de clusters

R=alcance(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]

# Plotagem dos resultados do treinamento do modelo

plt.plot(R, avgWithinSS)

plt.xlabel('$Clasters$')

plt.title('Loss dynamic')

# Exibir os gráficos gerados

plt.show()


Obrigado pela ajuda

Rogerio

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

mt5.shutdown()

# Calcular os valores do indicador

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

cci=tl.CCI(rates['high'],rates['low'],rates['close'])

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


# Agrupar a amostra de treinamento

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)])


# Executar o clustering com um número diferente de clusters

R=alcance(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]

# Representação gráfica dos resultados do treinamento do modelo

plt.plot(R, avgWithinSS)

plt.xlabel('$Clasters$')

plt.title('Perda dinâmica')

# Exibir os gráficos gerados

plt.show()


Obrigado pela ajuda

Rogerio

Olá , Rogério.
Você instalou
a TA-Lib: Technical Analysis Library?

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