public static void AddParameter(this BinaryWriter source, List <TagValue> options) { StringBuilder tagValuesStr = new StringBuilder(); int tagValuesCount = options == null ? 0 : options.Count; for (int i = 0; i < tagValuesCount; i++) { TagValue tagValue = options[i]; tagValuesStr.Append(tagValue.Tag).Append("=").Append(tagValue.Value).Append(";"); } source.AddParameter(tagValuesStr.ToString()); }
public static string TagValueListToString(List <TagValue> options) { StringBuilder tagValuesStr = new StringBuilder(); int tagValuesCount = options == null ? 0 : options.Count; for (int i = 0; i < tagValuesCount; i++) { TagValue tagValue = options[i]; tagValuesStr.Append(tagValue.Tag).Append("=").Append(tagValue.Value).Append(";"); } return(tagValuesStr.ToString()); }
public void readSmartComboRoutingParams() { if (msgVersion >= 26) { int smartComboRoutingParamsCount = eDecoder.ReadInt(); if (smartComboRoutingParamsCount > 0) { order.SmartComboRoutingParams = new List <TagValue>(smartComboRoutingParamsCount); for (int i = 0; i < smartComboRoutingParamsCount; ++i) { TagValue tagValue = new TagValue(); tagValue.Tag = eDecoder.ReadString(); tagValue.Value = eDecoder.ReadString(); order.SmartComboRoutingParams.Add(tagValue); } } } }
public bool Equals(Object other) { if (this == other) { return(true); } if (other == null) { return(false); } TagValue l_theOther = (TagValue)other; if (Util.StringCompare(Tag, l_theOther.Tag) != 0 || Util.StringCompare(Value, l_theOther.Value) != 0) { return(false); } return(true); }
public void readAlgoParams() { if (msgVersion >= 21) { order.AlgoStrategy = eDecoder.ReadString(); if (!Util.StringIsEmpty(order.AlgoStrategy)) { int algoParamsCount = eDecoder.ReadInt(); if (algoParamsCount > 0) { order.AlgoParams = new List <TagValue>(algoParamsCount); for (int i = 0; i < algoParamsCount; ++i) { TagValue tagValue = new TagValue(); tagValue.Tag = eDecoder.ReadString(); tagValue.Value = eDecoder.ReadString(); order.AlgoParams.Add(tagValue); } } } } }
public override bool Equals(object other) { if (this == other) { return(true); } TagValue l_theOther = other as TagValue; if (l_theOther == null) { return(false); } if (Util.StringCompare(Tag, l_theOther.Tag) != 0 || Util.StringCompare(Value, l_theOther.Value) != 0) { return(false); } return(true); }
private void OpenOrderEvent() { int msgVersion = ReadInt(); // read order id Order order = new Order(); order.OrderId = ReadInt(); // read contract fields Contract contract = new Contract(); if (msgVersion >= 17) { contract.ConId = ReadInt(); } contract.Symbol = ReadString(); contract.SecType = ReadString(); contract.Expiry = ReadString(); contract.Strike = ReadDouble(); contract.Right = ReadString(); if (msgVersion >= 32) { contract.Multiplier = ReadString(); } contract.Exchange = ReadString(); contract.Currency = ReadString(); if (msgVersion >= 2) { contract.LocalSymbol = ReadString(); } if (msgVersion >= 32) { contract.TradingClass = ReadString(); } // read order fields order.Action = ReadString(); order.TotalQuantity = ReadInt(); order.OrderType = ReadString(); if (msgVersion < 29) { order.LmtPrice = ReadDouble(); } else { order.LmtPrice = ReadDoubleMax(); } if (msgVersion < 30) { order.AuxPrice = ReadDouble(); } else { order.AuxPrice = ReadDoubleMax(); } order.Tif = ReadString(); order.OcaGroup = ReadString(); order.Account = ReadString(); order.OpenClose = ReadString(); order.Origin = ReadInt(); order.OrderRef = ReadString(); if (msgVersion >= 3) { order.ClientId = ReadInt(); } if (msgVersion >= 4) { order.PermId = ReadInt(); if (msgVersion < 18) { // will never happen /* order.ignoreRth = */ ReadBoolFromInt(); } else { order.OutsideRth = ReadBoolFromInt(); } order.Hidden = ReadInt() == 1; order.DiscretionaryAmt = ReadDouble(); } if (msgVersion >= 5) { order.GoodAfterTime = ReadString(); } if (msgVersion >= 6) { // skip deprecated sharesAllocation field ReadString(); } if (msgVersion >= 7) { order.FaGroup = ReadString(); order.FaMethod = ReadString(); order.FaPercentage = ReadString(); order.FaProfile = ReadString(); } if (msgVersion >= 8) { order.GoodTillDate = ReadString(); } if (msgVersion >= 9) { order.Rule80A = ReadString(); order.PercentOffset = ReadDoubleMax(); order.SettlingFirm = ReadString(); order.ShortSaleSlot = ReadInt(); order.DesignatedLocation = ReadString(); if (parent.ServerVersion == 51) { ReadInt(); // exemptCode } else if (msgVersion >= 23) { order.ExemptCode = ReadInt(); } order.AuctionStrategy = ReadInt(); order.StartingPrice = ReadDoubleMax(); order.StockRefPrice = ReadDoubleMax(); order.Delta = ReadDoubleMax(); order.StockRangeLower = ReadDoubleMax(); order.StockRangeUpper = ReadDoubleMax(); order.DisplaySize = ReadInt(); if (msgVersion < 18) { // will never happen /* order.rthOnly = */ ReadBoolFromInt(); } order.BlockOrder = ReadBoolFromInt(); order.SweepToFill = ReadBoolFromInt(); order.AllOrNone = ReadBoolFromInt(); order.MinQty = ReadIntMax(); order.OcaType = ReadInt(); order.ETradeOnly = ReadBoolFromInt(); order.FirmQuoteOnly = ReadBoolFromInt(); order.NbboPriceCap = ReadDoubleMax(); } if (msgVersion >= 10) { order.ParentId = ReadInt(); order.TriggerMethod = ReadInt(); } if (msgVersion >= 11) { order.Volatility = ReadDoubleMax(); order.VolatilityType = ReadInt(); if (msgVersion == 11) { int receivedInt = ReadInt(); order.DeltaNeutralOrderType = ((receivedInt == 0) ? "NONE" : "MKT"); } else { // msgVersion 12 and up order.DeltaNeutralOrderType = ReadString(); order.DeltaNeutralAuxPrice = ReadDoubleMax(); if (msgVersion >= 27 && !Util.StringIsEmpty(order.DeltaNeutralOrderType)) { order.DeltaNeutralConId = ReadInt(); order.DeltaNeutralSettlingFirm = ReadString(); order.DeltaNeutralClearingAccount = ReadString(); order.DeltaNeutralClearingIntent = ReadString(); } if (msgVersion >= 31 && !Util.StringIsEmpty(order.DeltaNeutralOrderType)) { order.DeltaNeutralOpenClose = ReadString(); order.DeltaNeutralShortSale = ReadBoolFromInt(); order.DeltaNeutralShortSaleSlot = ReadInt(); order.DeltaNeutralDesignatedLocation = ReadString(); } } order.ContinuousUpdate = ReadInt(); if (parent.ServerVersion == 26) { order.StockRangeLower = ReadDouble(); order.StockRangeUpper = ReadDouble(); } order.ReferencePriceType = ReadInt(); } if (msgVersion >= 13) { order.TrailStopPrice = ReadDoubleMax(); } if (msgVersion >= 30) { order.TrailingPercent = ReadDoubleMax(); } if (msgVersion >= 14) { order.BasisPoints = ReadDoubleMax(); order.BasisPointsType = ReadIntMax(); contract.ComboLegsDescription = ReadString(); } if (msgVersion >= 29) { int comboLegsCount = ReadInt(); if (comboLegsCount > 0) { contract.ComboLegs = new List <ComboLeg>(comboLegsCount); for (int i = 0; i < comboLegsCount; ++i) { int conId = ReadInt(); int ratio = ReadInt(); String action = ReadString(); String exchange = ReadString(); int openClose = ReadInt(); int shortSaleSlot = ReadInt(); String designatedLocation = ReadString(); int exemptCode = ReadInt(); ComboLeg comboLeg = new ComboLeg(conId, ratio, action, exchange, openClose, shortSaleSlot, designatedLocation, exemptCode); contract.ComboLegs.Add(comboLeg); } } int orderComboLegsCount = ReadInt(); if (orderComboLegsCount > 0) { order.OrderComboLegs = new List <OrderComboLeg>(orderComboLegsCount); for (int i = 0; i < orderComboLegsCount; ++i) { double price = ReadDoubleMax(); OrderComboLeg orderComboLeg = new OrderComboLeg(price); order.OrderComboLegs.Add(orderComboLeg); } } } if (msgVersion >= 26) { int smartComboRoutingParamsCount = ReadInt(); if (smartComboRoutingParamsCount > 0) { order.SmartComboRoutingParams = new List <TagValue>(smartComboRoutingParamsCount); for (int i = 0; i < smartComboRoutingParamsCount; ++i) { TagValue tagValue = new TagValue(); tagValue.tag = ReadString(); tagValue.value = ReadString(); order.SmartComboRoutingParams.Add(tagValue); } } } if (msgVersion >= 15) { if (msgVersion >= 20) { order.ScaleInitLevelSize = ReadIntMax(); order.ScaleSubsLevelSize = ReadIntMax(); } else { /* int notSuppScaleNumComponents = */ ReadIntMax(); order.ScaleInitLevelSize = ReadIntMax(); } order.ScalePriceIncrement = ReadDoubleMax(); } if (msgVersion >= 28 && order.ScalePriceIncrement > 0.0 && order.ScalePriceIncrement != Double.MaxValue) { order.ScalePriceAdjustValue = ReadDoubleMax(); order.ScalePriceAdjustInterval = ReadIntMax(); order.ScaleProfitOffset = ReadDoubleMax(); order.ScaleAutoReset = ReadBoolFromInt(); order.ScaleInitPosition = ReadIntMax(); order.ScaleInitFillQty = ReadIntMax(); order.ScaleRandomPercent = ReadBoolFromInt(); } if (msgVersion >= 24) { order.HedgeType = ReadString(); if (!Util.StringIsEmpty(order.HedgeType)) { order.HedgeParam = ReadString(); } } if (msgVersion >= 25) { order.OptOutSmartRouting = ReadBoolFromInt(); } if (msgVersion >= 19) { order.ClearingAccount = ReadString(); order.ClearingIntent = ReadString(); } if (msgVersion >= 22) { order.NotHeld = ReadBoolFromInt(); } if (msgVersion >= 20) { if (ReadBoolFromInt()) { UnderComp underComp = new UnderComp(); underComp.ConId = ReadInt(); underComp.Delta = ReadDouble(); underComp.Price = ReadDouble(); contract.UnderComp = underComp; } } if (msgVersion >= 21) { order.AlgoStrategy = ReadString(); if (!Util.StringIsEmpty(order.AlgoStrategy)) { int algoParamsCount = ReadInt(); if (algoParamsCount > 0) { order.AlgoParams = new List <TagValue>(algoParamsCount); for (int i = 0; i < algoParamsCount; ++i) { TagValue tagValue = new TagValue(); tagValue.tag = ReadString(); tagValue.value = ReadString(); order.AlgoParams.Add(tagValue); } } } } OrderState orderState = new OrderState(); if (msgVersion >= 16) { order.WhatIf = ReadBoolFromInt(); orderState.Status = ReadString(); orderState.InitMargin = ReadString(); orderState.MaintMargin = ReadString(); orderState.EquityWithLoan = ReadString(); orderState.Commission = ReadDoubleMax(); orderState.MinCommission = ReadDoubleMax(); orderState.MaxCommission = ReadDoubleMax(); orderState.CommissionCurrency = ReadString(); orderState.WarningText = ReadString(); } parent.Wrapper.openOrder(order.OrderId, contract, order, orderState); }
private void ContractDataEvent() { int msgVersion = ReadInt(); int requestId = -1; if (msgVersion >= 3) { requestId = ReadInt(); } ContractDetails contract = new ContractDetails(); contract.Summary.Symbol = ReadString(); contract.Summary.SecType = ReadString(); contract.Summary.Expiry = ReadString(); contract.Summary.Strike = ReadDouble(); contract.Summary.Right = ReadString(); contract.Summary.Exchange = ReadString(); contract.Summary.Currency = ReadString(); contract.Summary.LocalSymbol = ReadString(); contract.MarketName = ReadString(); contract.Summary.TradingClass = ReadString(); contract.Summary.ConId = ReadInt(); contract.MinTick = ReadDouble(); contract.Summary.Multiplier = ReadString(); contract.OrderTypes = ReadString(); contract.ValidExchanges = ReadString(); if (msgVersion >= 2) { contract.PriceMagnifier = ReadInt(); } if (msgVersion >= 4) { contract.UnderConId = ReadInt(); } if (msgVersion >= 5) { contract.LongName = ReadString(); contract.Summary.PrimaryExch = ReadString(); } if (msgVersion >= 6) { contract.ContractMonth = ReadString(); contract.Industry = ReadString(); contract.Category = ReadString(); contract.Subcategory = ReadString(); contract.TimeZoneId = ReadString(); contract.TradingHours = ReadString(); contract.LiquidHours = ReadString(); } if (msgVersion >= 8) { contract.EvRule = ReadString(); contract.EvMultiplier = ReadDouble(); } if (msgVersion >= 7) { int secIdListCount = ReadInt(); if (secIdListCount > 0) { contract.SecIdList = new List <TagValue>(secIdListCount); for (int i = 0; i < secIdListCount; ++i) { TagValue tagValue = new TagValue(); tagValue.tag = ReadString(); tagValue.value = ReadString(); contract.SecIdList.Add(tagValue); } } } parent.Wrapper.contractDetails(requestId, contract); }
private void OpenOrderEvent() { int msgVersion = ReadInt(); // read order id Order order = new Order(); order.OrderId = ReadInt(); // read contract fields Contract contract = new Contract(); if (msgVersion >= 17) { contract.ConId = ReadInt(); } contract.Symbol = ReadString(); contract.SecType = ReadString(); contract.Expiry = ReadString(); contract.Strike = ReadDouble(); contract.Right = ReadString(); if (msgVersion >= 32) { contract.Multiplier = ReadString(); } contract.Exchange = ReadString(); contract.Currency = ReadString(); if (msgVersion >= 2) { contract.LocalSymbol = ReadString(); } if (msgVersion >= 32) { contract.TradingClass = ReadString(); } // read order fields order.Action = ReadString(); order.TotalQuantity = ReadInt(); order.OrderType = ReadString(); if (msgVersion < 29) { order.LmtPrice = ReadDouble(); } else { order.LmtPrice = ReadDoubleMax(); } if (msgVersion < 30) { order.AuxPrice = ReadDouble(); } else { order.AuxPrice = ReadDoubleMax(); } order.Tif = ReadString(); order.OcaGroup = ReadString(); order.Account = ReadString(); order.OpenClose = ReadString(); order.Origin = ReadInt(); order.OrderRef = ReadString(); if (msgVersion >= 3) { order.ClientId = ReadInt(); } if (msgVersion >= 4) { order.PermId = ReadInt(); if (msgVersion < 18) { // will never happen /* order.ignoreRth = */ ReadBoolFromInt(); } else { order.OutsideRth = ReadBoolFromInt(); } order.Hidden = ReadInt() == 1; order.DiscretionaryAmt = ReadDouble(); } if (msgVersion >= 5) { order.GoodAfterTime = ReadString(); } if (msgVersion >= 6) { // skip deprecated sharesAllocation field ReadString(); } if (msgVersion >= 7) { order.FaGroup = ReadString(); order.FaMethod = ReadString(); order.FaPercentage = ReadString(); order.FaProfile = ReadString(); } if (msgVersion >= 8) { order.GoodTillDate = ReadString(); } if (msgVersion >= 9) { order.Rule80A = ReadString(); order.PercentOffset = ReadDoubleMax(); order.SettlingFirm = ReadString(); order.ShortSaleSlot = ReadInt(); order.DesignatedLocation = ReadString(); if (parent.ServerVersion == 51) { ReadInt(); // exemptCode } else if (msgVersion >= 23) { order.ExemptCode = ReadInt(); } order.AuctionStrategy = ReadInt(); order.StartingPrice = ReadDoubleMax(); order.StockRefPrice = ReadDoubleMax(); order.Delta = ReadDoubleMax(); order.StockRangeLower = ReadDoubleMax(); order.StockRangeUpper = ReadDoubleMax(); order.DisplaySize = ReadInt(); if (msgVersion < 18) { // will never happen /* order.rthOnly = */ ReadBoolFromInt(); } order.BlockOrder = ReadBoolFromInt(); order.SweepToFill = ReadBoolFromInt(); order.AllOrNone = ReadBoolFromInt(); order.MinQty = ReadIntMax(); order.OcaType = ReadInt(); order.ETradeOnly = ReadBoolFromInt(); order.FirmQuoteOnly = ReadBoolFromInt(); order.NbboPriceCap = ReadDoubleMax(); } if (msgVersion >= 10) { order.ParentId = ReadInt(); order.TriggerMethod = ReadInt(); } if (msgVersion >= 11) { order.Volatility = ReadDoubleMax(); order.VolatilityType = ReadInt(); if (msgVersion == 11) { int receivedInt = ReadInt(); order.DeltaNeutralOrderType = ((receivedInt == 0) ? "NONE" : "MKT"); } else { // msgVersion 12 and up order.DeltaNeutralOrderType = ReadString(); order.DeltaNeutralAuxPrice = ReadDoubleMax(); if (msgVersion >= 27 && !Util.StringIsEmpty(order.DeltaNeutralOrderType)) { order.DeltaNeutralConId = ReadInt(); order.DeltaNeutralSettlingFirm = ReadString(); order.DeltaNeutralClearingAccount = ReadString(); order.DeltaNeutralClearingIntent = ReadString(); } if (msgVersion >= 31 && !Util.StringIsEmpty(order.DeltaNeutralOrderType)) { order.DeltaNeutralOpenClose = ReadString(); order.DeltaNeutralShortSale = ReadBoolFromInt(); order.DeltaNeutralShortSaleSlot = ReadInt(); order.DeltaNeutralDesignatedLocation = ReadString(); } } order.ContinuousUpdate = ReadInt(); if (parent.ServerVersion == 26) { order.StockRangeLower = ReadDouble(); order.StockRangeUpper = ReadDouble(); } order.ReferencePriceType = ReadInt(); } if (msgVersion >= 13) { order.TrailStopPrice = ReadDoubleMax(); } if (msgVersion >= 30) { order.TrailingPercent = ReadDoubleMax(); } if (msgVersion >= 14) { order.BasisPoints = ReadDoubleMax(); order.BasisPointsType = ReadIntMax(); contract.ComboLegsDescription = ReadString(); } if (msgVersion >= 29) { int comboLegsCount = ReadInt(); if (comboLegsCount > 0) { contract.ComboLegs = new List<ComboLeg>(comboLegsCount); for (int i = 0; i < comboLegsCount; ++i) { int conId = ReadInt(); int ratio = ReadInt(); String action = ReadString(); String exchange = ReadString(); int openClose = ReadInt(); int shortSaleSlot = ReadInt(); String designatedLocation = ReadString(); int exemptCode = ReadInt(); ComboLeg comboLeg = new ComboLeg(conId, ratio, action, exchange, openClose, shortSaleSlot, designatedLocation, exemptCode); contract.ComboLegs.Add(comboLeg); } } int orderComboLegsCount = ReadInt(); if (orderComboLegsCount > 0) { order.OrderComboLegs = new List<OrderComboLeg>(orderComboLegsCount); for (int i = 0; i < orderComboLegsCount; ++i) { double price = ReadDoubleMax(); OrderComboLeg orderComboLeg = new OrderComboLeg(price); order.OrderComboLegs.Add(orderComboLeg); } } } if (msgVersion >= 26) { int smartComboRoutingParamsCount = ReadInt(); if (smartComboRoutingParamsCount > 0) { order.SmartComboRoutingParams = new List<TagValue>(smartComboRoutingParamsCount); for (int i = 0; i < smartComboRoutingParamsCount; ++i) { TagValue tagValue = new TagValue(); tagValue.tag = ReadString(); tagValue.value = ReadString(); order.SmartComboRoutingParams.Add(tagValue); } } } if (msgVersion >= 15) { if (msgVersion >= 20) { order.ScaleInitLevelSize = ReadIntMax(); order.ScaleSubsLevelSize = ReadIntMax(); } else { /* int notSuppScaleNumComponents = */ ReadIntMax(); order.ScaleInitLevelSize = ReadIntMax(); } order.ScalePriceIncrement = ReadDoubleMax(); } if (msgVersion >= 28 && order.ScalePriceIncrement > 0.0 && order.ScalePriceIncrement != Double.MaxValue) { order.ScalePriceAdjustValue = ReadDoubleMax(); order.ScalePriceAdjustInterval = ReadIntMax(); order.ScaleProfitOffset = ReadDoubleMax(); order.ScaleAutoReset = ReadBoolFromInt(); order.ScaleInitPosition = ReadIntMax(); order.ScaleInitFillQty = ReadIntMax(); order.ScaleRandomPercent = ReadBoolFromInt(); } if (msgVersion >= 24) { order.HedgeType = ReadString(); if (!Util.StringIsEmpty(order.HedgeType)) { order.HedgeParam = ReadString(); } } if (msgVersion >= 25) { order.OptOutSmartRouting = ReadBoolFromInt(); } if (msgVersion >= 19) { order.ClearingAccount = ReadString(); order.ClearingIntent = ReadString(); } if (msgVersion >= 22) { order.NotHeld = ReadBoolFromInt(); } if (msgVersion >= 20) { if (ReadBoolFromInt()) { UnderComp underComp = new UnderComp(); underComp.ConId = ReadInt(); underComp.Delta = ReadDouble(); underComp.Price = ReadDouble(); contract.UnderComp = underComp; } } if (msgVersion >= 21) { order.AlgoStrategy = ReadString(); if (!Util.StringIsEmpty(order.AlgoStrategy)) { int algoParamsCount = ReadInt(); if (algoParamsCount > 0) { order.AlgoParams = new List<TagValue>(algoParamsCount); for (int i = 0; i < algoParamsCount; ++i) { TagValue tagValue = new TagValue(); tagValue.tag = ReadString(); tagValue.value = ReadString(); order.AlgoParams.Add(tagValue); } } } } OrderState orderState = new OrderState(); if (msgVersion >= 16) { order.WhatIf = ReadBoolFromInt(); orderState.Status = ReadString(); orderState.InitMargin = ReadString(); orderState.MaintMargin = ReadString(); orderState.EquityWithLoan = ReadString(); orderState.Commission = ReadDoubleMax(); orderState.MinCommission = ReadDoubleMax(); orderState.MaxCommission = ReadDoubleMax(); orderState.CommissionCurrency = ReadString(); orderState.WarningText = ReadString(); } parent.Wrapper.openOrder(order.OrderId, contract, order, orderState); }
private void ContractDataEvent() { int msgVersion = ReadInt(); int requestId = -1; if (msgVersion >= 3) requestId = ReadInt(); ContractDetails contract = new ContractDetails(); contract.Summary.Symbol = ReadString(); contract.Summary.SecType = ReadString(); contract.Summary.Expiry = ReadString(); contract.Summary.Strike = ReadDouble(); contract.Summary.Right = ReadString(); contract.Summary.Exchange = ReadString(); contract.Summary.Currency = ReadString(); contract.Summary.LocalSymbol = ReadString(); contract.MarketName = ReadString(); contract.Summary.TradingClass = ReadString(); contract.Summary.ConId = ReadInt(); contract.MinTick = ReadDouble(); contract.Summary.Multiplier = ReadString(); contract.OrderTypes = ReadString(); contract.ValidExchanges = ReadString(); if (msgVersion >= 2) { contract.PriceMagnifier = ReadInt(); } if (msgVersion >= 4) { contract.UnderConId = ReadInt(); } if (msgVersion >= 5) { contract.LongName = ReadString(); contract.Summary.PrimaryExch = ReadString(); } if (msgVersion >= 6) { contract.ContractMonth = ReadString(); contract.Industry = ReadString(); contract.Category = ReadString(); contract.Subcategory = ReadString(); contract.TimeZoneId = ReadString(); contract.TradingHours = ReadString(); contract.LiquidHours = ReadString(); } if (msgVersion >= 8) { contract.EvRule = ReadString(); contract.EvMultiplier = ReadDouble(); } if (msgVersion >= 7) { int secIdListCount = ReadInt(); if (secIdListCount > 0) { contract.SecIdList = new List<TagValue>(secIdListCount); for (int i = 0; i < secIdListCount; ++i) { TagValue tagValue = new TagValue(); tagValue.tag = ReadString(); tagValue.value = ReadString(); contract.SecIdList.Add(tagValue); } } } parent.Wrapper.contractDetails(requestId, contract); }
private void BondContractDetailsEvent() { int msgVersion = ReadInt(); int requestId = -1; if (msgVersion >= 3) { requestId = ReadInt(); } ContractDetails contract = new ContractDetails(); contract.Summary.Symbol = ReadString(); contract.Summary.SecType = ReadString(); contract.Cusip = ReadString(); contract.Coupon = ReadDouble(); contract.Maturity = ReadString(); contract.IssueDate = ReadString(); contract.Ratings = ReadString(); contract.BondType = ReadString(); contract.CouponType = ReadString(); contract.Convertible = ReadBoolFromInt(); contract.Callable = ReadBoolFromInt(); contract.Putable = ReadBoolFromInt(); contract.DescAppend = ReadString(); contract.Summary.Exchange = ReadString(); contract.Summary.Currency = ReadString(); contract.MarketName = ReadString(); contract.Summary.TradingClass = ReadString(); contract.Summary.ConId = ReadInt(); contract.MinTick = ReadDouble(); contract.OrderTypes = ReadString(); contract.ValidExchanges = ReadString(); if (msgVersion >= 2) { contract.NextOptionDate = ReadString(); contract.NextOptionType = ReadString(); contract.NextOptionPartial = ReadBoolFromInt(); contract.Notes = ReadString(); } if (msgVersion >= 4) { contract.LongName = ReadString(); } if (msgVersion >= 6) { contract.EvRule = ReadString(); contract.EvMultiplier = ReadDouble(); } if (msgVersion >= 5) { int secIdListCount = ReadInt(); if (secIdListCount > 0) { contract.SecIdList = new List<TagValue>(); for (int i = 0; i < secIdListCount; ++i) { TagValue tagValue = new TagValue(); tagValue.Tag = ReadString(); tagValue.Value = ReadString(); contract.SecIdList.Add(tagValue); } } } eWrapper.bondContractDetails(requestId, contract); }