Exemple #1
0
        public override int CalcTicks(decimal lowPrz, decimal highPrz)
        {
            var loRange = GetTickSizeRange(lowPrz);
            var hiRange = GetTickSizeRange(highPrz);

            if (loRange.Index == hiRange.Index)
            {
                return(Convert.ToInt32((highPrz - lowPrz) / loRange.TickSize));
            }
            return(Convert.ToInt32((loRange.EndPrz - lowPrz) / loRange.TickSize) +
                   TickSizeRanges.Skip(loRange.Index + 1).TakeWhile(o => o.Index <= hiRange.Index - 1).Sum(o => o.Qty) +
                   Convert.ToInt32((highPrz - hiRange.StartPrz) / hiRange.TickSize) + 1);
        }
 public LookUpCalculator()
     : base()
 {
     lock (syncObj)
     {
         if (AllTicks == null)
         {
             var prz = 0M;
             TopPrz = TickSizeRanges.Last().StartPrz;
             TopTickSz = TickSizeRanges.Last().TickSize;
             AllTicks = new Dictionary<decimal, int>();
             var count = 1;
             while (prz < TopPrz)
             {
                 AllTicks.Add(prz, count++);
                 prz += GetTickSize(prz);
             }
             TopPrzTicks = count;
         }
     }
 }