/// <summary>
        /// This method inserts new open trade into Trades table
        /// </summary>
        /// <param name="trade">trade</param>
        public void InsertTrade(dynamic trade)
        {
            try
            {
                using (var unitOfWork = new EFUnitOfWork())
                {
                    var tradeRepo =
                        new TradeRepository(new EFRepository <Trade>(), unitOfWork);

                    Trade newTrade = new Trade();
                    newTrade.Activation      = trade.activation;
                    newTrade.ClosePrice      = trade.close_price;
                    newTrade.CloseTime       = trade.close_time;
                    newTrade.Cmd             = trade.cmd;
                    newTrade.Comment         = trade.comment;
                    newTrade.Commission      = trade.commission;
                    newTrade.CommissionAgent = trade.commission_agent;
                    newTrade.ConvRates       = trade.conv_rates[0];
                    newTrade.ConvReserv      = trade.conv_reserv;
                    newTrade.Digits          = trade.digits;
                    newTrade.Expiration      = trade.expiration;
                    newTrade.InternalID      = trade.internal_id;
                    newTrade.Login           = trade.login;
                    newTrade.Magic           = trade.magic;
                    newTrade.MarginRate      = trade.margin_rate;
                    newTrade.OpenPrice       = trade.open_price;
                    newTrade.OpenTime        = trade.open_time;
                    newTrade.OrderID         = trade.order;
                    newTrade.Profit          = trade.profit;
                    newTrade.Sl        = trade.sl;
                    newTrade.Spread    = trade.spread;
                    newTrade.State     = trade.state;
                    newTrade.Storage   = trade.storage;
                    newTrade.Symbol    = trade.symbol;
                    newTrade.Taxes     = trade.taxes;
                    newTrade.Timestamp = trade.timestamp;
                    newTrade.Tp        = trade.tp;
                    newTrade.ValueDate = trade.value_date;
                    newTrade.Volume    = trade.volume;

                    //Unix Epoch on January 1st, 1970
                    DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0);
                    newTrade.TradeDateTime = origin.AddSeconds(trade.timestamp);

                    tradeRepo.Add(newTrade);
                    tradeRepo.Save();
                }
            }
            catch (Exception ex)
            {
                CommonErrorLogger.CommonErrorLog(ex, System.Reflection.MethodBase.GetCurrentMethod().Name);
                throw;
            }
        }
        /// <summary>
        /// Add a new trade
        /// </summary>
        /// <param name="trade"></param>
        public void AddTrade(Trade trade)
        {
            try
            {
                using (var unitOfWork = new EFUnitOfWork())
                {
                    var tradeRepo =
                        new TradeRepository(new EFRepository <Trade>(), unitOfWork);

                    tradeRepo.Add(trade);

                    tradeRepo.Save();
                }
            }
            catch (Exception ex)
            {
                CommonErrorLogger.CommonErrorLog(ex, System.Reflection.MethodBase.GetCurrentMethod().Name);
            }
        }
        //Synch Trades table
        public void SaveOpenTrades(List <Trade> lstTrade)
        {
            try
            {
                using (var unitOfWork = new EFUnitOfWork())
                {
                    var tradeRepo =
                        new TradeRepository(new EFRepository <Trade>(), unitOfWork);

                    ObjectSet <Trade> tradeObj =
                        ((CurrentDeskClientsEntities)tradeRepo.Repository.UnitOfWork.Context).Trades;

                    var lstDBTrade = tradeObj.ToList();


                    var lstNewTrades = lstTrade.Where(nt => !lstDBTrade.Select(db => db.OrderID).Contains(nt.OrderID)).ToList();
                    foreach (var trades in lstNewTrades)
                    {
                        tradeRepo.Add(trades);
                    }

                    // Delete close trades
                    var lstOldDBTrades = lstDBTrade.Where(od => !lstTrade.Select(db => db.OrderID).Contains(od.OrderID)).ToList();
                    foreach (var od in lstOldDBTrades)
                    {
                        tradeRepo.Delete(od);
                    }

                    tradeRepo.Save();
                }
            }
            catch (Exception ex)
            {
                CommonErrorLogger.CommonErrorLog(ex, System.Reflection.MethodBase.GetCurrentMethod().Name);
            }
        }