C ++ In Trading Systems
BarsMonster: Pude ver aunque para las cosas como las pilas de redes, que son completamente dependientes de la plataforma, requeriría un poco de conocimiento antes de poder cambiar de plataformas. Más cosas como fork que son comunes en POSIX mundo pero no son posibles en un entorno de Windows. Creo que es una respuesta razonable. Linux / UNIX son mucho más utilizables para usuarios remotos concurrentes, lo que facilita el script alrededor de los sistemas, utiliza herramientas estándar como grep / sed / awk / perl / ruby / less en los registros. Ssh / scp. Todo eso se acaba ahí. También hay problemas técnicos, por ejemplo: para medir el tiempo transcurrido en Windows, puede elegir entre un conjunto de funciones basado en la marca del reloj de Windows y el QueryPerformanceCounter () basado en hardware. El primero se incrementa cada 10 a 16 milisegundos (nota: algunos documentos implican mayor precisión - por ejemplo, los valores de GetSystemTimeAsFileTime () miden a 100ns, pero informan el mismo borde de 100ns de la marca de reloj hasta que vuelva a marcar). Este último - QueryPerformanceCounter () - tiene problemas de show-stopping donde diferentes núcleos / cpus pueden reportar relojes-desde-startup que difieren por varios segundos debido a ser calentados en diferentes momentos durante el arranque del sistema. MSDN documenta esto como un posible error de BIOS, pero es común. Por lo tanto, ¿quién quiere desarrollar sistemas de negociación de baja latencia en una plataforma que no se puede instrumentar correctamente (hay soluciones, pero no encontrará ningún software que se sientan convenientemente en impulso o ACE). Muchas variantes de Linux / UNIX tienen muchos parámetros fáciles de ajustar para compensar la latencia de un solo evento contra la latencia promedio bajo carga, los tamaños de segmento de tiempo, las políticas de programación, etc. En los sistemas operativos de código abierto, también hay la garantía de poder referir Al código cuando crees que algo debe ser más rápido de lo que es, y el conocimiento de que una comunidad (potencialmente enorme) de personas han estado y están haciendo tan críticamente - con Windows obviamente, principalmente, va a ser la gente puta asignada a mirarlo . En el lado de FUD / reputación - algo intangible pero una parte importante de las razones para la selección del OS - pienso que la mayoría de los programadores en la industria confiarían más en Linux / UNIX más para proporcionar programación y comportamiento confiables. Además, Linux / UNIX tiene una reputación de fallar menos, aunque Windows es bastante confiable en estos días, y Linux tiene una base de código mucho más volátil que Solaris o FreeBSD. Los sistemas operativos cliente de Windows sólo permiten a una persona utilizar RDP a la vez. Sin embargo Windows Terminal Server ha estado alrededor para siempre (era, de hecho, el uso original de RDP) y permite tantas conexiones como usted tiene licencias del acceso del cliente. Los sistemas operativos Windows Server vienen con la capacidad de tener más de un usuario remoto de forma predeterminada. Si pudieras encontrar el comentario sobre la programación entonces yo aquí - esa parte de la respuesta parece ser FUD en este momento para mí (el resto de la respuesta es buena). YMMV. Ndash Billy ONeal ago 29 10 at 0:50 No hay programación de UNIX / Linux. Es una de las áreas en las que las implementaciones difieren. Y Linux, de hecho, ha tenido más de una opción de planificador (google Completely Fair Scheduler Linux para el fondo), por lo que puede incluso decir que la programación quotLinux es confiable. Ndash MSalters Aug 30 10 at 11:37 En segundo lugar las opiniones de histórico y el acceso a la manipulación del kernel. Aparte de esas razones también creo que al igual que la forma en que desactivar la recolección de basura y el mecanismo similar en Java cuando se utiliza estas tecnologías en algunos de baja latencia. Podrían evitar Windows debido a las API de alto nivel que interactúan con os de bajo nivel y, a continuación, el kernel. Así que el núcleo es, por supuesto, el núcleo que se puede interactuar con el uso de bajo nivel de os. Las API de alto nivel se proporcionan sólo para facilitar la vida de los usuarios comunes. Pero en caso de baja latencia esto resulta ser una capa grasa y una fracción de segundos de pérdida alrededor de cada operación. Así que una opción lucrativa para ganar pocos segundos de fracción por llamada. Aparte de esto, otra cosa a considerar es la integración. La mayoría de los servidores, centros de datos, intercambios utilizan ventanas UNIX no así que usar los clientes de la misma familia facilita la integración y la comunicación. Entonces usted tiene problemas de seguridad (muchas personas por ahí no pueden estar de acuerdo con este punto sin embargo) hacking UNIX no es fácil en comparación con la piratería de WINDOWS. No estoy de acuerdo con la concesión de licencias debe ser el problema para los bancos, ya que el dinero de la ducha en cada pieza de hardware y software y las personas que los personalizan, por lo que la compra de licencias no será más grande el tema cuando se considera lo que ganan por la compra. Respondió 21 de diciembre a las 20:05 Su respuesta 2016 Stack Exchange, Inc He encontrado un par de cosas que podrían ayudarle a mejorar su código. No abusar usando std de espacio de nombres Poner usando std de espacio de nombres en la parte superior de cada programa es un mal hábito que youd hacer bien para evitar. En particular, nunca debe utilizarlo en un archivo de encabezado. Utilice los encabezados adecuados En lugar de usar stdint. h debería utilizar: Esto pone las cosas de ese encabezado en el std. Namespace en lugar de sólo en el espacio de nombres global y se ahorrará dolores de cabeza más tarde. (Tenga en cuenta que, además, puede poner elementos en el espacio de nombres global, pero como programador debe evitar confiar en ese comportamiento definido por la implementación.) Eliminar variables no utilizadas Este código declara un número de variables (term. con ellos. Su compilador es lo suficientemente inteligente como para ayudarle a encontrar este tipo de problema si sabe cómo pedirle que lo haga. Evite los números mágicos Las líneas que incluyen números sin explicación son un problema de mantenimiento que espera que suceda. Por ejemplo, el código incluye esta línea sin comentarios: Es probable que los que no son realmente aleatorios, pero no hay indicio de la importancia de esos números. No use while (fin. eof ()) Es casi siempre un error escribir un código que usa while (fin. eof ()) o el equivalente, porque lo que estás interesado en determinar es si queda algún dato y no si ocurre Para ser el final de la corriente. Vea esta pregunta para más detalles sobre eso. No proliferar variables inútiles El código actualmente incluye este par de líneas: La cadena del instrumento nunca se utiliza de nuevo. ¿Por qué no sólo escribir esto en su lugar Utilice estructuras de flujo de control adecuado Dentro de principal. El código decide cómo manejar los datos basados en el campo msgtype. Tiene una cascada si. Else con una cláusula final else. Sin embargo, esto sería mucho más claro escrito como una declaración de conmutación con cada caso que representa un tipo de mensaje diferente. Utilizar algoritmos estándar El código actual incluye esta secuencia: El propósito parece ser identificar la cantidad comercial más grande y el comerciante asociado. Sin embargo, ya hay un algoritmo para esto que es std :: maxelement Omitir return 0 Cuando un programa C llega al final de main el compilador generará automáticamente código para devolver 0, por lo que no hay razón para poner retorno 0 explícitamente al final de principal . Utilizar objetos de forma más completa Su código tiene clases pero parece que se utilizan casi exclusivamente contenedores sencillos, como OrderEntry y OrderAck. Sería hacer su código más simple y más fácil de entender y mantener si también agregó funciones miembro a ellos para hacer las cosas que se están haciendo actualmente a estas estructuras desde dentro principal. Respondió Apr 30 15 at 18: 59JOB DESCRIPCIÓN ¿Quieres trabajar en el diseño y desarrollo de estrategias y sistemas de negociación de alta frecuencia y baja latencia en C SIG es un líder de mercado y entiende la importancia de la tecnología para su negocio. El comercio es una carrera, y el sistema más rápido y más inteligente gana. Construir estos sistemas implica algunos de los desafíos de rendimiento más exigentes en cualquier industria y wersquore dispuestos a utilizar cualquier tecnología que nos dará una ventaja. En este papel usted tendrá la oportunidad de trabajar estrechamente con los comerciantes y los mejores tecnólogos firmes. Idealmente, usted tendrá un fondo en los sistemas de comercio y / o ajuste de rendimiento y quiere la oportunidad de competir contra los mejores sistemas en el mundo. Desarrollar y mejorar las aplicaciones comerciales mediante el diseño, implementación y entrega de sistemas de software complejos que satisfagan las necesidades del negocio. Resolver problemas complejos proporcionando soluciones innovadoras y escalables con un enfoque en la automatización automatizada de alta frecuencia y baja latencia. Obtenga una comprensión profunda del dominio del negocio (comercio, estrategias, elaboración del mercado, datos de mercado y baja latencia). Éste es un papel práctico en el que usted prosperará en los desafíos de la tecnología. Usted verá sus ideas y trabajo duro utilizado por los comerciantes experimentados a través de una amplia gama de instrumentos y mercados. Un mínimo de cinco (5) años de experiencia en el diseño y desarrollo de aplicaciones utilizando la programación orientada a objetos en un entorno técnico heterogéneo utilizando C on Linux. Un desarrollador experto en C / Linux con conocimientos de - diseño, perfilado, ajuste de rendimiento, OO, programación genérica, STL, boost, sockets, multi-threading y IPC Excelente atención al detalle, precisión y una comprensión completa del desarrollo del ciclo de vida completo y optimización del rendimiento / Un historial demostrado de la entrega exitosa de aplicaciones complejas que cumplen con los objetivos de rendimiento y escalabilidad exigentes. Una trayectoria demostrada en el desarrollo automatizado del sistema de negociación, como la fabricación de mercado, u otras estrategias de algoritmo que gestionan pedidos en el mercado. El conocimiento del precio de la opción y de los griegos de la opción sería considerado altamente. Idealmente, usted tendría experiencia previa escribiendo la lógica de los sistemas comerciales que gestiona órdenes / cotizaciones en el mercado. Por qué quiere trabajar para nosotros: Nos enorgullecemos de nuestro compromiso con nuestra gente, y estamos trabajando constantemente para hacer de SIG un lugar donde todos se despierten emocionados de contribuir al negocio. Constantemente desafiamos el statu quo, para asegurar que ofrecemos un ambiente donde usted puede prosperar. Nuestros valores fundamentales son la innovación, la colaboración, el aprendizaje, la responsabilidad y la integridad. Innovación: Porque siempre queremos que desafíes el status quo, y traigas ideas innovadoras, nuevas y emocionantes a la mesa. Colaboración: Porque queremos que ames lo que haces, y amas con quien trabajas. Así que salir y colaborar con sus colegas Trabajamos con personas inteligentes - asociarse con ellos y llevar sus ideas a la vida Aprendizaje: Siempre estamos buscando construir y compartir nuevas habilidades, conocimientos y capacidades, y queremos que usted también Queremos Que ser el mejor en lo que haces, y nunca dejar de aprender. Rendición de cuentas: Usted es el que lleva sus ideas a la vida, ya sea una nueva estrategia comercial, tecnología de vanguardia o una nueva forma de hacer las cosas aquí. Estas son sus ideas, y usted es responsable de la entrega. Usted entrega, y celebramos su éxito. Integridad: Todo el mundo, la vida cotidiana y respira un conjunto de principios basados en la ética y la corrección moral. Por lo tanto, si usted piensa que nuestros valores se alinean con los suyos, entonces estaban seguros de que encajan perfectamente en SIG SIG no está aceptando currículos no solicitados de las empresas de búsqueda. Todos los currículos presentados por las empresas de búsqueda a cualquier empleado de SIG vía correo electrónico, Internet o directamente sin un acuerdo de búsqueda escrito válido serán considerados propiedad exclusiva de SIG, y no se pagará ninguna cuota en caso de que el candidato sea contratado por SIG.
Comments
Post a Comment