public async Task <long> Save(FarmAccount entity) { _context.Entry(entity).State = entity.Id > 0 ? EntityState.Modified : EntityState.Added; await _context.SaveChangesAsync(); return(entity.Id); }
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); } }
public async Task <long> Delete(long id) { FarmAccount farmAccount = await GetById(id); _context.FarmAccounts.Remove(farmAccount); await _context.SaveChangesAsync(); return(id); }
/// <summary> /// добавление нового аккаунта /// </summary> private static void AddNewAccount(FarmAccountArg e) { CheckValidationSubmitData(e, "Add"); var newAccount = new FarmAccount { AccountId = e.AccountId, TradeEnabled = e.TradeEnabled, UserLogin = e.Login, UserPassword = e.Password }; RobotFarm.Instance.Accounts.Add(newAccount); }
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; } }
/// <summary> /// Обработчик асинхронных действий пользователя с помощью объекта XMLHttpRequest и ответа клиенту в виде простого текста /// </summary> /// <returns>Выполнено ли какое либо асинхронное действие</returns> private static bool AccountAjaxAction(HttpListenerContext context) { switch (context.Request.QueryString["actionAccount"]) { case "check": try { var message = FarmAccount.CheckCredentials(new FarmAccountArg { AccountId = context.Request.QueryString["col0"].ToIntSafe() ?? -1, // ReSharper disable AssignNullToNotNullAttribute Login = Encoding.UTF8.GetString(HttpUtility.UrlDecodeToBytes(context.Request.QueryString["col1"], Encoding.Default)), Password = Encoding.UTF8.GetString(HttpUtility.UrlDecodeToBytes(context.Request.QueryString["col2"], Encoding.Default)), // ReSharper restore AssignNullToNotNullAttribute TradeEnabled = context.Request.QueryString.AllKeys.Contains("col3") && context.Request.QueryString["col3"] == "true" }); WriteTextResponse(context, string.Format("Результат : \"{0}\"", message)); return(true); } catch (ArgumentException ex) { Logger.Error("Ошибка проверки счёта", ex); WriteTextResponse(context, ex.Message); return(true); } catch (Exception ex) { Logger.Error("Ошибка проверки счёта", ex); WriteTextResponse(context, ex.Message); return(true); } case "edit": try { var currentAccountId = context.Request.QueryString["currentAccountId"].ToIntSafe() ?? -1; EditAccount(new FarmAccountArg { CurrentAccountId = currentAccountId, AccountId = context.Request.QueryString["col0"].ToIntSafe() ?? -1, // ReSharper disable AssignNullToNotNullAttribute Login = Encoding.UTF8.GetString(HttpUtility.UrlDecodeToBytes(context.Request.QueryString["col1"], Encoding.Default)), Password = Encoding.UTF8.GetString(HttpUtility.UrlDecodeToBytes(context.Request.QueryString["col2"], Encoding.Default)), // ReSharper restore AssignNullToNotNullAttribute TradeEnabled = context.Request.QueryString.AllKeys.Contains("col3") && context.Request.QueryString["col3"] == "true" }); WriteTextResponse(context, string.Format("Результат : аккаунт \"{0}\" изменён", currentAccountId)); return(true); } catch (ArgumentException ex) { Logger.Error("Ошибка обновления счёта", ex); WriteTextResponse(context, ex.Message); return(true); } catch (Exception ex) { Logger.Error("Ошибка обновления счёта", ex); WriteTextResponse(context, ex.Message); return(true); } } return(false); }
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; }