Para comprender c贸mo funcionan los intercambios, debe lidiar con las solicitudes de intercambio y las reglas para que un agente las procese.
En el art铆culo analizaremos los tipos de 贸rdenes, las caracter铆sticas de su ejecuci贸n en el intercambio y las restricciones impuestas por el modelo de negociaci贸n. Si tiene curiosidad por saber qu茅 significan las siglas DAY, GTC, FOK, IOC, GTD, GAT, MOO, MOC, LOO, LOC, MIT, OCO, OSO, PEG, le pido un gato.
Acerca de las 贸rdenes
Es importante que todos los participantes del mercado lleguen a un acuerdo. Para comenzar a operar, debe crear una aplicaci贸n (pedido) para la venta o compra del instrumento financiero requerido. En consecuencia, el conjunto total de aplicaciones forma la oferta y la demanda actual.
Orden de cambio : instrucciones del cliente al corredor para la compra o venta de instrumentos financieros en el intercambio.
Un pedido t铆pico contiene la siguiente informaci贸n:
- Identificador del instrumento financiero (activo negociado)
- Tipo de aplicaci贸n
- La direcci贸n de la transacci贸n. Compra o venta
- Precio
- Cantidad
- Periodo de validez de la solicitud (opcional)
- Instrucciones adicionales (opcional)
Tipos de pedidos
Los pedidos b谩sicos se pueden dividir en tres grandes grupos.
- Mercado . Dicha aplicaci贸n debe ejecutarse inmediatamente al precio de mercado actual, o si el volumen necesario no est谩 disponible, lo antes posible.
- Diferido La aplicaci贸n le permite controlar el precio m谩ximo de transacci贸n para una compra y el precio m谩s bajo posible para una venta. Dichas 贸rdenes no pueden ejecutarse. Para 贸rdenes limitadas, el precio siempre se indica mejor.
- Con condiciones Cualquier aplicaci贸n que no sea el l铆mite, que para la ejecuci贸n requiere el cumplimiento de condiciones adicionales.
Fecha de caducidad
Seguramente ya has visto abreviaturas de la forma D脥A, GTC, FOK, COI, GTD, GAT. Todos ellos limitan la duraci贸n de la aplicaci贸n.
- DIA Los pedidos de este tipo caducan al final del d铆a de negociaci贸n.
- GTC (v谩lido hasta que se cancele). La aplicaci贸n es v谩lida hasta que se cancele claramente. Para que tales aplicaciones no permanezcan en el mercado indefinidamente, se les aplica una restricci贸n adicional, generalmente de 30 a 90 d铆as.
- FOK (Rellenar o matar). La aplicaci贸n debe ejecutarse en su totalidad o cancelarse de inmediato.
- COI (Inmediato o Cancelar). La aplicaci贸n se ejecuta inmediatamente o se cancela mediante el intercambio. A diferencia de FOK, permita el cierre parcial.
- GTD (buena hasta la fecha / hora). La aplicaci贸n es v谩lida hasta el tiempo especificado.
- GAT (Bueno despu茅s de la hora / Fecha). La aplicaci贸n es v谩lida desde el momento indicado.
Condiciones de ejecuci贸n de la orden
Al combinar instrucciones sobre precios, validez y restricciones adicionales, puede obtener varias condiciones para la ejecuci贸n de 贸rdenes.
Para comprender las relaciones, describiremos la estructura de los tipos de 贸rdenes; se presenta al comienzo del art铆culo.
Abrir y cerrar 贸rdenes de mercado
Al agregar un per铆odo de validez a la orden de mercado, obtenemos:
- MOO (Market-On-Open). Una orden de mercado de este tipo solo se puede ejecutar en el momento en que se abre el d铆a de negociaci贸n. La ejecuci贸n est谩 garantizada con liquidez.
- LOO (L铆mite al abrir). Al igual que MOO, LOO solo se puede ejecutar al comienzo del d铆a de negociaci贸n. A diferencia de MOO, las 贸rdenes limitadas de este tipo le permiten establecer instrucciones para el precio. La ejecuci贸n no est谩 garantizada.
- MOC (Market-On-Close). Similar a MOO, pero una orden de mercado solo puede cerrarse al cierre del d铆a de negociaci贸n. La ejecuci贸n est谩 garantizada con liquidez.
- LOC (l铆mite al cerrar). Similar a LOO, pero una orden de l铆mite solo puede cerrarse al cierre del d铆a de negociaci贸n. La ejecuci贸n no est谩 garantizada.
脫rdenes condicionales
Cuando deseamos configurar nuestras 贸rdenes para la ejecuci贸n de una estrategia comercial, las 贸rdenes condicionales vienen al rescate, 贸rdenes cuya activaci贸n se produce solo despu茅s de que se cumple la condici贸n. Por lo tanto, el objetivo principal de estas 贸rdenes es minimizar el riesgo de grandes p茅rdidas financieras.
Detener orden
Una orden de suspensi贸n es una solicitud para comprar o vender una cierta cantidad de un activo a un precio espec铆fico o peor. Tan pronto como el precio de un instrumento sea igual o superior al precio especificado para una orden de stop stop, se convierte autom谩ticamente en una orden de mercado (orden de mercado) y se ejecuta en t茅rminos generales. Del mismo modo, para una orden de venta de stop, tan pronto como el precio alcanza el nivel especificado en la orden y contin煤a cayendo, se convierte en uno de mercado. Por lo tanto, la ejecuci贸n de las 贸rdenes de detenci贸n activas est谩 garantizada.
Las 贸rdenes de detenci贸n minimizan las p茅rdidas potenciales, por lo tanto, la p茅rdida de paradas es un sin贸nimo de la orden de detenci贸n.
Orden de detenci贸n limitada (orden de detenci贸n-l铆mite)
A diferencia de las 贸rdenes de stop regulares, donde solo se indica el precio de stop, en el l铆mite tambi茅n debemos indicar el precio l铆mite.
Tan pronto como el precio de un activo sea igual o peor que el precio de parada, se crear谩 autom谩ticamente una orden l铆mite con el precio l铆mite especificado. La ejecuci贸n de tal orden no est谩 garantizada.
Orden de Trailing Stop
A diferencia de las 贸rdenes de detenci贸n regulares, donde el precio de detenci贸n se indica en unidades absolutas, las 贸rdenes m贸viles utilizan porcentajes. Despu茅s de activarse, se convierte en una orden de mercado regular. Por lo tanto, el precio de parada est谩 vinculado al precio en el mercado y aumenta con 茅l. Por ejemplo, realizamos un pedido a un precio de 10 rublos y el precio de parada indicaba el 10% del precio actual, es decir, el precio de parada absoluto ser谩 de 9 rublos. Luego, el activo creci贸 a 15 rublos y, al mismo tiempo, el precio de parada de nuestro pedido a 13,5 rublos.
Este tipo de orden se usa tanto para minimizar las p茅rdidas como para maximizar las ganancias.
脫rdenes finales de l铆mite de detenci贸n
A diferencia de las 贸rdenes de detenci贸n deslizante, despu茅s de activarse, la orden se convierte en un l铆mite en lugar de un mercado.
Orden de clavija
Es una especie de 贸rdenes limitadas. Un pedido cambia autom谩ticamente su precio despu茅s de un cambio en el precio de la oferta / demanda. Las instrucciones de precios indican la compensaci贸n del peor de los casos del mejor precio actual de oferta / demanda.
Pedido de OCO (uno cancela otro)
Este es un pedido de pareja. Generalmente consiste en una orden de detenci贸n y un l铆mite. Ambas 贸rdenes funcionan con un solo instrumento. Si se ejecuta uno de ellos, el segundo se cancela autom谩ticamente.
Un ejemplo simple: compramos un activo por 10 rublos, nuestro objetivo es obtener al menos 3 rublos de ganancias, y queremos limitar las p茅rdidas a un m谩ximo de 2 rublos. Entonces el precio de parada ser谩 de 8 rublos, y el precio l铆mite es de 13 rublos.
Orden OSO (uno env铆a otro)
Tal orden consiste en una orden principal y un grupo de 贸rdenes relacionadas. Los pedidos pueden funcionar con diferentes instrumentos. En el caso de la ejecuci贸n del pedido principal, todos los relacionados se crean autom谩ticamente en el mercado.
Examinamos la teor铆a de las 贸rdenes, ahora podemos comenzar a practicar.
Practica
Desde un punto de vista sist茅mico, es importante determinar con flexibilidad, pero con precisi贸n, la estructura b谩sica para todo tipo de 贸rdenes. En Erlang, esto se puede hacer usando entradas:
-record(exchange_order, { id :: binary(), orig_id :: binary(), ticker :: binary(), owner :: binary(), trader :: binary(), type :: non_neg_integer(), side :: non_neg_integer(), time_in_force :: non_neg_integer(), price :: binary(), trigger_price :: binary(), qty :: binary(), orig_qty :: binary(), created_ts :: non_neg_integer(), updated_ts :: non_neg_integer(), deals_history :: [#exchange_deal{}], linked_orders :: [#exchange_order{}], opts :: map() }).
Identificaci贸n del pedido
Una vez que la orden se env铆a al intercambio, se le asigna un identificador interno del sistema: el campo id. Para mejorar la experiencia del usuario al coordinar el intercambio con sistemas externos, es necesario habilitar el sistema externo al intercambio para asignar su identificaci贸n al pedido creado: el campo orig_id. Esto permitir谩 solicitar pedidos tanto por id como por orig_id y permitir谩 rechazar la asignaci贸n adicional de pedidos en el sistema externo.
Orden de afiliaci贸n
Ponemos en el sistema la posibilidad de crear intermediarios. Las solicitudes pueden enviarse directamente de los licitadores o de un intermediario que brinda servicios a clientes que no tienen acceso directo al intercambio.
En el caso de una aplicaci贸n directa, el propietario y el comerciante son iguales.
Codificaci贸n de instrucciones
Analizamos los campos restantes. Se utilizan dos campos para codificar las instrucciones de precio: precio - precio l铆mite para 贸rdenes limitadas y tirgger_price - precio de respuesta para tipos personalizados. Por ejemplo, para las 贸rdenes de detenci贸n, este campo codificar谩 un precio de detenci贸n.
Para codificar el volumen, use qty y qty_orig. Qty_orig establece el volumen inicial de la orden y qty: el volumen de la orden durante su ejecuci贸n.
Para tener informaci贸n precisa sobre ejecuciones parciales, necesita una serie de ofertas_historia. Con su ayuda, despu茅s de que la orden se complete por completo, por ejemplo, puede calcular el precio promedio de una orden ejecutada.
El campo Linked_orders se requiere para codificar informaci贸n sobre pedidos relacionados para OCO y OSO.
Para poder expandir el sistema sin cambiar el registro exchange_order, agregaremos el campo opts, un diccionario din谩mico.
Subtotal
Honestamente, pens茅 que la segunda parte del ciclo ser铆a compacta. Sin embargo, para una comprensi贸n hol铆stica, tuve que revelar el tema con m谩s detalle.
La parte te贸rica del pr贸ximo art铆culo resaltar谩 el tema del libro de pedidos y las reglas de procesamiento de pedidos. La parte t茅cnica revelar谩 el esquema para procesar datos de mercado y el almacenamiento de datos hist贸ricos.