Ejemplo n.º 1
0
        // funkcja pomocnicza konwertująca dane z Fixml.MDEntry na DTO.MarketStatsData
        private static MarketStatsData MarketData_GetStatsData(MDEntry entry)
        {
            var stats = new MarketStatsData();

            switch (entry.EntryType)
            {
            case MDEntryType.Vol:
                stats.TotalVolume   = entry.Size;
                stats.TotalTurnover = entry.Turnover;
                break;

            case MDEntryType.Open:
                stats.OpeningPrice    = entry.Price;
                stats.OpeningTurnover = entry.Turnover ?? 0;
                break;

            case MDEntryType.Close:
                stats.ClosingPrice    = entry.Price;
                stats.ClosingTurnover = entry.Turnover ?? 0;
                break;

            case MDEntryType.High:
                stats.HighestPrice = entry.Price;
                break;

            case MDEntryType.Low:
                stats.LowestPrice = entry.Price;
                break;

            case MDEntryType.Ref:
                stats.ReferencePrice = entry.Price;
                break;
            }
            return(stats);
        }
Ejemplo n.º 2
0
        // funkcja pomocnicza konwertująca obiekt Fixml.MDEntry na DTO.MarketData
        private static MarketData MarketData_GetData(MDEntry entry)
        {
            var data = new MarketData();

            data.Instrument = entry.Instrument.Convert();
            switch (entry.EntryType)
            {
            case MDEntryType.Buy: data.BuyOffer = MarketData_GetOfferData(entry); break;

            case MDEntryType.Sell: data.SellOffer = MarketData_GetOfferData(entry); break;

            case MDEntryType.Trade: data.Trade = MarketData_GetTradeData(entry); break;

            case MDEntryType.Lop: data.OpenInt = entry.Size; break;

            case MDEntryType.Vol:
            case MDEntryType.Open:
            case MDEntryType.Close:
            case MDEntryType.High:
            case MDEntryType.Low:
            case MDEntryType.Ref: data.Stats = MarketData_GetStatsData(entry); break;

            default: return(null);                      // pozostałe pomijamy
            }
            return(data);
        }
        protected override QuotSnapExtInfo300611 deserialize(byte[] bytes)
        {
            if (bytes == null || bytes.Length < 4)
            {
                return(null);
            }
            QuotSnapExtInfo300611 rtn = new QuotSnapExtInfo300611();

            Array.Reverse(bytes, 0, 4);
            rtn.NoMDEntries = BitConverter.ToUInt32(bytes, 0);
            if (rtn.NoMDEntries > 0)
            {
                rtn.MDEntries = new MDEntry[rtn.NoMDEntries];
                int startIndex = 4;

                for (int entryIndex = 0; entryIndex < rtn.NoMDEntries; entryIndex++)
                {
                    if (bytes.Length - startIndex >= mdEntrySize)
                    {
                        var     mdEntryBytes = bytes.Skip(startIndex).Take(mdEntrySize).ToArray();
                        MDEntry mdEntry      = BigEndianStructHelper <MDEntry> .BytesToStruct(mdEntryBytes, MsgConsts.MsgEncoding);

                        startIndex += mdEntrySize;
                        rtn.MDEntries[entryIndex] = mdEntry;
                    }
                    else
                    {
                        return(null);
                    }
                }
            }
            return(rtn);
        }
Ejemplo n.º 4
0
        // funkcja pomocnicza konwertująca dane z Fixml.MDEntry na DTO.MarketTradeData
        private static MarketTradeData MarketData_GetTradeData(MDEntry entry)
        {
            var trade = new MarketTradeData();

            trade.Time     = entry.DateTime;
            trade.Price    = (decimal)entry.Price;
            trade.Quantity = entry.Size ?? 0;              // może być null dla notowań indeksów
            return(trade);
        }
        protected override QuotSnapExtInfo300111 deserialize(byte[] bytes)
        {
            if (bytes == null || bytes.Length < 4)
            {
                return(null);
            }
            QuotSnapExtInfo300111 rtn = new QuotSnapExtInfo300111();

            Array.Reverse(bytes, 0, 4);
            rtn.NoMDEntries = BitConverter.ToUInt32(bytes, 0);
            if (rtn.NoMDEntries > 0)
            {
                rtn.MDEntries = new MDEntry[rtn.NoMDEntries];
                int startIndex = 4;

                for (int entryIndex = 0; entryIndex < rtn.NoMDEntries; entryIndex++)
                {
                    if (bytes.Length - startIndex >= mdEntrySize)
                    {
                        var     mdEntryBytes = bytes.Skip(startIndex).Take(mdEntrySize).ToArray();
                        MDEntry mdEntry      = new MDEntry();
                        mdEntry.Entry = BigEndianStructHelper <MDEntryWithoutOrders> .BytesToStruct(mdEntryBytes, MsgConsts.MsgEncoding);

                        startIndex += mdEntrySize;
                        if (mdEntry.Entry.NoOrders > 0)
                        {
                            if (bytes.Length - startIndex >= orderSize * mdEntry.Entry.NoOrders)
                            {
                                mdEntry.Orders = new Order[mdEntry.Entry.NoOrders];
                                for (int orderIndex = 0; orderIndex < mdEntry.Entry.NoOrders; orderIndex++)
                                {
                                    var   orderBytes = bytes.Skip(startIndex).Take(orderSize).ToArray();
                                    Order order      = BigEndianStructHelper <Order> .BytesToStruct(orderBytes, MsgConsts.MsgEncoding);

                                    mdEntry.Orders[orderIndex] = order;
                                    startIndex += orderSize;
                                }
                            }
                            else
                            {
                                return(null);
                            }
                        }

                        rtn.MDEntries[entryIndex] = mdEntry;
                    }
                    else
                    {
                        return(null);
                    }
                }
            }
            return(rtn);
        }
Ejemplo n.º 6
0
        // funkcja pomocnicza konwertująca dane z Fixml.MDEntry na DTO.MarketOfferData
        private static MarketOfferData MarketData_GetOfferData(MDEntry entry)
        {
            var offer = new MarketOfferData();

            offer.Level  = (int)entry.Level;
            offer.Update = (entry.UpdateAction != MDUpdateAction.New);
            if (entry.UpdateAction != MDUpdateAction.Delete)
            {
                switch (entry.PriceStr)
                {
                case "PKC": offer.PriceType = PriceType.PKC; break;

                case "PCR": offer.PriceType = PriceType.PCR; break;

                case "PCRO": offer.PriceType = PriceType.PCRO; break;
                }
                offer.PriceLimit = entry.Price;
                offer.Volume     = (uint)entry.Size;
                offer.Count      = (uint)entry.Orders;
            }
            return(offer);
        }