private List <MarketOrder> GetAccountHistoryOrders(FarmAccount account) { var context = account.GetContext(); byte[] buffer; context.GetHistoryOrdersCompressed(account.AccountId, startDate, out buffer); if (buffer == null || buffer.Length == 0) { return(null); } try { using (var reader = new SerializationReader(buffer)) { var array = reader.ReadObjectArray(typeof(MarketOrder)); if (array != null && array.Length > 0) { return(array.Cast <MarketOrder>().ToList()); } return(null); } } catch (Exception ex) { Logger.Error("GetHistoryOrdersUncompressed() - serialization error", ex); return(null); } }
private List <MarketOrder> GetAccountOpenedOrders(FarmAccount account) { var context = account.GetContext(); try { List <MarketOrder> orderList; context.GetMarketOrders(account.AccountId, out orderList); return(orderList); } catch (Exception ex) { Logger.Error("Ошибка в GetMarketOrders()", ex); } return(null); }
private AccountTrades MakeAccountTradesRecord(FarmAccount account) { var record = new AccountTrades { AccountTitle = "#" + account.AccountId + " / " + account.UserLogin }; var context = account.GetContext(); if (context == null) { return new AccountTrades { ErrorMessage = "контекст не создан" } } ; var ordersClosed = GetAccountHistoryOrders(account) ?? new List <MarketOrder>(); record.ClosedTrades = ordersClosed.Count; var errors = new List <string>(); var quotes = QuoteStorage.Instance.ReceiveAllData(); record.ClosedVolumeDepo = DalSpot.Instance.CalculateExposure(ordersClosed, quotes, context.AccountInfo.Currency, errors); var ordersOpened = GetAccountOpenedOrders(account); record.OpenedTrades = ordersOpened.Count; record.Exposure = DalSpot.Instance.CalculateExposure(ordersOpened, quotes, context.AccountInfo.Currency, errors); record.OpenProfit = (decimal)DalSpot.Instance.CalculateOpenedPositionsCurrentResult(ordersOpened, quotes, context.AccountInfo.Currency); var lastClosedEnter = ordersClosed.Count > 0 ? ordersClosed.Max(o => o.TimeEnter) : DateTime.MinValue; var lastOpenEnter = ordersOpened.Count > 0 ? ordersOpened.Max(o => o.TimeEnter) : DateTime.MinValue; var maxEnterTime = lastClosedEnter > lastOpenEnter ? lastClosedEnter : lastOpenEnter; record.LastOpen = maxEnterTime == DateTime.MinValue ? (DateTime?)null : maxEnterTime; return(record); }
private List<MarketOrder> GetAccountHistoryOrders(FarmAccount account) { var context = account.GetContext(); byte[] buffer; context.GetHistoryOrdersCompressed(account.AccountId, startDate, out buffer); if (buffer == null || buffer.Length == 0) return null; try { using (var reader = new SerializationReader(buffer)) { var array = reader.ReadObjectArray(typeof(MarketOrder)); if (array != null && array.Length > 0) return array.Cast<MarketOrder>().ToList(); return null; } } catch (Exception ex) { Logger.Error("GetHistoryOrdersUncompressed() - serialization error", ex); return null; } }
private List<MarketOrder> GetAccountOpenedOrders(FarmAccount account) { var context = account.GetContext(); try { List<MarketOrder> orderList; context.GetMarketOrders(account.AccountId, out orderList); return orderList; } catch (Exception ex) { Logger.Error("Ошибка в GetMarketOrders()", ex); } return null; }
private AccountTrades MakeAccountTradesRecord(FarmAccount account) { var record = new AccountTrades { AccountTitle = "#" + account.AccountId + " / " + account.UserLogin }; var context = account.GetContext(); if (context == null) return new AccountTrades { ErrorMessage = "контекст не создан" }; var ordersClosed = GetAccountHistoryOrders(account) ?? new List<MarketOrder>(); record.ClosedTrades = ordersClosed.Count; var errors = new List<string>(); var quotes = QuoteStorage.Instance.ReceiveAllData(); record.ClosedVolumeDepo = DalSpot.Instance.CalculateExposure(ordersClosed, quotes, context.AccountInfo.Currency, errors); var ordersOpened = GetAccountOpenedOrders(account); record.OpenedTrades = ordersOpened.Count; record.Exposure = DalSpot.Instance.CalculateExposure(ordersOpened, quotes, context.AccountInfo.Currency, errors); record.OpenProfit = (decimal) DalSpot.Instance.CalculateOpenedPositionsCurrentResult(ordersOpened, quotes, context.AccountInfo.Currency); var lastClosedEnter = ordersClosed.Count > 0 ? ordersClosed.Max(o => o.TimeEnter) : DateTime.MinValue; var lastOpenEnter = ordersOpened.Count > 0 ? ordersOpened.Max(o => o.TimeEnter) : DateTime.MinValue; var maxEnterTime = lastClosedEnter > lastOpenEnter ? lastClosedEnter : lastOpenEnter; record.LastOpen = maxEnterTime == DateTime.MinValue ? (DateTime?) null : maxEnterTime; return record; }