2016-06-18 12 views
0

Ich bin neu im FIX-Protokoll. Wir verwenden einen TCP-Netzwerkstream, um eine Verbindung herzustellen, dann lesen und schreiben wir die FIX-Nachricht in diesen Stream. Aber wenn ich die Logon-Nachricht sende, bekomme ich 0.So melden Sie sich beim FIX-Protokoll an?

Es wäre hilfreich, wenn jemand einen Ausschnitt von Arbeitscode teilen könnte.

NetworkStream stm = openStream(); 
ASCIIEncoding asen = new ASCIIEncoding(); 
byte[] ba = asen.GetBytes(data); 
Console.WriteLine("Transmitting....."); 
stm.Write(ba, 0, ba.Length); 

byte[] bb = new byte[1024]; 
while (true) 
{ 
    int k = stm.Read(bb, 0, 1024); 
    if (k != 0) 
    { 
     for (int i = 0; i < k; i++) 
      Console.Write(Convert.ToChar(bb[i])); 
     Console.Write(k); 
    } 
} 
+0

Überprüfen Sie die Dokumentation der von Ihnen verwendeten Bibliothek. Und für was hast du den Code gepostet? Nicht viel C#, aber dieser Code tut nichts in Bezug auf die Anmeldung. – DumbCoder

+0

Danke. Hier bestehen die Daten aus Anmeldemeldung. –

Antwort

0

ich Sie gehe davon sind die Initiator Seite, sobald Sie die LOGON (35=A) Nachricht senden.

Um in einen FIX-Server anmelden, Sie

benötigen
  • zu einem FIX-Server verbinden
  • senden ein LOGON message (35=A)
  • die LOGON message (35=A)
  • send empfangen und Heartbeat messages (35=0)

I erhalten Ich würde Ihnen empfehlen, eine FIX-Bibliothek zu verwenden, um FIX-Nachrichten zu behandeln. FIX Protokoll hat mehrere Nachrichten (session messages, application messages, usw.), einige sind sehr komplexe Nachrichten. Ich habe http://quickfixengine.org/ für dotnet und C++ und quickfix/j für Java verwendet.

Wenn Sie eine Bibliothek verwenden, wird es alle "session messages" behandeln und Sie müssen nur die "application messages", z. NewOrderSingle(35=D), ExecutionReport(35=8) usw.

die FIX-Verbindung zu halten und laufen Sie (oder die Bibliothek) benötigen mehr "session messages" zu synchronisieren, um die IDs auszutauschen. Die IDs (beide Seiten) sind sehr wichtig, um die Nachrichten korrekt zu empfangen.

+0

Danke. Ich habe noch einen Zweifel. Ich habe es geschafft, mich mit Quickfix anzumelden. Ich empfange die Anmeldeantwort. Aber die Anwendung trifft nicht auf die Onlogon-Methode. Und auch wenn ich versuche, die MarketData-Anfrage zu senden, trifft sie auf toApp(), wird aber nicht versendet. Kannst du mir eine Idee dazu geben? –

+0

Wir haben mehrere Gründe dafür. Bitte posten Sie hier: (1) Fix Session Log-Datei, (2) Fix Session-Event-Datei und (3) Ihre IApplication-Code. Bitte entfernen Sie ein Passwort oder wichtige Informationen vor dem Senden. –

+0

Hallo. Diesen Fehler behoben, aber einen neuen bekommen. Ich versuche, das MarketDataRequest zu senden. Es gibt mir zurück, dass 55 Tag nicht angegeben ist. Aber ich bin ziemlich sicher, dass ich dieses Tag spezifiziere. Die Anfrage und Antwort ist unten. 20160622-16: 40: 27.464: 8 = FIX.4.49 = 13035 = V34 = 249 = XXXXX52 = 20160622-16: 40: 18.34356 = XXXXX55 = GBPUSD146 = 1262 = App123263 = 1264 = 0265 = 0267 = 2269 = 010 = 129 20160622-16: 40: 27.760: 8 = FIX.4.49 = 13335 = 334 = 249 = XXXXX52 = 20160622-16: 40: 28.04956 = XXXXXX45 = 258 = Tag nicht definiert für diesen Nachrichtentyp371 = 55372 = V373 = 210 = 193 I habe auch den Nachrichtenerstellungscode in folgendem Kommentar angefügt: –