Aprender a comerciar en el intercambio. Primera parte: configurar un entorno de prueba


En esta serie de artículos, crearemos un entorno para trabajar con un intercambio de prueba y mensajes con él, entenderemos los términos básicos de intercambio y consolidaremos el conocimiento en la práctica.


UPD : El objetivo principal de esta serie de artículos es considerar exhaustivamente la estructura del intercambio y los conceptos básicos (transacciones, futuros, etc.) como parte del trabajo con el protocolo FIX . No habrá ningún enlace a ningún intercambio en particular, utilizaremos un ejemplo de servidor listo (simulador de intercambio) y en el futuro implementaremos un cliente que puede modificarse para interactuar con un intercambio real que le interese.


Para configurar todo lo que necesita, solo necesitará conocimientos básicos de programación y la capacidad de usar Git.


Para probar los mensajes necesitamos:


  • Implementación del protocolo FIX: por ejemplo, QuickFix es una implementación de código abierto en C ++ (también hay QuickFix en Java (QuickFix / J), C # (QuickFix / N) y Go (QuickFix / Go));
  • , ( Open Source Java – QuikFIX/J);
  • ( , , MiniFIX).

FIX, . FIX 4.2.


FIX

FIX , . , . FIX 4.2. FIX- / , .


FIX-: ( tag=value) XML.


FIX- , , , ASCII- SOH (0x01). , , Market 10000 Microsoft ( SOH ):


8=FIX.4.2 9=103 35=D 34=3 49=BANZAI 52=20121105-23:24:42 56=EXEC 11=1352157882577 21=1 38=10000 40=1 54=1 55=MSFT 59=0 10=062.


FIX-: (Message Header), (Message Body) (Message Trailer).



– <8>BeginString, FIX- (8=FIX.4.2). <9> BodyLength <35> MsgType. , D (35=D), — V (35=V).


, :


  • <49> SenderCompID – (, );
  • <56> TargetCompID – ;
  • <56> SendingTime – UTC- ( YYYYMMDD-HH:MM:SS YYYYMMDD-HH:MM:SS.sss);
  • <34> MsgSeqNum – ( 1 ).

MsgSeqNum 1, .


, : , , .. , .


FIX-. , .

– (<10> CheckSum), . . , .



FIX initiator executor/acceptor . , QuikFIX/J quickfixj-examples: quickfix.examples.executor .


:



resources/quickfix/examples/executor/executor.cfg, :


[default]
ConnectionType=acceptor // ,    
SenderCompID=EXEC //  
TargetCompID=BANZAI //  

[session]
BeginString=FIX.4.2 //   - FIX4.2
SocketAcceptPort=9878 //   

MINIFIX_CLIENT ( ).


MiniFIX . Session :



ID – MINIFIX_CLIENTEXEC. (FIX 4.2) .


  • : , , ; , , ;
  • : Logon (MsgType = A) ; .

Connect . 4.2 9878, , localhost:9878:



, localhost IP- .

Logon- Logon-:



“ ”, , :


MiniFIX Transactions , ( , New):



( — , — ).


New Order Single (35=D).

, MiniFIX , , , New, Edit, Delete. , 38=1000 . 200:



Send, , :



  • SocketConnectPort;
  • – , SenderCompID TargetCompID ;
  • – ;
  • – ; Reset Sequence MiniFIX, ;
  • (, ); <3> Reject 58:


  • MiniFIX: ” – , “” ;
  • MiniFIX: Logon- – , , Logon.

Ahora puede probar el envío de varios tipos de mensajes utilizando MiniFIX. Por supuesto, para trabajar directamente con un intercambio real, es mejor escribir su propia implementación de cliente (por ejemplo, en Java o Go) o usar un terminal comercial. Pero para comprender la especificación de los mensajes y comprender cómo redactarlos correctamente, dicho entorno de trabajo es suficiente. En la siguiente parte, le diré qué instrumentos financieros se negocian en la bolsa de valores y cómo especificar correctamente los parámetros para estos instrumentos al realizar una orden de negociación. Para aquellos que estén interesados ​​en detalles técnicos y escribir su propio cliente, planeo escribir un artículo separado.


All Articles