comercio cuantitativo de acciones de pitón (2) --- índice oscilante KDJ

¿Cómo es tu vida ?, no sé cómo, quiero ser próspero, y a menudo pienso en la soledad; cuando voy bien, a menudo pienso en rebelión; es decir, tengo suficiente comida frente a mis ojos, y a menudo pienso en la pobreza; es decir, las personas se aman y se respetan, y a menudo piensan en el miedo; eso es historia familiar. Él es pesado y, a menudo, piensa humildemente; es decir, está bien culto y, a menudo, piensa superficialmente. .

Que es KDJ

Hablando de KDJ, primero debemos mencionar el Índice de William. El cálculo de este indicador primero selecciona un período de tiempo específico, como 14 días, y luego encuentra el precio más alto y el precio más bajo en este momento específico para formar un rango de cambio de precio y luego Analice la posición relativa del precio de cierre en el último momento de este período con los precios más altos y más bajos durante el período para medir el fenómeno de sobrecompra o sobreventa del mercado.

El indicador KDJ fue originalmente el indicador KD propuesto por el operador de futuros de Chicago George Lane, que también se conoce como oscilador estocástico. A diferencia del Índice William, este indicador integra la idea de promedio móvil en la relación entre la posición relativa del precio de cierre y los precios más altos y más bajos, y utiliza más información para capturar la sobrecompra y la sobreventa en el mercado. Como sugiere el nombre, KDJ es una línea más J que el índice William, lo que mejora aún más la precisión de los datos.

Fórmula de cálculo de KDJ

En cuanto al cálculo de KDJ, podemos dividirlo en 4 pasos:

(1) Primero, se debe calcular el valor RSV, y su fórmula es la siguiente:

RSV = (precio de cierre en el día n-el precio más bajo en los últimos n días) ÷ (el precio más alto en los últimos n días-el precio más bajo en los últimos n días) * 100

En esta fórmula, n es el lapso de tiempo y la aplicación específica depende de la longitud de los datos que necesita observar. El rango de valores de RSV está entre 0 y 100. Cuanto mayor sea el valor, mayor será la posición relativa del precio de cierre en el rango de precios, y el mercado puede estar sobrecomprado y viceversa.

(2) Calcule el valor de K. El valor de K se calcula mediante la media móvil exponencial (EMA) del valor de RSV, es decir, el valor de K del día anterior y el valor de RSV actual se suman después de un cierto ajuste de peso. La fórmula de cálculo es la siguiente:

Valor K = 2/3 del valor K del día anterior + 1/3 del valor RSV del día

(3) Calcule el valor D. El valor D se calcula a partir de la media móvil exponencial del valor K, es decir, el valor D del día anterior y el valor K actual se suman después de un cierto ajuste de peso. La fórmula de cálculo es la siguiente :

Valor D = 2/3 valor D del día anterior + 1/3 valor K del día

(4) Calcule el valor J. El valor J es un índice auxiliar de KD, que refleja además el grado de multiplicación y separación del índice K y el índice D. La fórmula de cálculo es la siguiente:

Valor J = valor 3 K-valor 2 D

Calcule el valor de KDJ

Aquí, elegimos el lapso de tiempo como 9 días, que es el mismo que el promedio móvil explicado anteriormente. Pero a diferencia de la media móvil, el valor RSV todavía está disponible durante los primeros 8 días, pero no es válido, y los datos del noveno día y posteriores son válidos.

De acuerdo con la fórmula anterior, primero debemos calcular el precio más bajo en los últimos 9 días y el precio más alto en los últimos 9 días. Aquí, todavía usamos los datos de existencias en el archivo Goertek k.xlsx obtenido al comienzo del capítulo anterior. El código específico es el siguiente:

low_list = df["close"].rolling(9, min_periods=1).min()
high_list = df["high"].rolling(9, min_periods=1).max()

Una vez obtenidos estos dos valores, podemos calcular el valor de RSV. El código específico es el siguiente (aplicando la fórmula 1):

rsv = (df["close"] - low_list) / (high_list - low_list) * 100

Después de obtener el valor RSV, podemos derivar el valor KDJ de acuerdo con la fórmula anterior. El código específico es el siguiente:

df["K"] = rsv.ewm(com=2, adjust=False).mean()
df["D"] = df["K"].ewm(com=2, adjust=False).mean()
df["J"] = 3 * df["K"] - 2 * df["D"]

Analicemos primero el método ewm, su definición específica es la siguiente:

DataFrame.ewm(self, com=None, span=None, halflife=None, alpha=None, min_periods=0, adjust=True, ignore_na=False, axis=0)

Este método es una función ponderada exponencial. Cuando el ajuste es Falso, el promedio ponderado se calcula de forma recursiva. La fórmula es la siguiente:
Inserte la descripción de la imagen aquí
Cuando com es 2, entonces a = 1/3, aplique la segunda fórmula en la figura anterior y obtenga El El valor de K es (2/3) el valor de K del día anterior + 1/3 del valor de RSV del día, por lo que el valor de K se puede calcular usando ewm.

Lo mismo es cierto para el valor D, pero el RSV se reemplaza por el valor K. En cuanto al valor final de J, es el más simple, solo aplícalo directamente.

Dibujar curva KDJ

Ahora que se han calculado los valores de KDJ, la curva se puede dibujar directamente de forma natural. Podemos sustituir directamente los 3 valores en el método de la biblioteca de dibujo. El código específico es el siguiente (código completo):

import matplotlib.pyplot as plt
plt.figure(figsize=(12, 8))
df = pd.read_excel("歌尔股份k.xlsx")
low_list = df["close"].rolling(9, min_periods=1).min()
high_list = df["high"].rolling(9, min_periods=1).max()
rsv = (df["close"] - low_list) / (high_list - low_list) * 100
df["K"] = rsv.ewm(com=2, adjust=False).mean()
df["D"] = df["K"].ewm(com=2, adjust=False).mean()
df["J"] = 3 * df["K"] - 2 * df["D"]
plt.plot(df["date"], df["K"], label ="K")
plt.plot(df["date"], df["D"], label ="D")
plt.plot(df["date"], df["J"], label ="J")
plt.legend()
plt.show()

Después de ejecutar, la curva KDJ mostrada es la siguiente:
Curva KDJ
Indicador KDJ del que hablaremos aquí, el siguiente artículo presenta el dibujo del gráfico del indicador MACD.

Supongo que te gusta

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