4. HistoryPanel Visualización

El capítulo anterior, [HistoryPanel (Panel de datos históricos)] (2.5.%20historypanel.md), presentó cómo alinear datos históricos de múltiples objetivos e indicadores en el mismo panel. Este capítulo explica cómo trazar datos directamente usando el panel: en comparación con «usar primero to_share_frame y luego escribir manualmente el código matplotlib», HistoryPanel.plot() combina automáticamente vistas como gráficos de velas japonesas, volumen, MACD y gráficos de líneas basados ​​en el htypes actual, lo que garantiza la coherencia entre el contexto de exploración de datos y la fase de investigación de estrategias.


4.1. hp.plot(): Punto de entrada unificado recomendado

En este proyecto, HistoryPanel.plot() es el único punto de entrada recomendado para trazar (si la interfaz anterior todavía existe, también debe delegarse semánticamente al mismo canal). Sólo necesita asegurarse de que el panel no esté vacío y contenga las columnas necesarias para el trazado (por ejemplo, se requiere un OHLC completo para generar un gráfico de velas); otros tipos de gráficos se determinarán automáticamente internamente según ⟦CÓDIGO1⟧.

Los significados de los parámetros comúnmente utilizados son los siguientes (consulte HistoryPanel API para obtener la firma completa):

Parámetros

Resumen de funciones

shares

Un subconjunto de los objetivos que se trazarán; De forma predeterminada, se utilizan todos los objetivos del panel.

layout

Diseños de múltiples objetivos: «superposición» (superposición dentro del mismo sistema de coordenadas), «apilamiento» (agrupación y facetado vertical), «automático» (por ejemplo, dos objetivos tienden a superponerse, más se apilan).

interactive

False utiliza un gráfico estático de matplotlib; True utiliza un gráfico interactivo de Plotly (zoom, panorámica, desplazamiento, etc.).

highlight

Resalte valores extremos, como “max”/”min”, o pase un diccionario de configuración.

plotly_backend_app

Solo es válido cuando interactive=True: 'auto' (prefiere FigureWidget, recurre al contenedor HTML si falla), 'FigureWidget', 'html'.

Nota: Cuando la cantidad de objetivos solicitados es grande, la implementación puede limitar la cantidad de objetivos realmente dibujados y emitir una advertencia para evitar sobrecargar un solo gráfico; el comportamiento específico está sujeto a la versión actual. Para obtener detalles sobre ajustes menores al diseño de múltiples objetivos y correcciones históricas, consulte las entradas relevantes en RELEASE_HISTORY 2.2.x.

4.2. Diagramas estáticos y diagramas interactivos.

  • **interactive=False (predeterminado): Depende de matplotlib, adecuado para trazar por lotes y generar archivos estáticos mediante scripts; no fuerza la instalación de Plotly.

  • interactivo=Verdadero: Depende de trama; en Jupyter, si anywidget e ipywidgets están disponibles, generalmente puede obtener un FigureWidget, que tiene una interacción más completa entre el encabezado y los ejes; de lo contrario, puede recurrir al formulario contenedor HTML, que aún tiene interacción básica, pero la experiencia es ligeramente diferente de la ruta del widget.

Ejemplo minimalista (requiere OHLCV existente o columnas equivalentes localmente; solo con fines de demostración):

import qteasy as qt

hp = qt.get_history_data(
    htype_names='open, high, low, close, vol',
    shares='000300.SH',
    rows=120,
    as_data_frame=False,
)
fig = hp.plot()                      # 静态
# fig2 = hp.plot(interactive=True)  # 交互(需安装 plotly 等)

Cuando el gráfico principal es un gráfico de velas, el gráfico estático mostrará un resumen OHLC en la última vela de la línea de tiempo; el gráfico interactivo es consistente de forma predeterminada y al hacer clic en una vela se actualizará el resumen de esa vela (el texto del resumen para el usuario está en inglés). Esta área de resumen no aparecerá si no hay un OHLC completo.

4.3. Diseño y múltiples objetivos.

  • superposición: Adecuado para comparar los movimientos de precios de algunos objetivos (como dos acciones) en la misma escala de precios (si comparten el eje y depende de la implementación actual).

  • **stack: Cada objetivo (o grupo) ocupa una subtrama separada, adecuada para una gran cantidad de objetivos y para evitar que se apiñen en el mismo sistema de coordenadas.

  • auto: Cuando el número de objetivos es pequeño, tiende a apilarlos; cuando el número es grande, tiende a dividirlos en facetas, lo que reduce el ensayo y error manual.

Si la semántica del diseño se ajusta en una versión posterior, prevalecerá la descripción en RELEASE_HISTORY de la versión correspondiente.

4.4. Consejos de instalación y dependencia

  • Gráficos estáticos: generalmente requieren matplotlib (el mismo entorno que se usa comúnmente con qteasy).

  • Gráficos interactivos: Requiere plotly; Para disfrutar de una experiencia interactiva completa en Notebook, se recomienda instalar ipywidgets y anywidget. El rango de versiones de las dependencias opcionales se basa en el pyproject.toml del proyecto o la documentación de instalación; Este documento no enumera los números de versión individualmente.

El nombre del módulo de representación subyacente y el punto de extensión son solo para uso de los desarrolladores al leer el código fuente; la documentación del usuario no detalla los detalles de implementación a nivel de archivo.

4.5. resumen

  • La preparación de datos todavía se realiza usando get_history_data, de acuerdo con el Capítulo anterior; el trazado se realiza utilizando hp.plot().

  • interactive y layout son los dos interruptores que se modifican con mayor frecuencia en el uso diario; consulte la documentación de la API para conocer los parámetros avanzados.

  • Para cambios de comportamiento y correcciones relacionadas con la visualización, consulte RELEASE_HISTORY; para ejercicios prácticos, consulte el tutorial Uso de HistoryPanel para manipular y analizar datos históricos.