12. Simule los controles de riesgo y la adaptación del corredor en el comercio real (doble ruta)

Este tutorial lo guía a través de dos rutas completas para verificar los comportamientos clave de S1.3 en un entorno comercial simulado en vivo:

  • Ruta A: ⟦CÓDIGO0⟧

  • Ruta B: ⟦CÓDIGO0⟧

El objetivo es “recorrer + observar + verificar”, no sólo mirar conceptos.

12.1. 0. 教程目标

  • Haga que ambas rutas (E y FD) funcionen de un extremo a otro

  • Activar manualmente el rechazo de un pedido e identificar la causa

  • Observe el comportamiento visible del estado de llenado parcial al pasar de partial-filled a filled

12.2. 1. 前置准备

  • Un Operator ya ejecutable

  • Los datos locales pueden soportar la frecuencia del tiempo de ejecución.

  • Los parámetros de la cuenta real han sido configurados

Se recomienda preparar primero una configuración de reglas que pueda «activar de manera estable rechazos de pedidos» (por ejemplo, un límite de cantidad menor por pedido) para facilitar la reproducción del experimento.

12.3. 2. 路径 A:E + simulator

Paso 1: configurar la configuración

import qteasy as qt

qt.configure(
    mode=0,
    asset_type='E',
    live_trade_broker_type='simulator',
    live_price_acquire_channel='eastmoney',
    live_price_acquire_freq='15MIN',
)

Paso 2: empieza a correr

qt.run(op)

Paso 3: envíe un pedido de prueba y observe los comentarios

  • Compruebe si aparece el mensaje «envío exitoso»

  • Esté atento a si aparece un mensaje de rechazo de orden de control de riesgos (en inglés).

  • Registre un ID de pedido (para una comparación de registros posterior)

12.4. 3. 路径 B:FD + simulator

Paso 1: cambie la configuración del tipo de activo.

import qteasy as qt

qt.configure(
    mode=0,
    asset_type='FD',
    live_trade_broker_type='simulator',
    live_price_acquire_channel='eastmoney',
    live_price_acquire_freq='15MIN',
)

Paso 2: reinicie repetidamente y realice pedidos.

qt.run(op)

Paso 3: verificar la coherencia del comportamiento.

  • La ruta FD debería poder ingresar al flujo de ejecución en vivo.

  • La forma de observar el rechazo/envío/registros es la misma que en la ruta E.

  • El mismo tipo de orden debe tener una semántica de retroalimentación consistente en los dos caminos.

12.5. 4. 人工触发一次风控拒单

Establezca temporalmente reglas estrictas (por ejemplo, un límite de cantidad por pedido) y envíe un pedido que supere el límite. Deberías ver un mensaje en inglés similar a:

Order rejected by risk rule [MAX_ORDER_QTY]: order quantity exceeds limit

y el registro correspondiente se puede recuperar en risk_log.

Se recomienda verificar al menos dos veces:

  1. Un rechazo (confirme que el motivo del rechazo sea visible).

  2. Una versión (confirma que la estrategia puede continuar ejecutándose)

12.6. 5. 观察订单状态变化

Concéntrese en si ocurre lo siguiente:

  • submitted -> partial-filled -> filled

En un escenario de llenado parcial, el estado final debe ser consistente con el volumen llenado acumulado.

Si ve que partial-filled permanece sin cambios durante mucho tiempo, regrese a la página de solución de problemas y verifique los registros con el manual de estrategias de «malentendido de estado».

12.7. 6. 教程验收清单

  • La ruta E es ejecutable

  • La ruta FD es ejecutable

  • Puede desencadenar e identificar rechazos de órdenes de control de riesgos

  • Puede localizar el motivo del rechazo del pedido en los registros.

  • Puede observar y comprender los cambios de estado durante los llenados parciales.

  • Complete al menos una verificación completa de circuito cerrado de «rechazo de pedido -> ajuste de parámetros -> liberación»

12.8. 7. 下一步

  • Análisis profundo del mecanismo: live_trading/3-risk-and-order-lifecycle

  • Ampliar el corredor: live_trading/4-broker-adapter-and-integration

  • Manual de solución de problemas: live_trading/5-artifacts-and-troubleshooting

12.9. 8. 结果判定标准

Después de completar este tutorial, debería poder responder las siguientes preguntas de forma independiente:

  • ¿El control de riesgos rechazó el pedido actual o se presentó pero no se ejecutó?

  • ¿Por qué un pedido permanecería en partial-filled?

  • ¿Qué archivo de registro debería comprobar primero y qué campos debería mirar a continuación?

Si puede responder las tres preguntas anteriores de forma independiente, significa que ya tiene habilidades básicas para solucionar problemas en escenarios reales.