Ejemplo n.º 1
0
        public static void ConsistirCancelamentoOrdem(OrderCancelRequest ocr, string exchange)
        {
            // Basic order identification
            if (string.IsNullOrEmpty(ocr.Account.ToString()))
            {
                throw new ArgumentException("Account field must be provided");
            }

            if (string.IsNullOrEmpty(ocr.OrigClOrdID.ToString()))
            {
                throw new ArgumentException("OrigClOrdID field must be provided");
            }

            if (string.IsNullOrEmpty(ocr.ClOrdID.ToString()))
            {
                throw new ArgumentException("ClOrdID field must be provided");
            }

            // Instrument Identification Block
            if (string.IsNullOrEmpty(ocr.Symbol.ToString()))
            {
                throw new ArgumentException("Symbol must be provided");
            }

            // "obrigatorio" somente para bmf (nao obrigatorio na mensageria, mas dah erro se enviar
            // sem este campo para bmf)
            //if (exchange.Equals(ExchangePrefixes.BMF, StringComparison.InvariantCultureIgnoreCase))
            //{
            //    if (string.IsNullOrEmpty(ocr.SecurityID.ToString()))
            //        throw new ArgumentException("SecurityID field must be provided");
            //}

            //ATP - 2012-10-29
            //Qtde de contratos/papeis a serem cancelados
            if (ocr.OrderQty.getValue() <= new Decimal(0))// orderCancelInfo.OrderQty <= 0)
            {
                throw new ArgumentException("OrderQty must be > 0 ");
            }

            if (ocr.IsSetField(Tags.NoPartyIDs))
            {
                try
                {
                    Group partyIDs = ocr.GetGroup(1, Tags.NoPartyIDs);
                    if (string.IsNullOrEmpty(partyIDs.GetField(Tags.PartyID)))
                    {
                        throw new ArgumentException("ExecBroker must be provided");
                    }
                }
                catch
                {
                    throw new ArgumentException("ExecBroker must be provided");
                }
            }
        }