Python - histograma en indicador MACD para graficos financieros con matplotlib

 
Vista:

histograma en indicador MACD para graficos financieros con matplotlib

Publicado por Luis (2 intervenciones) el 29/04/2020 18:43:51
Hola, he empezado hace poquito con python y con la intencion de poder implementarlo a los mercados financieros, con sistemas automaticos y algoritmos.
Mientras aprendo, voy intentando crear mis propios indicadores tecnicos, ya existentes en todas las plataformas de trading, pero que me interesa trabajar su propio codigo.

Estoy teniendo problemas con el indicador MACD, sobre todo con su histograma. Supongo que se debe a que el histograma tiene datos por debajo de cero, o porque los valores de los ejes no se corresponden con los valores de las otras variables que deben graficarse conjuntamente con el.

Copio la parte del código donde surgen los problemas, por si alguien pudiera echarme una mano.
La idea es que tanto las dos lineas (medias moviles) y el histograma aparezcan en la misma ventana. Estoy convencido de que el problema es alguna tonteria, como que lo mismo los parametros de uno y los de la otra no pueden mostrarse en un mismo grafico por ser incompatibles los ejes, o algo por el estilo. Pero n se como darle solucion.

Gracias de antemano


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
'''
ya tenemos los datos para la grafica superior. Ahora debemos calcular los
parametros para las medias moviles para el indicador MACD, que es tal que asi:
	 MACD = EWMA(12)- EWMA(26)
	 Señal = MACD.EWMA(9)
	 Histograma = MACD-Señal
'''
 
 
macd = santander['Adj Close'].ewm(span=12).mean() - santander['Adj Close'].ewm(span=26).mean()
santander['MACD'] = macd
 
señal = santander['MACD'].ewm(span=9).mean()
santander['Signal'] = señal
 
histograma = santander['MACD'] - santander['Signal']
santander['Histogram'] = histograma
 
 
 
santander['MACD'].plot (color = 'green', ls = '-', lw = 1)
santander['Signal'].plot (color = 'orange', ls = '-', lw = 1)
 
 
santander['Histogram'].hist (color = 'red', bins = 100, lw = 1, edgecolor = 'black', rwidth=0.9)
 
 
plt.show()
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder