Пример #1
0
        private static RequestItemField ProcessOverrides(RequestItem ri, string overrides)
        {
            // Overrides come in the form "FieldName[fieldName,fieldValue,fieldName,fieldValue]"
            // with as many name/value pairs within the brackets as required
            int start = overrides.IndexOf("[");

            // The last character will be the ]
            if (!overrides.EndsWith("]"))
            {
                throw new Exception("Override fields passed to ProcessOverrides() that didn't end with ]");
            }

            RequestItemField ret = new RequestItemField(overrides.Substring(0, start));

            string[] nameValues = overrides.Substring(start + 1, overrides.Length - start - 2).Split(',');
            for (int i = 0; i < nameValues.Length; i += 2)
            {
                string field = nameValues[i];
                string value = nameValues[i + 1];

                ret.OverrideFields.Add(new OverrideField(field, value));
            }

            return(ret);
        }
Пример #2
0
        private void AddBBfield(BloombergDataInstrument bdi, RequestItemField Field, int id)
        {
            // Ignore duplicate field names
            if (!bdi.BBFields.ContainsKey(Field.Key))
            {
                BloombergDataInstrumentField field = new BloombergDataInstrumentField(Field.Key);
                field.ID = id;

                foreach (OverrideField oField in Field.OverrideFields)
                {
                    field.FieldOverrides.Add(oField.Name, oField.Value);
                }

                bdi.BBFields.Add(Field.Key, field);
            }
        }
Пример #3
0
        internal static void AddFieldFromFieldList(RequestItem ri)
        {
            switch (ri.RequestType)
            {
            case BloombergDataInstrument.eRequestType.IntraDayBar:
            case BloombergDataInstrument.eRequestType.IntraDayTick:
                if (_intraDayEventTypeFields.Count == 0)
                {
                    _intraDayEventTypeFields.Add("bid", true);
                    _intraDayEventTypeFields.Add("ask", true);
                    _intraDayEventTypeFields.Add("trade", true);
                    _intraDayEventTypeFields.Add("ask_best", true);
                    _intraDayEventTypeFields.Add("bid_best", true);
                }
                break;
            }

            string fields = ri.BBFieldList;

            // Fields may be a single field or may be a comma seperated list
            // or they may contains Override fields within square brackets
            while (fields != "")
            {
                RequestItemField fld = null;
                int comma            = fields.IndexOf(",");
                int bracket          = fields.IndexOf("[");

                if (comma == -1 && bracket == -1)
                {
                    // a lonesome field
                    fld    = new RequestItemField(fields);
                    fields = "";
                }
                else if (comma == -1)
                {
                    // Just a bracket found
                    int    end       = fields.IndexOf("]");
                    string overrides = fields.Substring(0, end + 1);
                    fields = fields.Substring(end + 1);
                    fld    = ProcessOverrides(ri, overrides);
                }
                else if (bracket == -1)
                {
                    // Just a comma found
                    fld    = new RequestItemField(fields.Substring(0, comma));
                    fields = fields.Substring(comma + 1);
                }
                else
                {
                    // Both a bracket and commas, process in order.
                    if (comma < bracket)
                    {
                        fld    = new RequestItemField(fields.Substring(0, comma));
                        fields = fields.Substring(comma + 1);
                    }
                    else
                    {
                        int    end       = fields.IndexOf("]");
                        string overrides = fields.Substring(0, end + 1);
                        fields = fields.Substring(end + 1);
                        fld    = ProcessOverrides(ri, overrides);
                    }
                }

                if (ri.RequestType == BloombergDataInstrument.eRequestType.IntraDayBar &&
                    _intraDayEventTypeFields.ContainsKey(fld.Key))
                {
                    ri.EventType = fld.Key;
                }
                else
                {
                    ri.riFields.Add(fld.Key, fld);
                }
            }
        }