Use Pandas y Matplotlib de Python para dibujar líneas de indicador KDJ de stock

  Recientemente publiqué un libro, "Versión de enseñanza de video de combate real introductoria de Python basada en análisis de big data de stock", enlace Jingdong: https://item.jd.com/69241653952.html , que proporciona MACD, KDJ y otros indicadores El método de dibujo del gráfico. Aquí calcularemos y dibujaremos la línea del indicador KDJ según el algoritmo KDJ.

1 El proceso de cálculo del indicador KDJ

    El indicador KDJ también se llama indicador estocástico, que fue propuesto por primera vez por el Dr. George Lane. Este indicador contiene las fortalezas de los indicadores de fortaleza y debilidad, el concepto de impulso y las ventajas de las medias móviles, que se pueden utilizar para medir el grado de desviación de los precios de las acciones del rango de precios normal.

    El proceso de cálculo del indicador KDJ consiste en obtener primero el precio más alto, el precio más bajo y el precio de cierre del último día de negociación que ocurrió en el período especificado (generalmente 9 días), y luego calcular el valor aleatorio inmaduro a través de la relación proporcional entre los tres valores RSV, y luego use la media móvil suave para calcular los valores K, D y J sobre esta base. Una vez completado el cálculo, dibuje el valor de KDJ en un gráfico para predecir la tendencia de las acciones. El algoritmo específico se muestra a continuación.

    El primer paso: calcular el valor de RSV en el período (n días, n semanas, etc., n es generalmente 9). RSV también se denomina valor del índice estocástico inmaduro, que es la base para calcular el valor K, el valor D y Valor J. Tomando la unidad de cálculo del ciclo de n días como ejemplo, la fórmula de cálculo es la siguiente.

    n 日 RSV = (Cn - Ln) / (Hn - Ln) × 100

    Entre ellos, Cn es el precio de cierre del día n (generalmente el último día), Ln es el precio más bajo en el rango de n días y Hn es el precio más alto en el rango de n días. Según la fórmula anterior, el rango de valores de RSV es de 1 a 100. Si desea calcular el valor de RSV durante n semanas, Cn sigue siendo el precio de cierre del último día, pero Ln y Hn son los precios más bajos y más altos en n semanas.

    Paso 2: Calcule los valores de K y D de acuerdo con RSV, el método es el siguiente.

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

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

    En el proceso de cálculo, si no hay valor K o valor D del día anterior, se puede usar el número 50 en su lugar.

    En el uso real, la línea KD generalmente se calcula en un ciclo de 9 días. De acuerdo con la fórmula anterior, el primero es calcular el valor RSV de los últimos 9 días, es decir, el valor aleatorio inmaduro. La fórmula de cálculo es 9 -día RSV = (C - L9) ÷ (H9 - L9) × 100. El significado de cada parámetro se mencionó en el paso 1, y luego calcule los valores K y D del día como se muestra en este paso.

    Cabe señalar que los factores de suavizado 2/3 y 1/3 en la fórmula anterior se pueden cambiar, pero en la práctica del mercado de valores, estos dos valores se han establecido en 2/3 y 1/3 de forma predeterminada. .

    El tercer paso: Calcule el valor de J. La fórmula de cálculo del índice J es: J = 3 × K-2 × D. Desde el punto de vista de uso, la esencia de J es reflejar el grado de desviación entre el valor de K y el valor de D. Su rango puede exceder 100 en la parte superior e inferior a 0 en la parte inferior.

Los primeros indicadores KDJ eran solo K-line y D-line. En ese momento, también se llamaban indicadores KD. Con el desarrollo de la tecnología de análisis, los indicadores KD evolucionaron gradualmente a indicadores KDJ. Después de la introducción de los indicadores J, puede mejorar la predicción de indicadores KDJ.

    Después de calcular los tres valores de K, D y J para cada día de acuerdo con los tres pasos anteriores, conéctelos para ver la línea del indicador KDJ.

2 Dibuje una línea indicadora de KDJ estática

    De acuerdo con el algoritmo KDJ proporcionado en la sección anterior, el gráfico de tendencias KDJ de la acción "Jinshi Resources" (código de stock 603505) de septiembre de 2018 a mayo de 2019 se dibujará en el programa de muestra drawKDJ.py a continuación.    

