Apprendre à échanger sur l'échange. Première partie: configurer un environnement de test


Dans cette série d'articles, nous allons créer un environnement pour travailler avec un échange de test et lui envoyer des messages, nous comprendrons les termes de base de l'échange et consoliderons les connaissances dans la pratique.


UPD : L'objectif principal de cette série d'articles est de considérer de manière globale la structure de l'échange et les concepts de base (transactions, futures, etc.) dans le cadre du protocole FIX . Il n'y aura aucune liaison à aucun échange spécifique, nous utiliserons un exemple de serveur prêt à l'emploi (simulateur d'échange) et à l'avenir, nous mettrons en œuvre un client qui peut être modifié pour interagir avec un véritable échange qui vous intéresse.


Pour configurer tout ce dont vous avez besoin, vous n'aurez besoin que de connaissances de base en programmation et de la capacité d'utiliser Git.


Pour tester les messages dont nous avons besoin:


  • FIX protocole mise en Ĺ“uvre : par exemple, QuickFix est une implĂ©mentation open en C ++ (il y a aussi QuickFix en Java (QuickFix / J), C # (QuickFix / N) et 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_CLIENT – EXEC. (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.

Vous pouvez maintenant tester l'envoi de différents types de messages à l'aide de MiniFIX. Bien sûr, pour travailler directement avec un échange réel, il est préférable d'écrire votre propre implémentation client (par exemple, en Java ou Go) ou d'utiliser un terminal de trading. Mais pour comprendre la spécification des messages et comprendre comment les composer correctement, un tel environnement de travail est tout à fait suffisant. Dans la partie suivante, je vous dirai quels instruments financiers sont négociés en bourse et comment spécifier correctement les paramètres de ces instruments lors de la passation d'un ordre de négociation. Pour ceux qui sont intéressés par les détails techniques et l'écriture de leur propre client, je prévois d'écrire un article séparé.


All Articles