コード例 #1
0
        private static OrderLog OrdLogConverter(OrdLogEntry ol)
        {
            var states = new HashSet <OrderLogStates>();

            if (ol.Flags.HasFlag(OrdLogFlags.NonSystem) || ol.Flags.HasFlag(OrdLogFlags.Snapshot))
            {
                states.Add(OrderLogStates.NonSystem);
            }
            if (ol.Flags.HasFlag(OrdLogFlags.Add))
            {
                states.Add(OrderLogStates.Add);
            }
            if (ol.Flags.HasFlag(OrdLogFlags.Fill))
            {
                states.Add(OrderLogStates.Fill);
            }
            if (ol.Flags.HasFlag(OrdLogFlags.Buy))
            {
                states.Add(OrderLogStates.Buy);
            }
            if (ol.Flags.HasFlag(OrdLogFlags.Sell))
            {
                states.Add(OrderLogStates.Sell);
            }

            return(new OrderLog
            {
                States = states,
                Time = ol.DateTime,
                OrderId = ol.OrderId,
                Price = ol.Price,
                Volume = ol.Amount,
                VolumeRest = ol.AmountRest,
                TradeId = ol.DealId,
                TradePrice = ol.DealPrice
            });
        }
コード例 #2
0
        // **********************************************************************

        public void Write(DateTime dateTime, OrdLogEntry entry)
        {
            dw.WriteRecHeader(sid, dateTime);

            // ------------------------------------------------------------

            long             milliseconds = DateTimeHelper.ToMs(entry.DateTime);
            OrdLogEntryFlags flags        = OrdLogEntryFlags.None;

            // ------------------------------------------------------------

            if (lastMilliseconds != milliseconds)
            {
                flags |= OrdLogEntryFlags.DateTime;
            }

            if (lastOrderId != entry.OrderId)
            {
                flags |= OrdLogEntryFlags.OrderId;
            }

            if (lastPrice != entry.Price)
            {
                flags |= OrdLogEntryFlags.Price;
            }

            if (lastAmount != entry.Amount)
            {
                flags |= OrdLogEntryFlags.Amount;
            }

            if ((entry.Flags & OrdLogFlags.Fill) != 0)
            {
                if (lastAmountRest != entry.AmountRest)
                {
                    flags |= OrdLogEntryFlags.AmountRest;
                }

                if (lastDealId != entry.DealId)
                {
                    flags |= OrdLogEntryFlags.DealId;
                }

                if (lastDealPrice != entry.DealPrice)
                {
                    flags |= OrdLogEntryFlags.DealPrice;
                }

                if (lastOI != entry.OI)
                {
                    flags |= OrdLogEntryFlags.OI;
                }
            }

            // ------------------------------------------------------------

            dw.Write((byte)flags);

            // ------------------------------------------------------------

            dw.Write((ushort)entry.Flags);

            if ((flags & OrdLogEntryFlags.DateTime) != 0)
            {
                dw.WriteGrowing(milliseconds, ref lastMilliseconds);
            }

            if ((flags & OrdLogEntryFlags.OrderId) != 0)
            {
                if ((entry.Flags & OrdLogFlags.Add) != 0)
                {
                    dw.WriteGrowing(entry.OrderId, ref lastOrderId);
                }
                else
                {
                    dw.WriteLeb128(entry.OrderId - lastOrderId);
                }
            }

            if ((flags & OrdLogEntryFlags.Price) != 0)
            {
                dw.WriteLeb128(entry.Price - lastPrice);
                lastPrice = entry.Price;
            }

            if ((flags & OrdLogEntryFlags.Amount) != 0)
            {
                dw.WriteLeb128(entry.Amount);
                lastAmount = entry.Amount;
            }

            if ((flags & OrdLogEntryFlags.AmountRest) != 0)
            {
                dw.WriteLeb128(entry.AmountRest);
                lastAmountRest = entry.AmountRest;
            }

            if ((flags & OrdLogEntryFlags.DealId) != 0)
            {
                dw.WriteGrowing(entry.DealId, ref lastDealId);
            }

            if ((flags & OrdLogEntryFlags.DealPrice) != 0)
            {
                dw.WriteLeb128(entry.DealPrice - lastDealPrice);
                lastDealPrice = entry.DealPrice;
            }

            if ((flags & OrdLogEntryFlags.OI) != 0)
            {
                dw.WriteLeb128(entry.OI - lastOI);
                lastOI = entry.OI;
            }

            // ------------------------------------------------------------
        }
コード例 #3
0
    // **********************************************************************

    public void Write(DateTime dateTime, OrdLogEntry entry)
    {
      dw.WriteRecHeader(sid, dateTime);

      // ------------------------------------------------------------

      long milliseconds = DateTimeHelper.ToMs(entry.DateTime);
      OrdLogEntryFlags flags = OrdLogEntryFlags.None;

      // ------------------------------------------------------------

      if(lastMilliseconds != milliseconds)
        flags |= OrdLogEntryFlags.DateTime;

      if(lastOrderId != entry.OrderId)
        flags |= OrdLogEntryFlags.OrderId;

      if(lastPrice != entry.Price)
        flags |= OrdLogEntryFlags.Price;

      if(lastAmount != entry.Amount)
        flags |= OrdLogEntryFlags.Amount;

      if((entry.Flags & OrdLogFlags.Fill) != 0)
      {
        if(lastAmountRest != entry.AmountRest)
          flags |= OrdLogEntryFlags.AmountRest;

        if(lastDealId != entry.DealId)
          flags |= OrdLogEntryFlags.DealId;

        if(lastDealPrice != entry.DealPrice)
          flags |= OrdLogEntryFlags.DealPrice;

        if(lastOI != entry.OI)
          flags |= OrdLogEntryFlags.OI;
      }

      // ------------------------------------------------------------

      dw.Write((byte)flags);

      // ------------------------------------------------------------

      dw.Write((ushort)entry.Flags);

      if((flags & OrdLogEntryFlags.DateTime) != 0)
        dw.WriteGrowing(milliseconds, ref lastMilliseconds);

      if((flags & OrdLogEntryFlags.OrderId) != 0)
      {
        if((entry.Flags & OrdLogFlags.Add) != 0)
          dw.WriteGrowing(entry.OrderId, ref lastOrderId);
        else
          dw.WriteLeb128(entry.OrderId - lastOrderId);
      }

      if((flags & OrdLogEntryFlags.Price) != 0)
      {
        dw.WriteLeb128(entry.Price - lastPrice);
        lastPrice = entry.Price;
      }

      if((flags & OrdLogEntryFlags.Amount) != 0)
      {
        dw.WriteLeb128(entry.Amount);
        lastAmount = entry.Amount;
      }

      if((flags & OrdLogEntryFlags.AmountRest) != 0)
      {
        dw.WriteLeb128(entry.AmountRest);
        lastAmountRest = entry.AmountRest;
      }

      if((flags & OrdLogEntryFlags.DealId) != 0)
        dw.WriteGrowing(entry.DealId, ref lastDealId);

      if((flags & OrdLogEntryFlags.DealPrice) != 0)
      {
        dw.WriteLeb128(entry.DealPrice - lastDealPrice);
        lastDealPrice = entry.DealPrice;
      }

      if((flags & OrdLogEntryFlags.OI) != 0)
      {
        dw.WriteLeb128(entry.OI - lastOI);
        lastOI = entry.OI;
      }

      // ------------------------------------------------------------
    }