Example #1
0
        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);
            }
        }
Example #2
0
        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);
        }
Example #3
0
        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;
        }