2. Extraer información de tablas de datos de forma estandarizada
En capítulos anteriores, introdujimos los conceptos de fuentes de datos y cómo completarlas con datos financieros. En este capítulo, explicaremos cómo extraer información útil de fuentes de datos, en lugar de simplemente leer datos.
QTEASY Módulo de gestión de datos: 
2.1. Información != Datos
En el comercio cuantitativo, necesitamos preparar una gran cantidad de datos financieros. Sin embargo, los datos en sí no son el objetivo final; Necesitamos extraer información útil de él. En nuestras estrategias comerciales, utilizamos esta información para tomar decisiones comerciales.
Información no es lo mismo que datos. Parte de la información se puede leer directamente de las tablas de datos, como el precio de cierre y el precio de apertura de una acción. Sin embargo, cierta información requiere ciertos cálculos para obtenerse, como el precio ajustado de una acción.
Por ejemplo, en nuestra estrategia comercial, necesitamos utilizar el precio preajustado de una acción. Sabemos que el precio ajustado se calcula utilizando el precio de las acciones y el factor de ajuste, y estos se almacenan en las dos tablas siguientes:
stock_daily: Un gráfico de velas diario de los precios de las acciones, que incluye información como el precio de apertura, el precio de cierre, el precio más alto y el precio más bajo.stock_adj_factor: Esta tabla contiene información sobre los factores de precio de las acciones ajustados.
En este punto, las dos tablas anteriores han almacenado los datos que necesitamos, pero no son la información que necesitamos. Necesitamos realizar cálculos para obtener la información que necesitamos.
Por tanto, para obtener la información del precio ajustado no podemos evitar el tedioso proceso de cálculo.
Además, hay que tener en cuenta que si necesitamos el precio de la vela diaria ajustado en lugar del precio de la vela horaria ajustado, también necesitamos convertir los datos de la vela diaria a los datos de la vela horaria, lo que complica aún más el proceso de cálculo.
Al implementar una estrategia comercial, si se considera el proceso de conversión y cálculo anterior cada vez que se utilizan precios ajustados, la implementación de la estrategia será compleja y propensa a errores. También hará que desperdiciemos nuestra limitada energía en estos cálculos triviales en lugar de centrarnos en la implementación de la estrategia.
Por lo tanto, necesitamos una forma de encapsular estos procesos computacionales triviales de modo que al implementar una estrategia, solo debamos centrarnos en la estrategia misma, sin tener que preocuparnos por estos procesos computacionales triviales.
Para solucionar este problema, el módulo de gestión de datos qteasy proporciona una forma estandarizada de extraer información de las tablas de datos. Esta forma es a través del objeto DataType.
2.2. DataType objeto
El objeto DataType es un objeto importante en el módulo de gestión de datos QTEASY. Introducido oficialmente en la versión 1.4, encapsula la lógica de procesamiento de datos estandarizada para extraer información de tablas de datos. Esto permite a los usuarios definir un único objeto DataType y centrarse en implementar sus estrategias, en lugar de perder tiempo en tediosos cálculos y adquisición de datos.
qteasy proporciona una gran cantidad de objetos DataType predefinidos integrados, y los usuarios también pueden personalizar los objetos DataType según sus propias necesidades.
Para poner un ejemplo sencillo, supongamos que necesitamos obtener el precio ajustado de una acción después de la división de acciones o los dividendos. Podemos usar directamente el objeto DataType: close|b integrado, como se muestra a continuación:
# 获取格力电器 2025-02-01 到 2025-02-27 的后复权收盘价
import qteasy
from qteasy.datatypes import DataType
close_b = DataType(name='close|b', asset_type='E', freq='D')
# 获取数据
close_b.get_data_from_source(
datasource=qteasy.QT_DATA_SOURCE,
symbols='000651.SZ',
starts='2025-02-01',
ends='2025-02-27',
)
ts_code 000651.SZ
trade_date
2025-02-05 9234.85
2025-02-06 9194.82
2025-02-07 9295.95
2025-02-10 9245.38
2025-02-11 9199.03
2025-02-12 9220.10
2025-02-13 9232.74
2025-02-14 9268.56
2025-02-17 9201.14
2025-02-18 9066.29
2025-02-19 8836.63
2025-02-20 8817.67
2025-02-21 8714.43
2025-02-24 8695.47
2025-02-25 8533.23
2025-02-26 8621.72
2025-02-27 8729.18
2.3. Lista de todos los tipos de datos (con breves descripciones)
Qteasy 2.0 incluye una gran cantidad de tipos de datos integrados. Cada tipo de datos se identifica de forma única mediante nombre, frecuencia y tipo_activo, que corresponden a una tabla de datos y una columna o método de cálculo específicos. Se puede obtener una lista completa usando qteasy.datatypes.get_dtype_map(), que devuelve un DataFrame con índices (tipod, frecuencia, tipo_activo) y columnas que incluyen descripción (descripción del propósito), tipo_adquisición (método de adquisición), etc.
Obtenga la lista completa
import qteasy
from qteasy import datatypes
# 仅内置类型
dtype_map = datatypes.get_dtype_map()
print(dtype_map.head(20))
# 含用户自定义类型(若有)
dtype_map_all = datatypes.get_dtype_map(include_user_defined=True)
Ejemplos de tipos de datos comunes
nombre |
freq |
DataType objeto |
Breve descripción de usos |
|---|---|---|---|
trade_cal |
d |
None |
Calendario comercial |
close|b |
D |
E |
Precio de cierre de acciones después de la división de acciones |
close|f |
D |
E |
Precio de cierre de acciones (ajustado por divisiones de acciones) |
open, high, low, close, vol |
D/1min/5min/… |
E/IDX/FD, etc. |
Volumen de cierre alto y bajo de apertura de línea K |
abierto|b, alto|b, etc. |
D |
E |
Ajustado por divisiones de acciones, precios de apertura altos y bajos |
stock_symbol, stock_name, industry |
None |
E |
Información básica como código de stock, nombre e industria. |
wt_idx|% |
d |
E |
Ponderación de las acciones constituyentes del índice |
… |
… |
… |
Vea la lista completa en la salida de get_dtype_map() |
En la tabla anterior, los valores comunes para freq son: D para gráficos diarios, 1min/5min para gráficos de minutos y None para gráficos no relacionados con la frecuencia (por ejemplo, información básica). asset_type: E para acciones, IDX para índices, FD para fondos y None para gráficos sin restricciones de activos. Para obtener descripciones detalladas, tablas de datos correspondientes y columnas para cada tipo, consulte description y kwargs devueltos por get_dtype_map().
Cuando es necesario llevar múltiples objetivos y tipos de datos en la misma línea de tiempo al mismo tiempo (por ejemplo, OHLC y volumen de operaciones se incluyen en el cálculo o gráfico), el siguiente capítulo HistoryPanel presenta cómo recopilar los resultados de get_history_data en un panel 3D; El punto de entrada para los gráficos se puede encontrar en el siguiente capítulo HistoryPanel Visualización.