Negociación cuantitativa de acciones de Python (3) --- indicador de tendencia MACD

Condescender humildemente a uno mismo, la base de ser bendecido. La persona que está llena de aire no debe ser un arma remota, y de nada sirve tener el cabello vertical.

Que es MACD

El nombre completo de MACD es Convergencia y divergencia de media móvil, que es la media móvil de suavizado de convergencia y divergencia a la que se hace referencia a menudo en el mercado de valores. Fue propuesto por primera vez por Geral Appel en 1979. Pertenece a un indicador de tendencia, que consta de un DIF de línea rápida, una DEA de línea lenta y un histograma rojo y verde.

Entre ellos, DIF y DEA son dos líneas que cruzan el eje X como eje central, y el histograma se obtiene restando DEA de DIF. A menudo usamos la contracción de las columnas roja y verde del MACD como indicador auxiliar para estudiar el mercado en el mercado de valores. Por tanto, podemos concluir que lo más importante en el dibujo MACD es obtener DIF y DEA.

Entre ellos, el DIF se obtiene restando la media móvil exponencial de corto plazo EMA1 del precio de cierre y la media móvil exponencial de largo plazo EMA2. En cuanto a DEA, es solo un suavizado de movimiento secundario del valor DIF, que se utiliza principalmente para ayudar a observar cambios.

Teóricamente hablando, en un mercado de valores que continúa subiendo, la línea EMA1 de corto plazo está por encima de la línea EMA2 de largo plazo, y la desviación positiva (+ DIF) entre ellas se hará cada vez más grande, la distancia DIF DEA también se convertirá en más grande, y el histograma también se expandirá; por el contrario, en la disminución acelerada, la interpolación de desviación negativa (-DIF) se hará cada vez más pequeña. Cuando el mercado retrocede, la distancia entre DIF y DEA disminuirá gradualmente, es decir, el indicador a menudo dicho tiene una desviación, que corresponde a la segunda ronda de subida / bajada del precio de la acción, aunque supera el punto alto de la primera. ronda de precio de la acción / Punto bajo, pero la energía cinética de la segunda ronda de operación es menor que la de la primera ronda, lo que indica que la tendencia está al final del día.

Cálculo del indicador MACD

El cálculo del indicador MACD se divide en 4 pasos:

(1) Como se mencionó anteriormente, MACD está compuesto por DIF, DEA e histograma, entre los cuales DIF se obtiene restando EMA1 y EMA2. Por lo tanto, primero debemos calcular los valores de EMA1 y EMA2. Cabe señalar que la EMA es diferente de las medias móviles ordinarias, es una media móvil ponderada exponencialmente, es decir, el período de ventana de EMA1 es de 12 días y el período de ventana de EMA2 es de 26 días. Calculado como sigue:

EMA1 (media móvil del precio de cierre del día 12) = EM1 (12) 11/13 del día anterior + precio de cierre de hoy 2/13

EMA2 (promedio móvil del precio de cierre de 26 días) = ​​EMA2 del día anterior (26) 25/27 + precio de cierre de hoy 2/27

Ahora calculamos directamente estos dos valores a través del código, los pasos específicos son los siguientes:

EMA1=df["close"].ewm(span=12, adjust=False).mean()
EMA2=df["close"].ewm(span=26, adjust=False).mean()

(2) Después de obtener EMA1 y EMA2, podemos calcular el valor de DIF y DEA. Por lo general, el período de ventana de la DEA es de 9 días, la fórmula específica es la siguiente:

DIF (valor de diferencia) = EMA1-EMA2

DEA (desviación promedio) = DEA 8/10 del día anterior + DIF 2/10 de hoy

Después de reemplazarlo con código Python, se ve así:

DIF=EMA1-EMA2
DEA=DIF.ewm(9,adjust=False).mean()

(3) Finalmente, el histograma se obtiene mediante DIF y DEA, la fórmula específica es la siguiente:

BAR (valor de barra) = 2 * (DIF-DEA)

Después de reemplazarlo con el código, se ve así:

BAR=2*(DIF-DEA)

Pero hemos visto que el histograma en otro software de stock no es una capa constante, sino rojo y verde, por lo que aquí también necesitamos clasificar el valor de BAR para mostrar el histograma rojo y verde. el código se muestra a continuación:

red_bar=np.where(BAR>0,BAR,0)
blue_bar=np.where(BAR<0,BAR,0)

Dibujar gráfico MACD

Ahora que tenemos todos los valores para dibujar el MACD, ahora podemos dibujar el gráfico del indicador MACD directamente, el código completo es el siguiente:

import numpy as np
import matplotlib.pyplot as plt
from datetime import datetime

fig = plt.figure(figsize=(12, 8))
ax = fig.add_subplot(111)

df = pd.read_excel("歌尔股份k.xlsx")
df['date'] = pd.to_datetime(df['date'])
df['date'] = df['date'].apply(lambda x: x.strftime('%Y-%m-%d'))
EMA1=df["close"].ewm(span=12, adjust=False).mean()
EMA2=df["close"].ewm(span=26, adjust=False).mean()
DIF = EMA1 - EMA2
DEA = DIF.ewm(span=9, adjust=False).mean()
BAR = 2 * (DIF - DEA)

red_bar = np.where(BAR > 0, BAR, 0)
blue_bar = np.where(BAR < 0, BAR, 0)

ax.plot(np.arange(0, len(df)), DIF)
ax.plot(np.arange(0, len(df)), DEA)

ax.bar(np.arange(0, len(df)), red_bar, color="red")
ax.bar(np.arange(0, len(df)), blue_bar, color="blue")
ax.xaxis.set_major_locator(ticker.MaxNLocator(20))

def format_date(x, pos=None):
    if x < 0 or x > len(df['date']) - 1:
        return ''
    return df['date'][int(x)]

ax.xaxis.set_major_formatter(ticker.FuncFormatter(format_date))
plt.setp(plt.gca().get_xticklabels(), rotation=45, horizontalalignment='right')
plt.title("MACD")
plt.show()

Después de la ejecución, los resultados obtenidos se muestran en la siguiente figura:
Gráfico MACD
MACD se explica aquí, y el próximo artículo presentará a Jincha y Sicha.

Supongo que te gusta

Origin blog.csdn.net/liyuanjinglyj/article/details/112755758
Recomendado
Clasificación