Plataforma de negociación simulada: configuración y funcionamiento
Este capítulo lo guía desde las «estrategias de backtesting existentes» hasta «el primer inicio estable de una cuenta comercial real simulada»: qué elementos configurar, cómo confirmarlos y qué buscar después del inicio.
Estimado usuario, si ya tiene un Operator (contenedor comercial) que puede realizar pruebas retrospectivas, este capítulo es el camino más corto para realizar pruebas en vivo. Primero explicaremos las configuraciones necesarias y luego analizaremos las funciones avanzadas opcionales, como «instantáneas de estrategia» y «control de acceso de inicio».
0. 适用场景
Tiene un Operator en funcionamiento y está listo para pasar del backtesting a la simulación en vivo.
Primero desea probar el camino más corto antes de agregar gradualmente control de riesgos, control de acceso y detalles operativos.
1. 核心概念(本章术语)
Antes de iniciar Live, confirme la relación entre los tres componentes. En Qteasy, Operator es responsable de «calcular señales», la cuenta real es responsable de «mantener cuentas y posiciones» y la fuente de datos local es responsable de «proporcionar precios y datos históricos»; sin ninguno de estos, el Trader no puede funcionar de manera estable. La siguiente tabla ilustra la posición de cada componente en el subsistema Live y lo que necesita preparar.
El significado de cada columna: Rol es el nombre del componente; Función es la responsabilidad en el proceso en vivo; Lo que necesitas preparar son las comprobaciones previas al lanzamiento.
Cómo utilizar: Marque las casillas una por una; Si una columna es insuficiente, agregue primero los datos o la información de la cuenta y luego ejecute qt.run(op).
Role |
efecto |
¿Qué necesitas preparar? |
|---|---|---|
Operator |
Estrategia de retención y lógica de señales. |
Mismo objeto |
cuenta real |
Registre efectivo, tenencias y pedidos. |
⟦CÓDIGO0⟧ o ⟦CÓDIGO1⟧ |
Fuente de datos local |
Proporciona cotizaciones históricas y en tiempo real. |
Frecuencia de la estrategia de cobertura de datos de tablas (por ejemplo, la estrategia basada en minutos requiere tablas basadas en minutos) |
LiveTradeConfig (instantánea de configuración en vivo): Antes de iniciar Trader, qteasy verifica y congela los elementos relacionados en vivo dispersos en qt.configure(...) en una instantánea inmutable, como una lista de verificación firmada antes del despegue, para evitar cambios accidentales de configuración durante el tiempo de ejecución. Puede ver un resumen usando liveconfig en el shell.
2. 最小配置集
Los siguientes son elementos de configuración esenciales comunes (si no se configuran o se configuran incorrectamente, a menudo se producirán errores durante el inicio). Estas claves se escriben en la configuración global a través de qt.configure(...) y se incorporan a la instantánea LiveTradeConfig al inicio; determinan «si está activo, qué activos se negocian, qué cuenta se utiliza, de dónde proviene el precio y quién iguala las órdenes».
Significado de cada columna: La clave de configuración es el nombre en QT_CONFIG; significado es el comportamiento controlado por esta clave; qué sucede si no está configurado son consecuencias comunes (para ayudar a determinar si el error actual está relacionado con esta clave).
Cómo utilizar: Para su primera sesión en vivo, establezca explícitamente todas las configuraciones; Si el inicio falla, consulte la columna «¿Qué sucede si no configuro nada?» para solucionar el problema. Consulte §5 Plantilla A/B para ver ejemplos.
Clave de configuración |
Significado |
¿Qué pasaría si no estableciésemos uno? |
|---|---|---|
|
Ingrese al comercio en vivo/demo |
Todavía usando backtesting u otros modos |
The set of names of the historical data to be fetched, if htypes is empty, the system will try to create all possible htypes by basing on the name of the historical data and the freq/asset_type parameter. the input can be str or list: - str: “open, high, low, close” - list: [“open”, “high”, “low”, “close”] - list: [“open”, “high”, “low”, “close”] - list: [“open”, “high”, “low”, “close”] “high”, “low”, “close”] |
Tipos de activos, como acciones E y acciones F (ETF). |
Es posible que las reglas comerciales y las tablas de datos no coincidan. |
⟦CÓDIGO0⟧ o ⟦CÓDIGO1⟧ |
¿Qué cuenta demo usar? |
No se puede vincular el libro mayor |
|
Tipos de firmas de corretaje, uso para principiantes |
Sin canal de transacciones |
|
Canales de precios en tiempo real, como |
No se puede obtener el precio en vivo |
|
Frecuencia de aumento de precio, como |
Es posible que falten datos cuando el ritmo de la estrategia no está coordinado. |
Las siguientes claves no son requisitos estrictos para el inicio, pero se recomienda encarecidamente confirmarlas: afectan la unidad mínima de transacción, las escrituras de registros en el disco y el uso del disco. Pertenecen al alcance qt.configure junto con la tabla anterior y se pueden escribir en el mismo script.
Cómo utilizar: Si la cantidad de la transacción no está «en lotes completos» o no se puede encontrar el archivo de registro, regrese y verifique la fila correspondiente en esta tabla.
Clave de configuración |
Significado |
¿Qué pasaría si no estableciésemos uno? |
|---|---|---|
|
Unidad mínima de venta |
Usar valores predeterminados |
|
Efectivo/cantidad decimales |
Usar valores predeterminados |
|
Directorio de registro de transacciones/sistema |
Utilice la ruta predeterminada dentro del paquete. |
|
Días de retención de registros (incluidos registros de riesgos) |
Limpieza automática cada 3 días de forma predeterminada |
3. 查看配置快照
Python (autocomprobación en el script):
from qteasy.live_config import build_live_trade_config
import qteasy as qt
cfg = build_live_trade_config(qt.QT_CONFIG)
print(cfg.to_summary_dict())
CLI (Trader Shell): Comando liveconfig (alias live-config)
Valor predeterminado: subconjunto de campos estables
Agregar
--detail: incluye además claves para habilitar el control de acceso, instantáneas de políticas, etc.
Nota: El liveconfig en el Shell es un resumen basado en el Trader actual, no una referencia de memoria del objeto al inicio, pero es suficiente para que usted verifique «la configuración que está actualmente vigente».
4. 配置键分组(主要 live 键)
Hay muchas claves de configuración relacionadas con Live. Para facilitar la referencia, los hemos agrupado por función (no es una lista de API completa; los campos completos se basan en LiveTradeConfig). En qteasy, estas claves se validan y congelan antes del inicio; debe reiniciar el proceso en vivo después de modificar qt.configure para que los cambios surtan efecto.
Significados de las columnas: Agrupación representa el dominio de responsabilidad dentro del subsistema activo; Claves representativas enumera las claves modificadas con más frecuencia en este grupo (puede haber otras claves en el mismo grupo que no aparecen en la lista); Descripciones describen la función de este grupo durante la operación.
Cómo utilizar: Seleccione el grupo según su tarea actual; por ejemplo, para solucionar problemas de registro, mire la línea «Registro» y vaya a: :doc:5-artifacts-and-troubleshooting; Al abrir una estrategia minuto a minuto, primero verifique si los «Datos de Mercado y Recarga» coinciden con la frecuencia de la estrategia.
Ejemplo: Las estrategias de frecuencia subdiaria a menudo modifican live_price_acquire_freq en el grupo «Datos de mercado y recarga» y habilitan live_trade_split_strategy_prepare en el grupo «Instantáneas de estrategias (5-A)» según sea necesario.
Agrupamiento |
Clave representativa |
Nota |
|---|---|---|
Cuentas y UI |
|
Selección de cuenta y CLI/TUI |
Condiciones de mercado y recarga |
|
Actualizaciones de datos cronometradas y precios en tiempo real |
Reglas comerciales |
|
Alinearse con la semántica del backtesting |
Broker |
|
El valor predeterminado es |
Panorama de la estrategia (5-A) |
|
Los datos se obtienen previamente antes de que se ejecute la estrategia; consulte :doc: |
Activar control de acceso (5-B) |
|
Control de seguridad previo a la comercialización; CLI ⟦CÓDIGO0⟧ |
registro |
|
Incluye rotación |
Los campos completos se basan en LiveTradeConfig; Los valores válidos para cada clave se definen en la lógica de validación de configuración.
5. 推荐配置模板
Plantilla A: Acciones (corretaje simulado E+)
El siguiente código se ejecuta antes de qt.run(op), indicando a qteasy que utilice reglas de acciones, el precio de 15 minutos de Eastmoney y operaciones de contraataque simuladas.
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',
trade_log_keep_days=3,
)
Plantilla B: Fondos negociados en bolsa/ETF (FD + corretaje simulado)
Igual que la plantilla A, excepto que asset_type='FD' se aplica a rutas de ejemplo como ETF.
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',
trade_log_keep_days=3,
)
Plantilla C: Instantánea de política + Activar control de acceso (Smoke/Avanzado)
Consistente con :doc:7-manual-smoke-live-grid-roadmap; Se recomienda abrir esto después de familiarizarse con la plantilla A/B.
qt.configure(
live_trade_split_strategy_prepare=True,
live_trade_prepare_lead_seconds=60,
live_trade_strategy_snapshot_max_age_seconds=300.0,
live_trade_startup_gate_mode='warn', # 先 warn 观察,稳定后可试 block
)
6. 启动流程(分步说明)
Complete la configuración: Siga §2 para completar
qt.configure(...)y confirme el ID/nombre de la cuenta.(Opcional) Verificar instantánea: ejecute el fragmento de Python en §3 o ejecute
liveconfig --detailen el Shell después del inicio.Inicio:
qt.run(op); Los ejemplos comunes de línea de comandos usan--ui clipara ingresar al Trader Shell.Observación: Verifique si el estado, los pedidos y los registros están escritos como se esperaba (§7).
Imprima varios elementos de configuración clave rápidamente antes del inicio:
import qteasy as qt
for key in ('mode', 'asset_type', 'live_trade_broker_type',
'live_price_acquire_channel', 'live_trade_startup_gate_mode'):
print(key, qt.get_config(key)[key])
7. 启动后建议先看什么(CLI)
Una vez que ingrese al Shell Trader, los siguientes comandos lo ayudarán a confirmar si la configuración es efectiva, dónde se encuentran los registros, si la firma de corretaje puede procesar su solicitud y si el control de acceso es exitoso. Estos corresponden al subconjunto de operaciones en :doc:8-cli-trader-capability-matrix—no todos los comandos de Shell.
Significado de cada columna: Comando: El nombre ingresado en el mensaje (consulte el capítulo Matrix para conocer los alias); Usos típicos: Las preguntas que este comando resuelve con mayor frecuencia.
Cómo utilizar: Después de comenzar, escanee rápidamente la tabla de arriba a abajo; si un paso es anormal, redirija la salida del comando a :doc:5-artifacts-and-troubleshooting.
Ejemplo: No estoy seguro de la ruta del registro → Ingrese artifacts → Abra la ruta sys_log devuelta para ver el seguimiento de inicio.
el comando |
Casos de uso típicos |
|---|---|
|
Resumen de configuración en vivo actual |
|
Ruta del producto de cuatro enlaces (dónde se encuentran los registros) |
|
Ejecute manualmente el sistema de control de acceso una vez (para depurar). |
|
¿Está «conectada» la firma de corretaje simulada? |
|
Instantánea de conciliación JSON |
|
Diagnóstico en tránsito (requiere modo DEBUG) |
Para ver el conjunto completo de comandos, consulte :doc:8-cli-trader-capability-matrix.
7.1 Panel de control y modo interactivo
Trader Shell se inicia en modo de panel de forma predeterminada: un área de estado de una sola línea se desplaza para mostrar la cuenta regresiva para la siguiente tarea, precios en tiempo real en la lista de monitoreo y mensajes del sistema, lo que le permite observar el ritmo operativo sin ingresar comandos. Para realizar pedidos manualmente, verificar configuraciones o ejecutar comandos de mantenimiento, presione Ctrl+C para abrir el menú de modo o escriba dashboard en el modo interactivo (comando) para regresar al tablero.
Modo |
Comportamiento |
|---|---|
dashboard |
La fila de estado y el precio monitoreado se actualizan automáticamente; el bucle principal Trader continúa ejecutándose en segundo plano. |
interactivo (comando) |
El mensaje tradicional |
Menú de selección de modo Ctrl+C (disponible tanto en el modo panel como en el modo comando)
Dentro de 5 segundos, presione 1 → para ingresar al modo de comando; 2 → para regresar al tablero; 3 → para salir y detener Trader.
No es necesario presionar Enter, las teclas numéricas surten efecto inmediatamente.
Sin entrada en 5 segundos → Reanuda automáticamente el modo antes de la interrupción.
Presione Ctrl+C nuevamente durante el tiempo de espera del menú → Salir inmediatamente (equivalente a seleccionar 3)
Si ocurre una excepción inesperada en el bucle principal, Shell le pedirá que presione 1 para regresar al panel o 3 para salir; Si no se realiza ninguna entrada durante 5 segundos, volverá al panel de control de forma predeterminada y Trader continuará ejecutándose.
8. 运行前检查清单
El ID/nombre de la cuenta está disponible y coincide con el grupo de activos de la estrategia.
asset_typedebe ser coherente conasset_pool(no mezcle reglas para acciones y fondos).live_trade_broker_typedebe sersimulator(o un tipo que ya haya implementado).Frecuencia de precios en vivo no menos que la frecuencia de ejecución de la estrategia (las estrategias basadas en minutos requieren precios en vivo suficientemente frecuentes).
La ruta del registro es válida y se puede escribir en el disco.
trade_log_keep_dayscumple con sus expectativas de retención (incluidos los registros de riesgo).
9. 常见启动失败与处理
Cuando se producen errores durante el inicio, los síntomas suelen clasificarse en algunas categorías: configuración, cuenta, datos, ruta, frecuencia o control de acceso al inicio. La siguiente tabla está indexada por los síntomas que observa para evitar buscar ciegamente en los registros.
Explicación de cada columna: Fenómeno: El comportamiento durante el inicio o en la primera pantalla; Posibles causas: Causas fundamentales comunes (no exhaustivas); Sugerencias: Los próximos pasos.
Cómo utilizar: Primero, haga coincidir la columna «fenómeno»; si el problema persiste, utilice el comando §7 para exportar las rutas a liveconfig y artifacts, y consulte el árbol de decisión en :doc:5-artifacts-and-troubleshooting.
Fenómeno |
Posibles razones |
Sugerencia |
|---|---|---|
La verificación de la configuración falló. |
Una determinada clave activa no es válida o es mutuamente excluyente. |
Después de corregir los mensajes de error, reinicie. |
Cuenta no disponible |
ID/nombre incorrecto o no inicializado |
Verificar parámetros de creación de cuenta |
Datos no disponibles |
Falta la tabla de canal/frecuencia/local |
Consulta las tablas de recarga y |
Error de ruta |
El directorio de registro no se puede escribir |
Marque |
Incoordinación de frecuencia |
La estrategia de rentabilidad en vivo con mayor frecuencia de pasos es más rara |
Aumente |
gate block |
El control de acceso |
Vea la salida |
10. 相关跳转
Control de riesgos y órdenes: ciclo de vida de 3 riesgos y órdenes
Productos y solución de problemas: :doc:
5-artifacts-and-troubleshootingAdaptación del corredor: :doc:
4-broker-adapter-and-integrationInstantánea/Control de acceso: :doc:
6-trader-snapshot-gateLista de humo: :doc:
7-manual-smoke-live-grid-roadmapReferencia CLI: :doc:
8-cli-trader-capability-matrixTutorial completo: tutorials/8-live-trade-risk-and-broker-walkthrough.md
11. 最小验收标准
El inicio estable es posible bajo la ruta E o FD
La salida de
liveconfig/artifactses la esperada.Se puede observar al menos uno de los siguientes: envío de órdenes, rechazo de control de riesgos o contraprocesamiento.
Si control de riesgos rechaza el pedido: se puede encontrar un registro en el
risk_log; si el corredor rechaza la orden: la orden se marca comorejectedy el número del corredor está vacío.Los artefactos de tiempo de ejecución correspondientes se pueden encontrar en el directorio de registro.