comercio cuantitativo de acciones de pitón (4) --- tenedor dorado y tenedor muerto

Puramente el corazón de salvar al mundo, es el fin. Gou tiene el corazón de encantar al mundo, es decir, a la música. El amor puro es el final. Un poco de cinismo es una canción. El respeto puro por los demás es el final. Un poco de cinismo es música.

¿Qué es Golden Cha y Si Cha?

En el artículo anterior mencionamos la media móvil. Para entender la cruz dorada, necesitamos entender otro concepto, el cruce de media móvil. Se refiere al fenómeno de que las medias móviles de diferentes períodos se cruzan a medida que avanza el tiempo de negociación.

La más común es la media móvil de 5 días y la media móvil de 10 días dibujada por nosotros. Si se cruzan, se denomina fenómeno de cruce de media móvil. La cruz dorada se refiere a la intersección que se forma cuando la media móvil a corto plazo cruza la media móvil a largo plazo por debajo de la media móvil a largo plazo.

Si se produce este tipo de fenómeno de cruz dorada, se puede considerar como un indicador (alcista) de que el mercado cambia de corto a largo; a la inversa, cuando la media móvil de corto plazo cae desde arriba hasta romper la media móvil de largo plazo, llámelo una bifurcación muerta y puede considerarse como un mercado. Un indicador de cambio de largo a corto (bajista).

Primero veamos una imagen, como se muestra a continuación: La
Inserte la descripción de la imagen aquí
imagen de arriba también es el gráfico de línea K y el gráfico de promedio móvil de la primera publicación del blog. El naranja es el promedio móvil de 10 días y el azul es el gráfico de 5 días. promedio. Entre ellos, la intersección marcada con 1 es el promedio móvil de 5 días a corto plazo que rompe hacia arriba a través del promedio móvil de 10 días a largo plazo, que es alcista (Golden Cross). La intersección marcada con 2 es el promedio móvil de 10 días de período largo que cae por debajo del promedio móvil de 5 días de período corto, será bajista (cruce).

Sin embargo, según la imagen de GoerTek, las intersecciones 1, 2 están solo en línea con el segundo mercado. Por el contrario, la tercera intersección se elevó durante muchos días seguidos. Por lo tanto, para las acciones, no tiene sentido mirar este tipo de bifurcación de oro solo, y debe observarse en combinación con otros indicadores.

Operación de Golden Cha y Si Cha

Aquí, necesitamos volver a adquirir los datos de una acción. Después de todo, para la media móvil, los datos de un mes son de poca referencia. Necesitamos obtener al menos 3 meses de datos de acciones. El código específico es el siguiente:

import akshare as ak
df = ak.stock_zh_a_daily(symbol="sz002241", start_date="20200101", end_date="20210115",
                         adjust="qfq")
df.to_excel("歌尔股份year.xlsx")

Aquí, obtenemos los datos de 3 meses de Goertek y dibujamos sus promedios móviles de 20 y 30 días. El código específico es el siguiente:

df = pd.read_excel("歌尔股份year.xlsx")
df['date'] = pd.to_datetime(df['date'])
df['date'] = df['date'].apply(lambda x: x.strftime('%Y-%m-%d'))
df["SMA20"]=df["close"].rolling(20).mean()
df["SMA30"]=df["close"].rolling(30).mean()
fig = plt.figure(figsize=(12, 8))
ax = fig.add_subplot(111)
ax.plot(df["date"],df["SMA20"])
ax.plot(df["date"],df["SMA30"])
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.show()

Después de ejecutar, el diagrama de efectos que se muestra es el siguiente:
Inserte la descripción de la imagen aquí
Como se muestra en el diagrama anterior, en términos generales, este tipo de diagrama parece muy laborioso, después de todo, no marca la intersección para usted. Si hay muchas intersecciones, a menudo lleva mucho tiempo encontrarlas usted mismo. Para que el gráfico de nuestras acciones sea más intuitivo, debemos marcar las intersecciones. Sin embargo, antes de marcar, necesitamos encontrar la ubicación de la intersección.

El código es el siguiente:

diff=np.sign(df["SMA20"]-df["SMA30"])

sign () es una función para tomar el signo de número (el signo antes del número) en Numpy de Python. Si observa el gráfico anterior, encontrará que cuando SMA20 está por encima de SMA30, la diferencia es positiva y viceversa.

