13 votos

Qué métodos existen para la gestión de órdenes de trading automatizado?

Actualmente estoy desarrollando un comercial de trading automatizado programa en el que los usuarios pueden escribir su propio código y desarrollar estrategias, como en ninja trader MetaTrader etc. Ahora mismo estoy trabajando en el manejo del orden de una parte, que es realmente importante. No puedo averiguar cómo hacer referencia a los pedidos ingresados durante la ejecución de una estrategia.

Supongamos que en una estrategia, no es este trozo de código:

if(some_condition)
  EnterLong("IBM",100)

Mi problema es some_condition se puede establecer en true varias veces, lo que resulta en la generación de varias órdenes de compra. De alguna manera tengo que proporcionar a los usuarios la capacidad de modificar o cancelar algunas de estas órdenes.

NinjaTrader, por ejemplo, tiene una característica llamada EntriesPerDirection, lo que limita el número de entrada para una dirección (largo o corto). Así que usted puede tener un número determinado de objetos de pedido (o una matriz de órdenes) que son devueltos por orden de entrada de las funciones y di order1.Cancel(); sin Embargo, esto no tiene ningún sentido para un iceberging estrategia en la que miles de pedidos podría ser generada. Ambos programas permiten al usuario recorrer los pedidos que no hayan conducido a una transacción todavía. De nuevo, esto podría ser doloroso para iceberging fines. Yo creo que esos dos programas no son construidas específicamente para el manejo de grandes números de pedidos o para el desarrollo de algoritmos de ejecución (por ejemplo, VWAP, la Llegada de Precios, Ejecución Déficit) que son ampliamente utilizados entre las empresas de compra.

También NT y MT tienen eventos (OnOrderUpdate, OnExecution, OnTrade) que se desencadena cuando el estado de un pedido es cambiado. Esta es una buena idea, pero no estoy seguro de que es la mejor solución.

Hay enfoques o metodologías de abordar mi problema que son comúnmente utilizados por otro software de comercio automatizado?

11voto

Greg Hurlman Puntos 10944

Con respecto a su pedido cuestión de gestión de cada pedido debe tener un identificador único que el usuario puede hacer referencia; en REVISIÓN, esta es la ClOrdID. Los parámetros de cada fin de que el usuario solicita, deben ser almacenados en una tabla con llave por este identificador.

Si su objetivo es evitar la duplicación de pedidos de salir, considere la posibilidad de tener un volumen de comercio de límite por cada símbolo. De esa manera, la posterior orden de solicitud será rechazada por su orden de administrador, incluso si la condición ha pasado. El volumen del comercio límite también es deseable para evitar mover el mercado (especialmente cuando se combina con un límite de posición) y puede actuar como un mecanismo de seguridad si las cosas se salen de las manos (a esto le llamamos el preventor de reventones en mi firma actual).

... NT y MT tienen eventos (OnOrderUpdate, OnExecution, OnTrade) que se desencadena cuando el estado de un pedido es cambiado.

Programación orientada a eventos hace que la operación en tiempo real mucho más manejable. Este paradigma es conocido como "el procesamiento de eventos complejos" y es muy común en el comercio institucional.

Yo creo que esos dos programas no son spesifically construido para el manejo de gran número de pedidos ...

Eso es porque fueron diseñados para el día de los comerciantes que quieren pretender que están quants. Sin institucional comerciante nunca usaría los paquetes de software.

4voto

ICR Puntos 6960

Lo que he hecho en el pasado es crear un OnOrderSubmit evento/método que se activa cuando se coloca un pedido. El uso conjunto de un semáforo en que el método para que su tick/método analítico ignora el orden de colocación de instrucciones hasta que se produce la ejecución o un temporizador expira. Luego, gire el semáforo.

(Si usted está usando múltiples hilos que usted quiere asegurarse de serializar el acceso a cada hilo por el símbolo).

3voto

Bob Somers Puntos 4186

Usted necesita para realizar un seguimiento de su posición actual para cada una de las acciones en el software. Usted necesita un proceso para saber cuando una orden se ejecuta, y la actualización de su posición para el adecuado stock. Este proceso es independiente de envío de órdenes al mercado.

3voto

Kevin Puntos 6567

En lugar de enviar los pedidos cada vez que se cumple la condición, intenta establecer "quería que se sostiene en la lógica comercial hilo. El comercio de la ejecución, a continuación, asegúrese de que (número suficiente número de pedidos) para lograr el deseado de retención.... Por ejemplo, la primera vez que la señal pasa, que envió quería sostener a 100 acciones la próxima vez que esto suceda sólo confirmar que desea de 100 acciones - no enviar la orden!

Algunas de las otras clases/hilo está buscando después de la orden real de gestión de... No de comercio de la lógica

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X