public void TestStringTagConstructor() { var field = new Fix.Field("35", "D"); Assert.AreEqual(35, field.Tag); Assert.AreEqual("D", field.Value); }
public void TestMessageParserStripsValueDescription() { const string text = @"2014-08-26 10:20:56.0006|DEBUG|AwesomO.Execution.FixClient|Outgoing { BeginString (8) - FIXT.1.1 BodyLength (9) - MsgType (35) - 8 - ExecutionReport SenderCompID (49) - QJ TargetCompID (56) - FIX_CLIENT MsgSeqNum (34) - 5019 SendingTime (52) - 20140826-00:20:55.998 OrdStatus (39) - 0 - New ClOrdID (11) - 20 OrderID (37) - FIX_CLIENT-QJ-20 ExecID (17) - 1 ExecType (150) - 0 - New LeavesQty (151) - 10000 SecurityID (48) - RIO.AX SecurityIDSource (22) - 5 - RIC code Side (54) - 1 - Buy OrderQty (38) - 10000 Price (44) - 97.08 LastQty (32) - 0 LastPx (31) - 0 CumQty (14) - 0 AvgPx (6) - 0 OrdType (40) - 2 - Limit }"; Fix.Message message = Fix.Message.Parse(text); Assert.IsNotNull(message); Fix.Field msgType = message.Fields.Find(Fix.Dictionary.Fields.MsgType); Assert.IsNotNull(msgType); Assert.AreEqual(Fix.Dictionary.Messages.ExecutionReport.MsgType, msgType.Value); }
public void TestOrdStatusConversion() { var field = new Fix.Field(Fix.Dictionary.Fields.OrdStatus, "0"); var ordStatus = (Fix.OrdStatus)field; Assert.AreEqual(Fix.OrdStatus.New, ordStatus); }
public void TestDescribeFieldValue() { var field = new Fix.Field(FIX_5_0SP2.TimeInForce.Day); var description = field.Describe(null).ValueDefinition; Assert.IsNotNull(description); Assert.AreEqual("Day", description?.Name); Assert.AreEqual("A buy or sell order that, if not executed expires at the end of the trading day on which it was entered.", description?.Description); }
public void TestExecInstWithMultipleValues() { var field = new Fix.Field(Fix.Dictionary.Fields.ExecInst, "c x"); var values = (Fix.ExecInst[])field; Assert.AreEqual(2, values.Length); Assert.AreEqual(Fix.ExecInst.IgnorePriceValidityChecks, values[0]); Assert.AreEqual(Fix.ExecInst.IgnoreNotionalValueChecks, values[1]); }
public void TestClone() { var one = new Fix.Field("35", "D"); var two = (Fix.Field)one.Clone(); Assert.AreEqual(one.Tag, two.Tag); Assert.AreEqual(one.Value, two.Value); two.Value = "E"; Assert.AreEqual(one.Tag, two.Tag); Assert.AreNotEqual(one.Value, two.Value); Assert.AreEqual("D", one.Value); Assert.AreEqual("E", two.Value); }
void CancelAllOpenOrders() { foreach (DataGridViewRow row in _orderGrid.Rows) { try { var view = row.DataBoundItem as DataRowView; var orderRow = view.Row as OrderDataRow; Fix.Order order = orderRow.Order; if (order.OrdStatus == Fix.OrdStatus.Canceled || order.OrdStatus == Fix.OrdStatus.Rejected || order.OrdStatus == Fix.OrdStatus.DoneForDay) { continue; } var message = new Fix.Message { MsgType = Fix.Dictionary.Messages.OrderCancelRequest.MsgType }; MessagesPanel.UpdateMessage(message, order); message.Fields.Set(Fix.Dictionary.Fields.TransactTime, Fix.Field.TimeString(_session.MillisecondTimestamps)); message.Fields.Set(Fix.Dictionary.Fields.Side, order.Side.Value); message.Fields.Set(Fix.Dictionary.Fields.Symbol, order.Symbol); message.Fields.Set(Fix.Dictionary.Fields.OrigClOrdID, order.ClOrdID); message.Fields.Set(Fix.Dictionary.Fields.ClOrdID, Session.FormatClOrdId(Session.NextClOrdId++)); // // This field was removed from later versions. // Fix.Field beginString = message.Fields.Find(Fix.Dictionary.Fields.BeginString); if (beginString != null && beginString.Value == Fix.Dictionary.Versions.FIX_4_0.BeginString) { message.Fields.Set(Fix.Dictionary.FIX_4_0.Fields.CxlType, "F"); } Session.Send(message); } catch (Exception ex) { MessageBox.Show(this, ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information); } } }
void ExportButtonClick(object sender, EventArgs e) { string filename = Session.SenderCompId + "-" + Session.TargetCompId + ".txt"; using SaveFileDialog dlg = new(); dlg.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"; dlg.FilterIndex = 2; dlg.RestoreDirectory = true; dlg.FileName = filename; dlg.Title = "Export"; if (dlg.ShowDialog() == DialogResult.OK) { Cursor original = Cursor.Current; Cursor.Current = Cursors.WaitCursor; try { using FileStream stream = new(dlg.FileName, FileMode.Create); using StreamWriter writer = new(stream); foreach (Fix.Message message in Session.Messages) { string timestamp = "Unknown"; Fix.Field field = message.Fields.Find(Fix.Dictionary.Fields.SendingTime.Tag); if (field != null) { timestamp = field.Value; } string direction = message.Incoming ? "received" : "sent"; Fix.Dictionary.Message definition = Session.Version.Messages[message.MsgType]; writer.WriteLine("{0} ({1}) ({2})", timestamp, direction, definition.Name); writer.WriteLine("{"); writer.WriteLine(message.ToString()); writer.WriteLine("}"); } } finally { Cursor.Current = original; } } }
static void FieldsEqual(string[,] expected, Fix.Message message) { Assert.AreEqual(expected.Length / 2, message.Fields.Count, "Field count"); for (int index = 0; index < message.Fields.Count; ++index) { Fix.Field actual = message.Fields[index]; if (!int.TryParse(expected[index, 0], out int tag)) { Assert.Fail("Non numeric tag '{0}={1}'", expected[index, 0], expected[index, 1]); } Assert.AreEqual(tag, actual.Tag, "Tag"); Assert.AreEqual(expected[index, 1], actual.Value, "Value"); } }
protected string ToolTipForCell(int rowIndex, int columnIndex, char value) { DataGridViewRow row = Rows[rowIndex]; if (row.DataBoundItem is not DataRowView rowView || rowView.IsNew) { return(null); } var dataRow = (FieldDataRow)rowView.Row; Fix.Field field = dataRow.Field; if (field.Definition == null) { return(null); } Type type = field.Definition.EnumeratedType; if (type == null) { return(null); } string name = type.GetEnumName(value); if (string.IsNullOrEmpty(name)) { return(null); } MemberInfo[] info = type.GetMember(name); if (info.Length < 1) { return(null); } var attributes = info[0].GetCustomAttributes(typeof(DescriptionAttribute), false); string description = ((DescriptionAttribute)attributes[0]).Description; return(string.Join("\n", description.SplitInParts(80))); }
public static Fix.Dictionary.Message MessageDefinition(Fix.Message message) { Fix.Field beginString = message.Fields.Find(Fix.Dictionary.Fields.BeginString); Fix.Dictionary.Version version = null; if (beginString != null && !beginString.Value.StartsWith("FIXT.")) { version = Fix.Dictionary.Versions[beginString.Value]; } if (version == null) { version = Fix.Dictionary.Versions.Default; } Fix.Dictionary.Message exemplar = version.Messages[message.MsgType]; if (exemplar == null) { return(Fix.Dictionary.Messages[message.MsgType]); } return(exemplar); }
public void TestShortTimestampDateTimeConversion() { var field = new Fix.Field(Fix.Dictionary.Fields.ExpireTime, "20140306-06:01:32"); Assert.IsNotNull((DateTime?)field); }
public void TestDescriptionOfExecInstWithMultipleValues() { var field = new Fix.Field(Fix.Dictionary.Fields.ExecInst, "c x"); Assert.AreEqual("Ignore price validity checks, Ignore notional value checks", field.ValueDescription); }
public void TestFieldValueDescriptionWithNumericEnumDefinition() { var field = new Fix.Field(Fix.Dictionary.Fields.SessionStatus, Fix.SessionStatus.SessionActive); Assert.AreEqual("Session active", field.ValueDescription); }
public void TestInvalidDateTimeConversion() { var field = new Fix.Field(Fix.Dictionary.Fields.ExpireTime, "blah"); Assert.IsNull((DateTime?)field); }
public void TestDateDateTimeConversion() { var field = new Fix.Field(Fix.Dictionary.Fields.ExpireTime, "20140306"); Assert.IsNotNull((DateTime?)field); }
public void TestInvalidStringTagConstructor() { _ = new Fix.Field("blah", "D"); }
public static Fix.Dictionary.Field FieldDefinition(Fix.Dictionary.Message message, Fix.Field field) { message.Fields.TryGetValue(field.Tag, out Fix.Dictionary.Field definition); return(definition); }
public void TestLongTimestampDateTimeConversion() { var field = new Fix.Field(FIX_5_0SP2.Fields.ExpireTime, "20140306-06:01:32.345"); Assert.IsNotNull((DateTime?)field); }