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