Lista de productos y solución de problemas
Este capítulo es un «manual de primeros auxilios» para simular operaciones reales: dónde está el registro, qué archivo verificar primero y el orden en el que solucionar problemas comunes.
Estimado usuario, Live dejará varios tipos de «salidas» fijas en su disco. Trátelos como cuatro carpetas dedicadas y, cuando surjan problemas, siga estas carpetas para encontrar el resultado correcto; Esto es mucho más eficiente que buscar ciegamente entre cantidades masivas de resultados.
0. 适用场景
Ya está ejecutando en modo en vivo y está experimentando problemas como fallas en el envío, rechazo de pedidos, estados anormales o inconsistencias en los pedidos en tránsito.
Desea localizar el problema en un orden fijo para reducir los reinicios repetidos.
Debe verificar la ruta del registro, la estrategia de rotación y si se reescribe
broker_order_id.
1. 核心概念:四键产物
Qteasy proporciona a cada cuenta Live cuatro nombres de claves fijas para la ruta (la ruta sigue siendo válida incluso si el archivo no existe). En el diseño de observabilidad del subsistema Live, estos cuatro tipos de artefactos corresponden a «cómo se ejecuta el sistema, detalles de la transacción, recuperación de anomalías y auditoría de control de riesgos», respectivamente. Al solucionar problemas, primero determine a qué categoría pertenece el problema y luego abra el archivo correspondiente, en lugar de buscar en todo el registro.
El significado de cada columna: Nombre de clave: La clave dict devuelta por list_live_trade_artifacts / CLI artifacts; Qué es: El tipo de archivo; Cuándo abrirlo: El escenario desencadenante típico.
Cómo utilizar: Presione :doc:3-risk-and-order-lifecycle para determinar el tipo de rechazo de orden → marque risk_log para control de riesgos, marque trade_log para transacciones; marque sys_log para inicio/control de acceso/rastreo.
Nombre clave |
¿Qué es? |
¿Cuándo se debe encender? |
|---|---|---|
|
Registro de operación del sistema |
Programación de tareas, activación de control de acceso, seguimiento, informes de errores generales |
|
Detalles de la transacción CSV |
Detalles de transacciones, tarifas y cambios de posiciones. |
|
Reanudar archivo desde el punto de interrupción (el nombre de la clave es |
¿Cómo restaurar el estado Trader después de una salida anormal? |
|
Auditoría de rechazo de órdenes de control de riesgos (*.risk.log) |
**Priorizar cuando se sospeche de rechazo del control de riesgo |
Ejemplos (API y CLI):
import qteasy as qt
arts = qt.list_live_trade_artifacts(account_id=1, data_source=qt.QT_DATA_SOURCE)
print(arts['sys_log'], arts['trade_log'], arts['break_point'], arts['risk_log'])
# 若 CLI 提示 risk 拒单,可单独打开:
print(arts['risk_log'])
También puede obtener la misma ruta de cuatro teclas escribiendo artifacts (alias ls-artifacts) en el Trader Shell.
Reglas de ruta (breves):
Se admiten rutas relativas relativas al directorio raíz de Qteasy; También se admiten rutas absolutas relativas al directorio de inicio
~/....Las rutas
sys_log_file_pathytrade_log_file_pathse pueden modificar en tiempo de ejecución usandoqt.configure(...)y entrarán en vigor de inmediato.
2. 日志轮换
El registro en vivo a largo plazo acumula registros CSV y de riesgo. Qteasy limpia los archivos caducados en trade_log_keep_days (3 días predeterminados).
API:
qt.rotate_trade_logs(days=None)**CLI:
rotatelogs(aliasrotate-logs), opcional--days N
Alcance de la limpieza (dentro del directorio de registro de transacciones actual):
trade_log_*.csv/trade_summary_*.csv/value_curve_*.csv*.risk.log
Cada vez que un nuevo proceso de Python importa qteasy, girará automáticamente una vez; También puede ejecutar manualmente el comando anterior durante la operación y el mantenimiento.
3. 建议排错顺序(决策树)
Por favor, hágase las siguientes preguntas en orden, evitando saltarse pasos:
Paso 1: ¿Se muestra algún motivo de rechazo en inglés en la interfaz?
Sí, y sigue la ruta de control de riesgos (Paso 3), similar a
Order rejected by risk rule [...].Si encuentra errores como
Order submission failed, continúe con la ruta de envío/conexión (Paso 4).No hay mensaje de error obvio pero sí comportamiento incorrecto → Paso 6
Paso 2: abre artifacts y confirma que se pueden escribir en las cuatro rutas y que el archivo está creciendo.
Paso 3: Rechazo del control de riesgos
Marque
risk_logandrule_id`No debería aparecer ninguna línea de pedido nueva (a diferencia de los rechazos contrarios)
Paso 4 — Servicio de mostrador / Conexión
El
broker status:is_connectedindica si es verdadero (en el simulador, esto significa que la capa del adaptador puede manejar la solicitud).Tabla de pedidos: ¿Contiene pedidos con entradas
rejectedy un número de corredor vacío (pedido rechazado en el mostrador)?
Paso 5: Documentos de tránsito inconsistentes
En modo DEPURACIÓN:
run --task diagnose_pending_ordersO use Shell:
reconcilepara ver el JSON.
Paso 6: ¿La configuración es la que esperaba?
liveconfig --detailcomprueba la instantánea.
**Paso 7: compare trade_log con la secuencia de estado del pedido y utilice el estado final en el registro como estándar.
4. 高频故障剧本
Cada sección sigue la misma secuencia: Fenómeno → Qué comprobar primero → Causas comunes → Siguiente paso.
A. Orden rechazada por control de riesgos.
Problema: Rechazo de CLI debido a un error en inglés; el resultado del envío está vacío
{}Primera verificación:
risk_logque contiene `Tabla de pedidos no nueva línea Razones comunes: Exceder el límite de transacción única, no estar en la lista blanca, fuera del horario comercial, etc.
Próximos pasos: Ajuste las reglas o los parámetros del pedido y vuelva a realizar la prueba en el mismo escenario; consulte :doc:
3-risk-and-order-lifecyclepara obtener más detalles.
B. Envío fallido (no debido al control de riesgos)
Problema: No hay registro de envío válido o error de verificación local.
Primera verificación: estado del corredor, adecuación del efectivo/posición y pila de errores sys_log.
Causas comunes: No conectado, campo no válido, recursos insuficientes
Siguiente paso: Vuelva a intentarlo después de reparar la conexión o el campo.
C. Contragestión de pedidos rechazados
Impacto: La tabla de pedidos tiene filas donde
status=rejectedybroker_order_idestán vacías.Primera verificación: rastreo y el
reasondevuelto por el departamento de procesamiento.Razón común: Las reglas de la casa de bolsa simulada no aceptan esta orden (sin relación con el control de riesgos).
Siguiente paso: Consulte la lista de rechazos en el documento :doc:
6-trader-snapshot-gatey no la confunda con control de riesgos.
D. Cumplimiento parcial a largo plazo
Fenómeno: Los pedidos se cumplen sistemáticamente sólo parcialmente.
Primera comprobación: Volumen de operaciones acumulado frente al número de órdenes.
Razones comunes: Las devoluciones requeridas aún no se han realizado en su totalidad; o las condiciones del mercado están provocando transacciones lentas en lotes.
Siguiente paso: Determine si los comentarios de la transacción deben usarse para actualizar el estado a
filled.
E. El estado poscomercialización es incierto.
Problema: No está claro cómo manejar las órdenes pendientes después del cierre del mercado.
Primera comprobación:
post_closerastros relacionados,reconcileJSON.Siguiente paso: Verificar la orden de cancelación y el estado final.
F. broker_order_id / Excepción de orden en tránsito
Cuando el estado de la orden local, el número de orden de corretaje o la lista de órdenes en tránsito no coinciden, los fenómenos son variados, pero todos pueden clasificarse en las siguientes tablas. Esta tabla está en la categoría viva 5-C observable, consistente con los campos de diagnóstico de :doc:6-trader-snapshot-gate; Las columnas remotas del simulador suelen estar vacías, lo cual es normal.
El significado de cada columna: Fenómeno es la contradicción que observas; Primera verificación es la fuente principal de evidencia; Siguiente paso es una acción sugerida (principalmente un diagnóstico de solo lectura, no modificado automáticamente).
Cómo utilizar: Haga coincidir la línea «fenómeno» → Ejecute «Verificar primero» → Si aún no está claro, ejecute --task diagnose_pending_orders en DEBUG.
Fenómeno |
comprobar primero |
Siguiente paso |
|---|---|---|
El control de riesgos rechaza pedidos |
|
Reglas de ajuste |
Contra rechazo |
Orden rechazada, corredor vacío. |
trace / reason |
Enviado pero sin ID de corredor |
ACK de aceptación y reescritura |
:doc: |
Inconsistencia entre tránsito local y remoto |
DEBUG: |
Diagnósticos de sólo lectura; El extremo remoto del simulador suele estar vacío. |
Ayudantes de CLI: reconcile, gate.
G. Inconsistencia entre la interfaz y los registros
Problema: Las indicaciones de la CLI y las comprobaciones de registros posteriores parecen contradictorias.
Primera verificación: Alinee todos los registros del mismo ID de pedido en secuencia de tiempo.
Siguiente paso: Realice un análisis post mortem basado en el estado final del registro.
5. 运维建议
Verifique periódicamente el uso del directorio del registro de transacciones; si es necesario, utilice
rotatelogs --days N.Guarde el resultado de
liveconfig --detailen los días de ejecución críticos como una captura de pantalla o texto.Carrera de larga distancia o referencia previa al lanzamiento: doc:
7-manual-smoke-live-grid-roadmap
6. 快速检查清单
Cuenta correcta
La configuración entra en vigor (
liveconfig)¿El sistema de control de riesgos rechaza la solicitud (
risk_log)?¿Puede la firma de corretaje manejar esto (estatus de corredor)?
¿Se debe volver a escribir
broker_order_idtras un procesamiento exitoso?Las rutas de cuatro claves son legibles (
artifacts)
7. 常用英文提示与中文含义
Order rejected by risk rule [MAX_ORDER_QTY]: order quantity exceeds limit
Significado: Regla de control de riesgos local MAX_ORDER_QTY rechazada: la cantidad superó el límite. Marque ⟦CÓDIGO0⟧; No fue una firma de corretaje la que rechazó la orden.
<RISK REJECTED> rule_id='MAX_ORDER_QTY' reason='...' symbol='000001.SZ' ...
Significado: Igual que arriba, líneas de registro de control de riesgos estructuradas, lo que facilita su búsqueda.
Order submission failed.
Significado: El proceso de envío falló (no es un contrarechazo después de la aprobación del control de riesgos). Verifique la conexión y sys_log.
[NOT_IMPLEMENTED] sync_from_broker is reserved for QMT broker integration (S2.1-b).
Significado: El comando sync aún no ha logrado la sincronización remota real. Este es un mensaje esperado y no un error de tiempo de ejecución.
8. 相关跳转
Inicio y Configuración: :doc:
2-configuration-and-runCiclo de vida: :doc:
3-risk-and-order-lifecycleInstantánea/Control de acceso/Rechazo de pedido: :doc:
6-trader-snapshot-gateHumo manual: :doc:
7-manual-smoke-live-grid-roadmapReferencia CLI: :doc:
8-cli-trader-capability-matrixBroker: :doc:
4-broker-adapter-and-integrationTutorial práctico: tutorials/8-live-trade-risk-and-broker-walkthrough.md