Qué Hace Falta para Conectar una Plataforma con Otra Cosa
Petición-respuesta y flujo responden a preguntas distintas, y ambos fallan de formas que parecen un mercado tranquilo. Límites de frecuencia, la expiración ambigua y por qué una dirección no es credencial.
Dos formas de interfaz, usadas para cosas distintas
La interfaz de programación de un bróker suele venir en dos formas. Una responde a una pregunta cada vez que se le hace y no dice nada entremedias: sale una petición, vuelve una respuesta, y hasta la petición siguiente no se sabe nada más. La otra mantiene una conexión abierta y envía actualizaciones a medida que ocurren, de modo que la información llega sin haber sido pedida.
Los brókeres ofrecen habitualmente ambas, y no son alternativas en el sentido que sugiere una lista de opciones. Responden a preguntas distintas. Todo lo que necesita una respuesta definida sobre una cosa concreta en un momento concreto —el estado de esta orden, qué contiene ahora mismo la cuenta— es una pregunta, y las preguntas pertenecen a la primera forma. Todo lo que necesita enterarse a medida que las cosas cambian pertenece a la segunda.
El sondeo tiene un suelo por debajo del cual no baja
Pedir un precio una y otra vez en lugar de suscribirse a él da una imagen que nunca es más fresca que el intervalo entre peticiones. Reducir el intervalo a la mitad reduce el desfase a la mitad y duplica el número de peticiones, y hay un punto a partir del cual el bróker no acepta ese número. Existe por tanto un suelo bajo lo actual que puede ser una imagen obtenida así, y dónde está ese suelo lo decide otra persona.
Importa más de lo que parece, porque el desfase viaja. Cualquier decisión, cualquier visualización, cualquier comparación hecha a partir de un valor sondeado hereda la edad de ese valor sin llevar una etiqueta que lo diga. Un sistema que sondea y luego actúa está actuando sobre un número cuya edad normalmente no ha anotado en ninguna parte.
Un límite suele ser varios límites
Un límite de frecuencia es un tope al número de peticiones que una cuenta puede enviar dentro de un periodo, y rara vez es un solo número. Los distintos puntos de acceso se cuentan por separado, y la asignación para leer precios no suele ser la asignación para enviar órdenes. Un sistema dimensionado según el límite generoso puede ser rechazado por el estricto, y lo será en el momento menos conveniente, porque el tráfico de órdenes tiende a concentrarse justo cuando lo hace el de precios.
Qué límites se aplican y cómo se cuentan lo documenta el bróker; no se descubre experimentando. Encontrar la pared caminando contra ella es gastar rechazos para averiguar dónde está, en una cuenta real y en el momento en que toque caminar.
La forma cara de gestionar un rechazo
Reintentar de inmediato empeora un límite de frecuencia, porque los reintentos también se cuentan, y un sistema que responde a estar frenado intentándolo con más fuerza se frena todavía más. Retroceder en lugar de empujar es todo el comportamiento correcto aquí, y resulta poco intuitivo precisamente porque la mayoría de los demás fallos premia la insistencia.
El problema más serio es que un rechazo no siempre se distingue de otros fallos. Una petición que expiró del lado del cliente puede haber sido recibida y ejecutada igualmente, y tratar la ausencia de respuesta como ausencia de orden es la manera de que un sistema envíe la misma orden dos veces. Todo lo que opera a través de una interfaz tiene que establecer qué pasó en realidad, releyendo la cuenta, antes de volver a actuar. Esa es una operación distinta de reintentar, y es la que tiene que ir primero.
Un flujo que está abierto y callado
La transmisión continua elimina el suelo del sondeo y trae a cambio su propio trabajo. Las conexiones se caen y hay que restablecerlas. Las actualizaciones perdidas durante la caída hay que recuperarlas de algún sitio, lo que normalmente significa pedir el estado actual a la interfaz del otro tipo en vez de suponer que el hueco no contenía nada.
El fallo difícil no es ninguno de esos. Es una conexión que sigue abierta y ha dejado de entregar, y que se parece exactamente a un mercado tranquilo, porque un mercado tranquilo tampoco entrega nada. Examinar el contenido de lo que llegó no los separa, ya que en ambos casos no llegó nada. Lo que los separa es el tiempo: la edad del último mensaje y no lo que llevaba dentro. Un programa que consume un flujo necesita algo que envejezca por su cuenta y lo diga, o leerá una conexión muerta como condiciones tranquilas durante todo el tiempo que dure la condición.
Una alerta enviada a una dirección es de un solo sentido
Una alerta a una dirección web es la plataforma enviando un mensaje a una dirección que el lector facilita cuando se cumple una condición definida en un gráfico, en lugar de mostrarla en pantalla o además de mostrarla. Es el puente habitual entre el análisis en un sitio y la acción en otro, y el atractivo es evidente: una condición expresada en un gráfico pasa a ser entrada de otro programa.
Lo que conviene entender es que es enviar y olvidar. El emisor se entera en general de si el mensaje fue aceptado y de absolutamente nada sobre qué se hizo con él. Las entregas pueden llegar tarde, desordenadas o más de una vez. Un mensaje que falla puede reintentarse o no, y esa política es del emisor y no del lector. Nada de esto convierte el mecanismo en malo. Lo convierte en un mecanismo cuyas garantías son más débiles de lo que parecen, y dar por buenas las fuertes es la forma de dejar instalado un fallo silencioso desde el principio.
La dirección no es una credencial
Quien recibe no tiene manera de saber quién le envió una petición a menos que la petición lo demuestre. La dirección es por tanto lo único que hay entre la alerta y cualquier otra persona que llegue a conocerla, y las direcciones se filtran por las vías más corrientes: pegadas en una consulta al servicio de atención, copiadas en un documento compartido, dejadas a la vista en una captura de pantalla.
Así que un receptor que actúa sobre lo que llega carga con dos obligaciones, y ambas se derivan de todo lo anterior. Tiene que autenticar el mensaje en vez de fiarse del hecho de que haya llegado, y tiene que tolerar ver el mismo mensaje dos veces sin hacer la cosa dos veces. Ninguna de las dos es un trabajo interesante, ambas son fáciles de aplazar mientras el montaje todavía se está probando, y juntas son la diferencia entre un puente y un agujero.
Capital en riesgo. Operar con forex y CFDs conlleva un alto nivel de riesgo y puede no ser adecuado para todos los inversores — la mayoría de las cuentas minoristas de CFD pierden dinero. Nunca operes con dinero que no puedas permitirte perder. Leer la advertencia de riesgo completa