Lernen, an der Börse zu handeln. Teil eins: Einrichten einer Testumgebung


In dieser Artikelserie werden wir eine Umgebung fĂŒr die Arbeit mit einem Testaustausch und das Versenden von Nachrichten damit schaffen, die grundlegenden Austauschbedingungen verstehen und das Wissen in der Praxis festigen.


UPD : Das Hauptziel dieser Artikelserie ist es, die Struktur des Austauschs und grundlegende Konzepte (Transaktionen, Futures usw.) als Teil des FIX-Protokolls umfassend zu betrachten . Es besteht keine Bindung an einen bestimmten Austausch, wir verwenden ein vorgefertigtes Serverbeispiel (Austauschsimulator) und implementieren in Zukunft einen Client, der geĂ€ndert werden kann, um mit einem fĂŒr Sie interessanten echten Austausch zu interagieren.


Um alles zu konfigurieren, was Sie benötigen, benötigen Sie nur grundlegende Programmierkenntnisse und die FÀhigkeit, Git zu verwenden.


Um die Nachrichten zu testen, benötigen wir:


  • Implementierung des FIX-Protokolls: QuickFix ist beispielsweise eine offene Implementierung in C ++ (es gibt auch QuickFix in Java (QuickFix / J), C # (QuickFix / N) und 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.

Jetzt können Sie das Senden verschiedener Nachrichtentypen mit MiniFIX testen. Um direkt mit einer echten Börse zu arbeiten, ist es natĂŒrlich besser, eine eigene Client-Implementierung (z. B. in Java oder Go) zu schreiben oder ein Handelsterminal zu verwenden. Aber um die Spezifikation von Nachrichten zu verstehen und zu verstehen, wie man sie richtig zusammensetzt, ist eine solche Arbeitsumgebung völlig ausreichend. Im nĂ€chsten Teil werde ich Ihnen erklĂ€ren, welche Finanzinstrumente an der Börse gehandelt werden und wie Sie die Parameter fĂŒr diese Instrumente bei der Erteilung eines Handelsauftrags korrekt angeben. FĂŒr diejenigen, die an technischen Details interessiert sind und ihren eigenen Kunden schreiben, plane ich, einen separaten Artikel zu schreiben.


All Articles