private void QueryMarketDataRequest() { QuickFix.FIX44.MarketDataRequest result = new QuickFix.FIX44.MarketDataRequest(); result.SetField(new MDReqID(DateTime.Now.Millisecond.ToString())); var noContraBrokersGroup = new QuickFix.FIX44.ExecutionReport.NoContraBrokersGroup(); noContraBrokersGroup.Set(QueryPool()); result.AddGroup(noContraBrokersGroup); QuickFix.FIX44.MarketDataRequest.NoRelatedSymGroup symGroup = new QuickFix.FIX44.MarketDataRequest.NoRelatedSymGroup(); symGroup.SetField(QuerySymbol()); symGroup.SetField(new MDUpdateType(MDUpdateType.INCREMENTAL_REFRESH)); symGroup.SetField(new MarketDepth(0)); symGroup.SetField(new SubscriptionRequestType(SubscriptionRequestType.SNAPSHOT_PLUS_UPDATES)); QuickFix.FIX44.MarketDataRequest.NoMDEntryTypesGroup typesGroup = new QuickFix.FIX44.MarketDataRequest.NoMDEntryTypesGroup(); typesGroup.SetField(new MDEntryType(MDEntryType.BID)); result.AddGroup(typesGroup); typesGroup = new QuickFix.FIX44.MarketDataRequest.NoMDEntryTypesGroup(); typesGroup.SetField(new MDEntryType(MDEntryType.OFFER)); result.AddGroup(symGroup); Console.WriteLine(result); SendMessage(result, ".MD"); }
private QuickFix.FIX44.NewOrderSingle QueryNewOrderSingle44() { QuickFix.FIX44.NewOrderSingle newOrderSingle = new QuickFix.FIX44.NewOrderSingle(); newOrderSingle.ClOrdID = new ClOrdID(DateTime.Now.Millisecond.ToString()); var noContraBrokersGroup = new QuickFix.FIX44.ExecutionReport.NoContraBrokersGroup(); noContraBrokersGroup.Set(QueryPool()); newOrderSingle.AddGroup(noContraBrokersGroup); newOrderSingle.Symbol = QuerySymbol(); newOrderSingle.Side = QuerySide(); newOrderSingle.OrdType = new OrdType(OrdType.MARKET); newOrderSingle.Set(QueryOrderQty()); newOrderSingle.Set(new TimeInForce(TimeInForce.FILL_OR_KILL)); return(newOrderSingle); }
public void OnMessage(QuickFix.FIX44.ExecutionReport m, SessionID s) { var utcNow = DateTime.UtcNow; var stringBuilder = new StringBuilder("***Execution report***:\r\n"); stringBuilder.Append("================\r\n"); for (int i = 1; i <= m.GetInt(QuickFix.Fields.Tags.NoContraBrokers); i++) { var group = new QuickFix.FIX44.ExecutionReport.NoContraBrokersGroup(); m.GetGroup(i, group); stringBuilder.Append("LP:").Append(group.ContraBroker.getValue()).Append("\r\n"); } stringBuilder.Append("Price:").Append(m.AvgPx.getValue()).Append("\r\n"); stringBuilder.Append("Side:").Append(m.Side.getValue() == '1'?"Buy" :"Sell").Append("\r\n"); stringBuilder.Append("Quantity:").Append(m.OrderQty.getValue()).Append("\r\n"); var TimeIn = default(DateTime); var TimeOut = default(DateTime); var BrokerReceipt = default(DateTime); var BrokerExec = default(DateTime); for (int i = 1; i <= m.GetInt(QuickFix.Fields.Tags.NoTrdRegTimestamps); i++) { var group = new QuickFix.FIX44.CollateralReport.NoTrdRegTimestampsGroup(); m.GetGroup(i, group); switch (i) { case 1: TimeIn = group.TrdRegTimestamp.getValue(); break; case 2: TimeOut = group.TrdRegTimestamp.getValue(); break; case 3: BrokerReceipt = group.TrdRegTimestamp.getValue(); break; case 4: BrokerExec = group.TrdRegTimestamp.getValue(); break; } } var clientSentDate = this._orderClientTimestamp[m.ClOrdID.getValue()]; stringBuilder.Append("TimeStamps:\r\n"); stringBuilder.Append("Customer sent:").Append(clientSentDate.ToString("h:m:s.fff")).Append("\r\n"); stringBuilder.Append("Time in:").Append(TimeIn.ToString("h:m:s.fff")).Append("\r\n"); stringBuilder.Append("Broker receipt:").Append(BrokerReceipt.ToString("h:m:s.fff")).Append("\r\n"); stringBuilder.Append("Broker exec:").Append(BrokerExec.ToString("h:m:s.fff")).Append("\r\n"); stringBuilder.Append("Time out:").Append(TimeOut.ToString("h:m:s.fff")).Append("\r\n"); stringBuilder.Append("Customer exec:").Append(utcNow.ToString("h:m:s.fff")).Append("\r\n"); stringBuilder.Append("Customer | IdsRoot | LP\r\n").Append("\r\n"); stringBuilder.Append("Customer sent->| |\r\n").Append("\r\n"); stringBuilder.Append(" |-> Time in |\r\n").Append("\r\n"); stringBuilder.Append(" | |-> Broker Receipt\r\n").Append("\r\n"); stringBuilder.Append(" | |<- Broker exec\r\n").Append("\r\n"); stringBuilder.Append(" |<- Time out |\r\n").Append("\r\n"); stringBuilder.Append("Customer exec<-| |\r\n").Append("\r\n"); Console.WriteLine(stringBuilder.ToString()); }