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; } } }