Para la diferencia de secuencia obtenida después de la resta, use la función DataFrame.shift () para desplazar 1 valor a la derecha para obtener una nueva secuencia, y luego reste la secuencia y obtenga el signo, puede obtener la señal cruzada de las dos medias móviles . Cuando el signo es negativo, es una cruz muerta, y cuando el signo es positivo, es una cruz de oro. El código correspondiente es el siguiente:

signal=np.sign(diff-diff.shift(1))
down_cross=df[signal<0]
up_cross=df[signal>0]

Dibuja el tenedor dorado y el tenedor muerto.

A continuación, dibujemos el tenedor dorado y el tenedor muerto, el código específico es el siguiente:

#标记金叉
for key, val in df.items():
    for index, today in up_cross.iterrows():
        x_posit = df.index.get_loc(index-1)
        ax.annotate("{}\n{}".format("金叉",today["date"]), xy=(x_posit, today["SMA20"]),xytext=(-30,-up_cross["SMA20"].mean()+100), xycoords="data",
                    fontsize=18, textcoords="offset points", arrowprops=dict(arrowstyle="simple", color="r"))
#标记死叉
for key, val in df.items():
    for index, today in down_cross.iterrows():
        x_posit = df.index.get_loc(index-1)
        ax.annotate("{}\n{}".format("死叉",today["date"]), xy=(x_posit, today["SMA20"]),xytext=(-30,-down_cross["SMA20"].mean()-100), xycoords="data",
                    fontsize=18, textcoords="offset points", arrowprops=dict(arrowstyle="simple", color="g"))

Aquí usamos anotar para ayudar a marcar las intersecciones en la imagen. El código específico es atravesar las intersecciones de clasificación en este momento y luego dibujarlas por separado.

El código completo es el siguiente:

import matplotlib.pyplot as plt
import pandas as pd
import matplotlib.ticker as ticker
import numpy as np

df = pd.read_excel("歌尔股份year.xlsx")
df['date'] = pd.to_datetime(df['date'])
df['date'] = df['date'].apply(lambda x: x.strftime('%Y-%m-%d'))
df["SMA20"] = df["close"].rolling(20).mean()
df["SMA30"] = df["close"].rolling(30).mean()
diff = np.sign(df["SMA20"] - df["SMA30"])
signal = np.sign(diff - diff.shift(1))
down_cross = df[signal < 0]
up_cross = df[signal > 0]
fig = plt.figure(figsize=(12, 8))
ax = fig.add_subplot(111)
plt.rcParams['font.sans-serif'] = ['SimHei']
ax.plot(df["date"], df["SMA20"])
ax.plot(df["date"], df["SMA30"])
for key, val in df.items():
    for index, today in up_cross.iterrows():
        x_posit = df.index.get_loc(index-1)
        ax.annotate("{}\n{}".format("金叉",today["date"]), xy=(x_posit, today["SMA20"]),xytext=(-30,-up_cross["SMA20"].mean()+100), xycoords="data",
                    fontsize=18, textcoords="offset points", arrowprops=dict(arrowstyle="simple", color="r"))

for key, val in df.items():
    for index, today in down_cross.iterrows():
        x_posit = df.index.get_loc(index-1)
        ax.annotate("{}\n{}".format("死叉",today["date"]), xy=(x_posit, today["SMA20"]),xytext=(-30,-down_cross["SMA20"].mean()-100), xycoords="data",
                    fontsize=18, textcoords="offset points", arrowprops=dict(arrowstyle="simple", color="g"))
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.show()

Después de ejecutar, el efecto que se muestra es el que se muestra en la siguiente figura: Los
Inserte la descripción de la imagen aquí
lectores cuidadosos deben encontrar que cuando tenemos el tiempo, avanzamos el índice un lugar (índice-1). Esto se debe a la conveniencia de calcular el tenedor de oro y la bifurcación muerta, La función shift se usa para mover 1 valor a la derecha Para hacer que la flecha corresponda a la intersección, necesitamos retroceder al punto de tiempo en reversa. (Debido a que los datos de tres meses tienen demasiadas intersecciones, aquí solo usamos la segunda mitad del promedio móvil)

Explicaremos la bifurcación de oro y la bifurcación muerta aquí. En el próximo artículo, presentaremos la visualización de la brecha de precio de las acciones.

Supongo que te gusta

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