/// <summary>
 /// Merges the marked data into candle stream.
 /// </summary>
 /// <param name="marketDelta">Market delta stream data.</param>
 public void MergeDelta(MarketSummaryProvider marketDelta)
 {
     if (marketDelta != null)
     {
         _lock.EnterWriteLock();
         try
         {
             var reference = TimeCalculator.GetReference(marketDelta.Sample, _spanMinutes);
             var candle    = _candles.LastOrDefault(x => x.Sample == reference);
             if (candle == null)
             {
                 if ((candle = _candles.LastOrDefault()) != null)
                 {
                     do
                     {
                         _candles.Add(candle = new MarketCandle {
                             Sample = candle.Sample.AddMinutes(_spanMinutes)
                         });
                     }while (candle.Sample < reference);
                 }
                 else
                 {
                     _candles.Add(candle = new MarketCandle {
                         Sample = reference
                     });
                 }
                 candle.Open  = marketDelta.Last.Value;
                 candle.Low   = marketDelta.Last.Value;
                 candle.High  = marketDelta.Last.Value;
                 candle.Close = marketDelta.Last.Value;
             }
             if (marketDelta.Last != null)
             {
                 if (candle.Low > marketDelta.Last)
                 {
                     candle.Low = marketDelta.Last.Value;
                 }
                 if (candle.High < marketDelta.Last)
                 {
                     candle.High = marketDelta.Last.Value;
                 }
                 candle.Close = marketDelta.Last.Value;
             }
             while (_candles.Count > _seriesLimit / _spanMinutes)
             {
                 _candles.RemoveAt(0);
             }
         }
         finally
         { _lock.ExitWriteLock(); }
     }
 }
Exemplo n.º 2
0
 /// <summary>
 /// Updates the received changes in market data.
 /// </summary>
 /// <param name="marketDelta">Market delta stream data.</param>
 public void UpdateMarketDelta(MarketSummaryProvider marketDelta)
 {
     if (marketDelta != null && Name == marketDelta.MarketName)
     {
         _candles1Mins.MergeDelta(marketDelta);
         _candles5Mins.MergeDelta(marketDelta);
         _candles15Mins.MergeDelta(marketDelta);
         _candles30Mins.MergeDelta(marketDelta);
         var candle1min = _candles1Mins.Last;
         Console.WriteLine($"[{candle1min.Sample}] Candle: 1 Min {candle1min.Open} - [{candle1min.Low} - {candle1min.High}] - {candle1min.Close}");
         var candle5min = _candles5Mins.Last;
         Console.WriteLine($"[{candle5min.Sample}] Candle: 5 Min {candle5min.Open} - [{candle5min.Low} - {candle5min.High}] - {candle5min.Close}");
         var candle15min = _candles15Mins.Last;
         Console.WriteLine($"[{candle15min.Sample}] Candle: 15 Min {candle15min.Open} - [{candle15min.Low} - {candle15min.High}] - {candle15min.Close}");
         var candle30min = _candles30Mins.Last;
         Console.WriteLine($"[{candle30min.Sample}] Candle: 30 Min {candle30min.Open} - [{candle30min.Low} - {candle30min.High}] - {candle30min.Close}");
     }
 }