! / usr / bin / env python 
2 # coding = utf-8 
3 import matplotlib.pyplot as plt 
4 import pandas as pd 
5 # 计算 KDJ 
6 def calKDJ (df): 
7 df ['MinLow'] = df ['Low '] .rolling (9, min_periods = 9) .min () 
8 # 填充 NaN 数据
9 df [' MinLow ']. fillna (value = df [' Low ']. Expandiendo (). min (), inplace = True ) 
10 df ['MaxHigh'] = df ['High']. Rolling (9, min_periods = 9) .max () 
11 df ['MaxHigh']. Fillna (value = df ['High']. Expandiendo () .max (), inplace = True) 
12 df ['RSV'] = (df ['Close'] - df ['MinLow']) / (df ['MaxHigh'] - df ['MinLow']) * 100 
13 # Calcule el valor KDJ de cada día de negociación a través del bucle for 
14 para i en el rango (len (df)): 
15 si i == 0: # primer día
16 gl.ix [i, 'K'] = 50 
17 gl.ix [i, 'D'] = 50 
18 si i> 0: 
19 gl.ix [i, 'K'] = gl.ix [i- 1, 'K'] * 2/3 + 1/3 * gl.ix [i, 'RSV'] 
20 gl.ix [i, 'D'] = gl.ix [i-1, 'D'] * 2/3 + 1/3 * gl.ix [i, 'K'] 
21 gl.ix [i, 'J'] = 3 * gl.ix [i, 'K'] - 2 * gl.ix [i , 'D'] 
22 return df

    En el método calKDJ definido en la declaración del programa desde la línea 6 a la línea 22, el valor de KDJ dentro del rango de tiempo especificado se calculará de acuerdo con el parámetro de entrada df.

    El paso de cálculo específico es usar df ['Low']. Rolling (9, min_periods = 9) .min () en la octava fila para establecer el valor del atributo 'MinLow' de cada fila (es decir, cada día de negociación ) al precio mínimo de cierre (Bajo) dentro de los 9 días.

    Si solo se ejecuta esta oración, el valor del atributo MinLow del 1 ° al 8 ° día de negociación será NaN, por lo que el valor del atributo MinLow de estos días de negociación debe establecerse en el precio de cierre dentro de los 9 días (Bajo) a través del código del programa en línea. 9 El valor mínimo. De la misma manera, establezca el valor del atributo 'MaxHigh' de cada día de negociación al precio más alto dentro de los 9 días a través del código del programa en la línea 10, y también use el método fillna en la línea 11 para completar el valor del ' Atributo MaxHigh 'de los 8 días anteriores. Luego, calcule el valor de RSV para cada día de negociación en la línea 12 de acuerdo con el algoritmo.

    Después de calcular el valor RSV, a través del bucle for en la línea 14, recorra cada día de negociación por turno y calcule el valor de KDJ correspondiente a cada día de negociación de acuerdo con el algoritmo KDJ durante el recorrido.

    Tenga en cuenta que si es el primer día de negociación, establezca los valores de K y D en el 50 predeterminado en el código del programa en las líneas 16 y 17. Si no es el primer día de negociación, pase las líneas 19 y 19. El algoritmo de 20 líneas calcula el valor K y el valor D. Después de calcular los valores de K y D, use el código de programa en la línea 21 para calcular el valor de J para cada día de negociación.

    En el código anterior, puede ver tres habilidades de operación sobre el objeto DataFrame:

    Primero, como se muestra en la línea 9, si desea volver a escribir los datos modificados en el DataFrame, debe agregar el parámetro inplace = True;

    En segundo lugar, en la línea 12, los valores de variables como df ['Close'] están en la unidad de columna, es decir, en el DataFrame, se puede operar directamente en la unidad de columna;

    En tercer lugar, el código df.ix [i, 'K'] = 50 en la línea 16, donde ix se usa para acceder al objeto a través del valor del índice y el valor de la etiqueta, y los métodos loc e iloc que logran funciones similares solo pueden ser pasó el valor del índice para acceder.    

