【CJ continuación avanzada 14/30 · artículo n.º 42】
El error más fácil de cometer en un programa es forzar un estado sin respuesta a la categoría de «fallo» o «éxito».
Que una solicitud agote el tiempo de espera no significa que la orden no se haya ejecutado; que una interfaz devuelva un error tampoco significa que la posición ya se haya cerrado. Si en ese momento el sistema reintenta como si hubiera fallado, podría duplicar la orden; si continúa como si hubiera tenido éxito, podría pasar por alto una exposición que requiere atención. El estado desconocido es peligroso porque induce al programa a fingir que conoce los hechos.
Lo más prudente es tratar lo desconocido como un estado de primera clase: pausar las acciones relacionadas, conservar la identidad y la hora de la solicitud, confirmar el resultado real mediante una consulta independiente y, después, decidir si se reanuda, se cancela o se requiere intervención manual. También debe supervisarse el tiempo de espera de la confirmación, en lugar de dejarlo pendiente indefinidamente.
Incluso después de obtener un resultado, no se puede pasar por alto la identidad de la solicitud original. Primero hay que confirmar a qué orden corresponde el resultado de la consulta y luego gestionar lo que quede pendiente; así se evita confundir otra orden similar con la respuesta. La reanudación debe basarse en hechos confirmados, no en conjeturas hechas tras una espera demasiado larga.
Un sistema de trading no puede eliminar todos los estados desconocidos, pero sí puede evitar que los riesgos sigan aumentando mientras persisten. Admitir «no lo sé» es, a veces, la acción de automatización más profesional.
Próximo artículo: las ejecuciones parciales son la forma más fácil de convertir una cobertura en dos tipos de riesgo.
#状态机 #FiabilidadDelSistema
El error más fácil de cometer en un programa es forzar un estado sin respuesta a la categoría de «fallo» o «éxito».
Que una solicitud agote el tiempo de espera no significa que la orden no se haya ejecutado; que una interfaz devuelva un error tampoco significa que la posición ya se haya cerrado. Si en ese momento el sistema reintenta como si hubiera fallado, podría duplicar la orden; si continúa como si hubiera tenido éxito, podría pasar por alto una exposición que requiere atención. El estado desconocido es peligroso porque induce al programa a fingir que conoce los hechos.
Lo más prudente es tratar lo desconocido como un estado de primera clase: pausar las acciones relacionadas, conservar la identidad y la hora de la solicitud, confirmar el resultado real mediante una consulta independiente y, después, decidir si se reanuda, se cancela o se requiere intervención manual. También debe supervisarse el tiempo de espera de la confirmación, en lugar de dejarlo pendiente indefinidamente.
Incluso después de obtener un resultado, no se puede pasar por alto la identidad de la solicitud original. Primero hay que confirmar a qué orden corresponde el resultado de la consulta y luego gestionar lo que quede pendiente; así se evita confundir otra orden similar con la respuesta. La reanudación debe basarse en hechos confirmados, no en conjeturas hechas tras una espera demasiado larga.
Un sistema de trading no puede eliminar todos los estados desconocidos, pero sí puede evitar que los riesgos sigan aumentando mientras persisten. Admitir «no lo sé» es, a veces, la acción de automatización más profesional.
Próximo artículo: las ejecuciones parciales son la forma más fácil de convertir una cobertura en dos tipos de riesgo.
#状态机 #FiabilidadDelSistema