Ejemplo n.º 1
0
 private void eventNewCandleAnyTimeFrame(int timeFrame, CandleData candle)
 {
     /*if (timeFrame == 1)
      * {
      *  SaveAllTimeFrames();
      * }*/
 }
Ejemplo n.º 2
0
        /// <summary> Получает i-элемент с конца</summary>
        /// <param name="i"></param>
        /// <returns></returns>

        /*public CandleData GetElementFromEnd(int i)
         * {
         *  lock (syncLock)
         *  {
         *      i = this.Collection.Count - i - 1;
         *      if (i < 0)
         *      {
         *          return null;
         *      }
         *      return this.Collection.Count > 0 ? this.Collection.ElementAt(i) : null;
         *  }
         * }*/

        //**************************************************************

        /// <summary> Добавление "первой" свечки в коллекцию, в [0] по индексу.  </summary>
        /// <param name="candle"></param>
        public void InsertFirst(CandleData candle)
        {
            if (candle.IsNull())
            {
                return;
            }
            lock (syncLock)
            {
                this.Collection.Insert(0, candle);
            }
        }
Ejemplo n.º 3
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="candle"></param>
 /// <param name="trade"></param>
 /// <returns></returns>
 private bool addTrade(CandleData candle, Trade trade)
 {
     if (!candle.NewTrade(trade))
     {
         //Если сделка не попала в диапазон min < num < max
         if (!tfControl.CheckTrade(trade))
         {
             return(candle.NewTrade(trade, true));
         }
         return(false);
     }
     return(true);
 }
Ejemplo n.º 4
0
 /// <summary> Удаление свечи </summary>
 /// <param name="candle">Объект свечи</param>
 /// <returns>true - если свеча удалена, иначе false. </returns>
 public bool RemoveCandle(CandleData candle)
 {
     if (candle.IsNull())
     {
         return(false);
     }
     lock (syncLock)
     {
         //candle.ClearKeepTrades();
         var res = this.Collection.Remove(candle);
         this.TimeLastUpdateCollection = DateTime.Now;
         return(res);
     }
 }
Ejemplo n.º 5
0
        /// <summary> Добавить новую сделку в свечку с соответствущим временем. </summary>
        /// <param name="trade">Сделка</param>
        /// <param name="history"> Флаг загрузки исторических сделок </param>
        public bool AddNewTrade(Trade trade, bool history = false)
        {
            if (trade.IsNull())
            {
                return(false);
            }
            DateTime time = CandleData.GetTimeCandle(trade.DateTrade.GetDateTime(), this.TimeFrame);

            if (this.Count > 0)
            {
                lock (syncLock)
                {
                    if (LastFindCandle.NotIsNull())
                    {
                        if (LastFindCandle.Time == time)
                        {
                            LastFindCandle.NewTrade(trade);
                            TimeLastUpdateCollection = DateTime.Now;
                            return(true);
                        }
                    }
                    LastFindCandle = this.Collection.FirstOrDefault(c => c.Time == time);
                    if (LastFindCandle.NotIsNull())
                    {
                        LastFindCandle.NewTrade(trade);
                        TimeLastUpdateCollection = DateTime.Now;
                        return(true);
                    }
                    else
                    {
                        //свеча отсутствует
                        this.AddNewCandle(time);
                        LastFindCandle = this.FirstCandle;
                        LastFindCandle.NewTrade(trade);

                        //Сортируем по времени
                        this.ObjCollection.Collection = this.Collection.OrderByDescending(c => c.Time).ToList();

                        if (!OnNewCandle.IsNull() && !history)
                        {
                            OnNewCandle(this.TimeFrame, LastFindCandle);
                        }

                        //Удаляем свечки c конца, которые выше допустимого кол-ва хранения
                        if (this.Collection.Count > this.CountKeepCandle)
                        {
                            if (this.OnDeleteExtra != null)
                            {
                                OnDeleteExtra(this.LastCandle);
                            }
                            this.Collection.Remove(this.LastCandle);
                        }
                    }
                }
            }
            else
            {
                lock (syncLock)
                {
                    //Добавляем первую свечку в коллекцию
                    this.AddNewCandle(time);
                    this.FirstCandle.NewTrade(trade);

                    if (!OnNewCandle.IsNull() && !history)
                    {
                        OnNewCandle(this.TimeFrame, this.FirstCandle);
                    }
                }
            }
            return(true);
        }