Dibuje la línea KDJ 
24 def drawKDJ (): 
25 df = pd.read_csv ('D: /stockData/ch8/6035052018-09-012019-05-31.csv', 
encoding = 'gbk') 26 stockDataFrame = calKDJ (df) 
27 print (stockDataFrame) 
28 # Empezar a dibujar 
29 plt.figure () 
30 stockDataFrame ['K']. Plot (color = "blue", label = 'K') 
31 stockDataFrame ['D']. Plot (color = " green ", label = 'D') 
32 stockDataFrame ['J']. plot (color =" purple ", label = 'J') 
33 plt.legend (loc = 'best') # 画 图例
34 # Establecer la x eje Etiqueta de coordenadas y ángulo de rotación major_index = stockDataFrame.index [stockDataFrame.index% 10 == 0] 
35 major_xtics = stockDataFrame ['Fecha'] [stockDataFrame.índice% 10 == 0]índice% 10 == 0] 
36 plt.xticks (major_index, major_xtics)
37 plt.setp (plt.gca (). Get_xticklabels (), rotación = 30) 
38 # Con líneas de cuadrícula y establezca el estilo de cuadrícula 
39 plt.grid (linestyle = '-.') 
40 plt.title ("La imagen KDJ of Jinshi Resources ") 
41 plt.rcParams ['font.sans-serif'] = ['SimHei'] 
42 plt.show () 
43 # Método de llamada 
44 drawKDJ ()

    La operación de dibujar KDJ se implementa en el método drawKDJ en la línea 24. El paso clave es leer los datos de negociación de acciones del archivo csv especificado a través del código del programa en la línea 25, y luego llamar al método de trazado para dibujar con tres colores diferentes en el código del programa desde la línea 30 a la línea 32 Para la línea KDJ, debido a que la etiqueta se establece mediante el parámetro de etiqueta al dibujar, el código de programa en la línea 33 se puede ejecutar para dibujar la leyenda.

    La etiqueta de texto del eje x y el ángulo de rotación se establecen en el código de la línea 34 a la línea 37. Esta parte del código es muy similar al código anterior para dibujar la línea indicadora MACD. Para no mostrar la fecha demasiado en el eje x, así que use stockDataFrame .index% 10 == 0, solo muestre la fecha cuyo valor de índice es un múltiplo de 10.

    En la línea 44, se llama al método drawKDJ para dibujar el KDJ. Después de ejecutar este programa de muestra, puede ver el resultado como se muestra en la figura, en la que las tres curvas de KDJ están dibujadas en azul, verde y morado respectivamente (debido a que el libro está impreso en blanco y negro, el color no se puede ver, por favor léalo en su computadora Ejecute este programa de muestra en).

    La siguiente figura es el gráfico KDJ de las acciones "Jinshi Resources" obtenidas del software de acciones durante el mismo período de tiempo La tendencia de los dos es básicamente la misma.

    

 Este artículo puede ser reimpreso, por favor vuelva a imprimir el texto completo al reimprimirlo, sin ningún tipo de resumen, y proporcione el enlace original en forma de enlace. De lo contrario, puede encontrar protección de derechos por parte de los editores.

 

 

     Enlaces relacionados con el texto:

Use Pandas y Matplotlib de Python para dibujar el canal Tangqian de stock, el canal de la banda de Bollinger y la línea del grupo de cocodrilos 

Use Python para rastrear datos de acciones, dibujar velas y promedios móviles, y use el aprendizaje automático para predecir los precios de las acciones (de mi libro) 

Dibujar el efecto del indicador OBV del mercado de valores con lenguaje Python  

¿Cómo aprenden los programadores Python de manera eficiente y cómo ganar dinero con Python de manera eficiente? 

Utilice matplotlib y pandas para dibujar indicadores MACD de acciones y verificar las estrategias comerciales 

Presentar mi nuevo libro a todos: "Entrada práctica de Python basada en análisis de macrodatos de acciones"

Predecir la tendencia de las acciones a través del algoritmo de regresión lineal del aprendizaje automático (implementado en Python)  

En mi nuevo libro, trato de usar casos de existencias para contar el conocimiento de la visualización de big data del rastreador de Python, etc. 

Tome el indicador RSI de acciones como ejemplo, aprenda la función de correo electrónico de Python (incluido el indicador RSI para determinar la estrategia del punto de venta) 

Comenzando con el caso de predecir el alza y la caída de las acciones en base a SVM 

Utilice las bibliotecas matplotlib y numpy de python para dibujar el efecto de integración del promedio móvil de la línea K de acciones y el volumen de operaciones (código de estrategia comercial de verificación de contenido) 

Utilice las bibliotecas matplotlib y numpy de python para dibujar el efecto de integración de los promedios móviles de la línea K de valores (incluido el rastreo de datos desde la interfaz de red y la verificación del código de la estrategia comercial)    

Supongo que te gusta

Origin blog.csdn.net/sxeric/article/details/108272172
Recomendado
Clasificación