Example #1
0
        public Commodity Find(string symbol, Annotation details)
        {
            Logger.Debug("pool.commodities", () => String.Format("commodity_pool_t::find[ann] symbol {0}\r\n{1}", symbol, details));

            Commodity commodity;
            var       key = new Tuple <string, Annotation>(symbol, details);

            AnnotatedCommodities.TryGetValue(key, out commodity);

            if (commodity != null)
            {
                Logger.Debug("pool.commodities", () => String.Format("commodity_pool_t::find[ann] found symbol {0}\r\n{1}", commodity.BaseSymbol, ((AnnotatedCommodity)commodity).Details));
            }

            return(commodity);
        }
Example #2
0
        public Commodity Create(Commodity commodity, Annotation details)
        {
            if (commodity == null)
            {
                throw new ArgumentNullException("commodity");
            }
            if (commodity.IsAnnotated)
            {
                throw new ArgumentException("Commodity is already annotated");
            }
            if (details == null)
            {
                throw new ArgumentNullException("details");
            }

            Logger.Debug("pool.commodities", () => String.Format("commodity_pool_t::create[ann:comm] symbol {0}\r\n{1}", commodity.BaseSymbol, details));

            AnnotatedCommodity annotatedCommodity = new AnnotatedCommodity(commodity, details);

            commodity.Flags |= CommodityFlagsEnum.COMMODITY_SAW_ANNOTATED;
            if (details.Price != null)
            {
                if (details.IsPriceFixated)
                {
                    commodity.Flags |= CommodityFlagsEnum.COMMODITY_SAW_ANN_PRICE_FIXATED;
                }
                else
                {
                    commodity.Flags |= CommodityFlagsEnum.COMMODITY_SAW_ANN_PRICE_FLOAT;
                }
            }

            Logger.Debug("pool.commodities", () => String.Format("Creating annotated commodity symbol {0}\r\n{1}", commodity.BaseSymbol, details));

            AnnotatedCommodities.Add(new Tuple <string, Annotation>(commodity.BaseSymbol, details), annotatedCommodity);

            return(annotatedCommodity);
        }