public static List <AccountStats> AddAcountStats(List <TradeRecord> trades, int accountNumber, int leverage) { var dailyNavs = unitOfWork.DailyNAVRepository.GetAll().Where(x => x.AccountNumber == accountNumber).FirstOrDefault(); var AccountStatsList = new List <AccountStats>(); for (int i = 1; i <= 44; i++) { AccountStats accountStats = new AccountStats(); accountStats.AccountId = i.ToString(); accountStats.Balance = MathCalculations.GenerateRandomNo(6); accountStats.BestPL = CalculateBestPLForTimeline(i, trades); accountStats.CreatedBy = MathCalculations.GenerateRandomNo(2); accountStats.Leverage = leverage; accountStats.CreatedOn = DateTime.UtcNow.ToString(); accountStats.DD = dailyNavs == null ? 0 : CalculateDDForTimeline(i, dailyNavs); accountStats.NAV = dailyNavs == null ? 0 : CalculateNavForTimeline(i, dailyNavs); //Math.Round(dailyNavs.NAVByDate[dailyNavs.NAVByDate.Count - 1].NAV, 2); accountStats.ROI = dailyNavs == null ? 0 : CalculateROIForTimeline(i, dailyNavs, trades); accountStats.SharpRatio = dailyNavs == null ? 0 : CalculateSharpRatioForTimeline(i, dailyNavs); accountStats.Status = true; accountStats.TimeLineId = i; //accountStats.UpdatedBy = MathCalculations.GenerateRandomNo(2); //accountStats.UpdatedOn = GenerateRandomDate(); accountStats.WINRate = CalculateWINForTimeline(i, trades); accountStats.WorstPL = CalculateWorstPLForTimeline(i, trades); //_unitOfWork.AccountStatsRepository.Add(accountStats); AccountStatsList.Add(accountStats); } return(AccountStatsList); }
public List <AccountStats> AddDummyAcountStats(string name) { var AccountStatsList = new List <AccountStats>(); for (int i = 1; i <= 45; i++) { AccountStats accountStats = new AccountStats(); accountStats.AccountId = i.ToString(); accountStats.StatringBalance = MathCalculations.GenerateRandomNo(6); accountStats.BestPL = MathCalculations.GenerateRandomNo(4).ToString(); accountStats.CreatedBy = name; accountStats.Leverage = i; accountStats.CreatedOn = GenerateRandomDate(); accountStats.DD = MathCalculations.GenerateRandomNo(3); accountStats.NAV = MathCalculations.GenerateRandomNo(3); accountStats.ROI = MathCalculations.GenerateRandomNo(3); accountStats.SharpRatio = MathCalculations.GenerateRandomNo(6); accountStats.Status = true; //accountStats.DD = MathCalculations.GenerateRandomNo(2); accountStats.TimeLineId = i; accountStats.UpdatedBy = MathCalculations.GenerateRandomNo(2); accountStats.UpdatedOn = GenerateRandomDate(); accountStats.WINRate = MathCalculations.GenerateRandomNo(3); accountStats.WorstPL = MathCalculations.GenerateRandomNo(2).ToString(); //_unitOfWork.AccountStatsRepository.Add(accountStats); AccountStatsList.Add(accountStats); } return(AccountStatsList); }
public async Task <bool> CreateAccountStats(AppUser user) { try { AccountStats accountStats = new AccountStats { UserId = Guid.Parse(user.Id), TotalPoints = 0, TotalHours = 0, TotalFlights = 0, FavouriteRoute = Guid.Empty, FavouriteAircraft = Guid.Empty, LastRouteId = Guid.Empty, LastAircraftId = Guid.Empty }; var result = await _context.AccountStats.AddAsync(accountStats); if (result != null) { int saveResult = await _context.SaveChangesAsync(); return(true); } else { return(false); } } catch (Exception ex) { return(false); } }
public AccountStatsModel ToAccountDailyStatsModel(AccountStats dailyStats) { if (dailyStats == null) { return(new AccountStatsModel()); } return(new AccountStatsModel { AccountStatsId = dailyStats.Id.ToString(), AccountId = dailyStats.AccountId.ToString(), TimeLineId = dailyStats.TimeLineId.Encrypt(), AvgTrade = dailyStats.AvgTrade, ROI = dailyStats.ROI, WINRate = dailyStats.WINRate, DD = dailyStats.DD, Leverage = dailyStats.Leverage, SharpRatio = dailyStats.SharpRatio, StatringBalance = dailyStats.StatringBalance, Deposit = dailyStats.Deposit, Withdrawn = dailyStats.Withdrawn, ProfitLoss = dailyStats.ProfitLoss, NAV = dailyStats.NAV, BestPL = dailyStats.BestPL, WorstPL = dailyStats.WorstPL, CreatedBy = dailyStats.CreatedBy, CreatedOn = dailyStats.CreatedOn.ToString(), UpdatedBy = dailyStats.UpdatedBy, UpdatedOn = dailyStats.UpdatedOn.ToString(), Status = dailyStats.Status }); }
public static List <AccountStats> AddAcountStats(List <TradeRecord> trades, int accountNumber, int leverage, ObjectId datasourceId) { //try //{ var dailyNavs = unitOfWork.DailyEquityRepository.GetAll().Where(x => x.AccountNumber == accountNumber).FirstOrDefault(); var AccountStatsList = new List <AccountStats>(); var datasource = _eLTService.getDatasourceById(datasourceId); foreach (TimeLineEnum timeline in Enum.GetValues(typeof(TimeLineEnum))) { if ((int)timeline == 45) { } AccountStats accountStats = new AccountStats(); accountStats.AccountId = timeline; accountStats.StatringBalance = AccountStatsCalculations.GetStartingBalanceByTimeline((int)timeline, dailyNavs, trades); accountStats.Deposit = AccountStatsCalculations.GetDepositsByTimeline((int)timeline, dailyNavs, trades); accountStats.Withdrawn = AccountStatsCalculations.GetWithdrawnByTimeline((int)timeline, dailyNavs, trades); accountStats.ProfitLoss = AccountStatsCalculations.GetProfitLossByTimeline((int)timeline, dailyNavs, trades); accountStats.BestPL = AccountStatsCalculations.CalculateBestPLForTimeline((int)timeline, trades); accountStats.CreatedBy = accountNumber; accountStats.Leverage = leverage; accountStats.CreatedOn = DateTime.UtcNow.ToString(); accountStats.DD = dailyNavs == null ? 0 : AccountStatsCalculations.CalculateDDForTimeline((int)timeline, dailyNavs, trades); accountStats.NAV = dailyNavs == null ? 0 : AccountStatsCalculations.CalculateNavForTimeline((int)timeline, dailyNavs); //Math.Round(dailyNavs.NAVByDate[dailyNavs.NAVByDate.Count - 1].NAV, 2); accountStats.ROI = dailyNavs == null ? 0 : AccountStatsCalculations.CalculateROIForTimeline((int)timeline, dailyNavs, trades); accountStats.SharpRatio = dailyNavs == null ? 0 : AccountStatsCalculations.CalculateSharpRatioForTimeline((int)timeline, dailyNavs, datasourceId, datasource, trades); accountStats.AvgTrade = dailyNavs == null ? 0 : AccountStatsCalculations.CalculateAvgTradesForTimeline((int)timeline, trades); accountStats.Status = true; accountStats.TimeLineId = (int)timeline; //accountStats.UpdatedBy = MathCalculations.GenerateRandomNo(2); //accountStats.UpdatedOn = GenerateRandomDate(); accountStats.WINRate = AccountStatsCalculations.CalculateWINForTimeline((int)timeline, trades); accountStats.WorstPL = AccountStatsCalculations.CalculateWorstPLForTimeline((int)timeline, trades); //_unitOfWork.AccountStatsRepository.Add(accountStats); AccountStatsList.Add(accountStats); } return(AccountStatsList); //} //catch (Exception ex) //{ // throw; //} }
void ProcessIncomingDataStream(OpenApiMessagesFactory msgFactory, byte[] rawData) { var _msg = msgFactory.GetMessage(rawData); #if TRACE_DATA_INCOMING if (isDebugIsOn) { //if (_msg.PayloadType == (int)OpenApiLib.ProtoOAPayloadType.OA_SPOT_EVENT) //{ // Console.Write("."); //} //else { Console.WriteLine("ProcessIncomingDataStream() received: " + OpenApiMessagesPresentation.ToString(_msg)); } } #endif if (!_msg.HasPayload) { return; } var lastLastHeartBeatReceived = lastHeartBeatReceived; lastHeartBeatReceived = DateTime.UtcNow; switch (_msg.PayloadType) { case (int)OpenApiLib.ProtoPayloadType.PING_RES: { var payload = msgFactory.GetPingResponse(rawData); if (payload.HasTimestamp) { ServerTime = new DateTime((long)payload.Timestamp); Console.WriteLine("[time] " + Server.Time.ToShortTimeString()); //Server.Time = DateTime.FromFileTimeUtc(); } break; } case (int)OpenApiLib.ProtoPayloadType.HEARTBEAT_EVENT: //var _payload_msg = msgFactory.GetHeartbeatEvent(rawData); var timeBetween = (lastHeartBeatReceived - lastLastHeartBeatReceived).TotalSeconds; Console.WriteLine($"<3 ({timeBetween.ToString("N1")}s)"); break; case (int)OpenApiLib.ProtoOAPayloadType.OA_EXECUTION_EVENT: { var msg = ""; var _payload_msg = msgFactory.GetExecutionEvent(rawData); if (_payload_msg.HasReasonCode) { var executionType = _payload_msg.ExecutionType.ToString().Replace("OA_ORDER_", ""); var reason = _payload_msg.HasReasonCode ? $"({_payload_msg.ReasonCode})" : ""; msg += $"*** [EXECUTION: {executionType} {reason}] *** "; } if (_payload_msg.HasOrder) { orderId = _payload_msg.Order.OrderId; var slPrice = _payload_msg.Order.HasStopLossPrice ? " sl:" + _payload_msg.Order.StopLossPrice : ""; var tpPrice = _payload_msg.Order.HasTakeProfitPrice ? " tp:" + _payload_msg.Order.TakeProfitPrice : ""; var limitPrice = _payload_msg.Order.HasLimitPrice ? " limit:" + _payload_msg.Order.LimitPrice : ""; var stopPrice = _payload_msg.Order.HasStopPrice ? " stop:" + _payload_msg.Order.StopPrice : ""; msg += $"[ORDER {orderId}] {_payload_msg.Order.TradeSide} {_payload_msg.Order.RequestedVolume} {_payload_msg.Order.SymbolName} {limitPrice}{stopPrice} {slPrice}{tpPrice}"; } else if (_payload_msg.HasPosition) { positionId = _payload_msg.Position.PositionId; var p = _payload_msg.Position; msg += $"[POSITION {positionId}] {p.TradeSide} {p.Volume} {p.SymbolName} @ {p.EntryPrice}"; } else { } Console.WriteLine(msg); } break; case (int)OpenApiLib.ProtoOAPayloadType.OA_AUTH_RES: //var payload = msgFactory.GetAuthorizationResponse(rawData); IsAuthorized = true; Console.WriteLine("[authorized]"); break; case (int)OpenApiLib.ProtoOAPayloadType.OA_SPOT_EVENT: { if (rawData.Length > 40) { Console.WriteLine("================= GOT LONG SPOT EVENT: " + rawData.Length + " ==================="); } var payload = msgFactory.GetSpotEvent(rawData); WriteUnknownFields(_msg.PayloadType, payload); //var timestamp = timestampField.VarintList[0]; //var time = new DateTime(1970, 1, 1) + TimeSpan.FromMilliseconds(timestamp); var time = new DateTime(1970, 1, 1) + TimeSpan.FromMilliseconds(payload.Timestamp); if (payload.TrendbarCount > 0 || payload.TrendbarList.Count > 0) { foreach (var bar in payload.TrendbarList) { Console.WriteLine($"*********************** TRENDBAR: {bar.Period} o:{bar.Open} h:{bar.High} l:{bar.Low} c:{bar.Close} [v:{bar.Volume}]"); if (bar.Period == ProtoOATrendbarPeriod.H1) { AccountStats.Increment(StatEventType.H1Bar); } else if (bar.Period == ProtoOATrendbarPeriod.H1) { AccountStats.Increment(StatEventType.H1Bar); } else { AccountStats.Increment(StatEventType.Other); } throw new Exception("***** got a trendbar! Celebrate!"); } } var tick = new SymbolTick { Symbol = payload.SymbolName, Ask = payload.HasAskPrice ? payload.AskPrice : double.NaN, Bid = payload.HasBidPrice ? payload.BidPrice : double.NaN, Time = time }; if (payload.HasAskPrice || payload.HasBidPrice) { AccountStats.Increment(StatEventType.Tick); #if DEBUG //if (AccountStats.Totals.Ticks % 100 == 0) //{ // Debug.WriteLine($"[stats] {AccountStats.Totals.Ticks} ticks received"); //} #endif } var symbol = (ISymbolInternal)GetSymbol(payload.SymbolName); symbol.OnTick(tick); break; } case (int)OpenApiLib.ProtoOAPayloadType.OA_SUBSCRIBE_FOR_SPOTS_RES: { var payload = msgFactory.GetSubscribeForSpotsResponse(rawData); uint?subId = payload.HasSubscriptionId ? (uint?)payload.SubscriptionId : null; #if TRACE_SUBSCRIPTIONS Console.WriteLine($"[SUBSCRIBED] {subId}"); #endif #if GET_SUBS_AFTER_SUB SendGetSpotSubscriptionReq(subId); SendGetAllSpotSubscriptionsReq(); #endif WriteUnknownFields(_msg.PayloadType, payload); break; } case (int)OpenApiLib.ProtoOAPayloadType.OA_UNSUBSCRIBE_FROM_SPOTS_RES: { var payload = msgFactory.GetUnsubscribeFromSpotsResponse(rawData); //uint? subId = payload. ? (uint?)payload.SubscriptionId : null; Debug.WriteLine($"[UNSUBSCRIBED]"); #if GET_SUBS_AFTER_SUB SendGetAllSpotSubscriptionsReq(); #endif WriteUnknownFields(_msg.PayloadType, payload); break; } case (int)OpenApiLib.ProtoOAPayloadType.OA_GET_ALL_SPOT_SUBSCRIPTIONS_RES: { #if TRACE_SUBSCRIPTIONS Debug.WriteLine($"--- GET_ALL_SPOT_SUBSCRIPTIONS_RES: ---"); var payload = msgFactory.GetGetAllSpotSubscriptionsResponse(rawData); foreach (var x in payload.SpotSubscriptionsList) { foreach (var y in x.SubscribedSymbolsList) { Debug.Write($" - subscription {x.SubscriptionId}: {y.SymbolName} periods: "); foreach (var z in y.PeriodList) { Debug.Write($" {z.ToString()}"); } Debug.WriteLine(); } } Debug.WriteLine($"--------------------------------------- "); #endif } break; case (int)OpenApiLib.ProtoOAPayloadType.OA_GET_SPOT_SUBSCRIPTION_RES: { #if TRACE_SUBSCRIPTIONS var payload = msgFactory.GetGetSpotSubscriptionResponse(rawData); Debug.WriteLine($"--- GET_SPOT_SUBSCRIPTION_RES for subscription {payload.SpotSubscription.SubscriptionId}: --- "); foreach (var y in payload.SpotSubscription.SubscribedSymbolsList) { Debug.Write($" - {y.SymbolName} periods: "); foreach (var z in y.PeriodList) { Debug.Write($"{z.ToString()} "); } Debug.WriteLine(); } Debug.WriteLine($"------------------------------------------------------ "); #endif } break; case (int)OpenApiLib.ProtoOAPayloadType.OA_SUBSCRIBE_FOR_TRADING_EVENTS_RES: { var payload = msgFactory.GetSubscribeForTradingEventsResponse(rawData); Console.WriteLine("[TRADE EVENTS] SUBSCRIBED"); } break; default: Console.WriteLine("UNHANDLED MESSAGE: " + _msg.PayloadType); break; } ; }
public void Arrange() { _accountStats = new AccountStats { AccountId = 10, OrganisationCount = 3, PayeSchemeCount = 4, TeamMemberCount = 8 }; _testTask = new AccountTask { Type = "Test", ItemsDueCount = 2 }; _tasks = new List <AccountTask> { _testTask }; _mediator = new Mock <IMediator>(); _mediator.Setup(m => m.SendAsync(It.Is <GetEmployerAccountByHashedIdQuery>(q => q.HashedAccountId == HashedAccountId))) .ReturnsAsync(new GetEmployerAccountByHashedIdResponse { Account = new Account { HashedId = HashedAccountId, Id = AccountId, Name = "Account 1" } }); _mediator.Setup(x => x.SendAsync(It.IsAny <GetAccountTasksQuery>())) .ReturnsAsync(new GetAccountTasksResponse { Tasks = _tasks }); _mediator.Setup(m => m.SendAsync(It.Is <GetUserAccountRoleQuery>(q => q.ExternalUserId == UserId))) .ReturnsAsync(new GetUserAccountRoleResponse { UserRole = Role.Owner }); _mediator.Setup(m => m.SendAsync(It.Is <GetAccountEmployerAgreementsRequest>(q => q.HashedAccountId == HashedAccountId))) .ReturnsAsync(new GetAccountEmployerAgreementsResponse { EmployerAgreements = new List <EmployerAgreementStatusDto> { new EmployerAgreementStatusDto { Pending = new PendingEmployerAgreementDetailsDto { Id = 123 } }, new EmployerAgreementStatusDto { Pending = new PendingEmployerAgreementDetailsDto { Id = 124 } }, new EmployerAgreementStatusDto { Pending = new PendingEmployerAgreementDetailsDto { Id = 125 } }, new EmployerAgreementStatusDto { Pending = new PendingEmployerAgreementDetailsDto { Id = 126 } }, new EmployerAgreementStatusDto { Signed = new SignedEmployerAgreementDetailsDto { Id = 111 } }, new EmployerAgreementStatusDto { Signed = new SignedEmployerAgreementDetailsDto { Id = 112 } }, new EmployerAgreementStatusDto { Signed = new SignedEmployerAgreementDetailsDto { Id = 113 } } } }); _mediator.Setup(x => x.SendAsync(It.IsAny <GetTeamMemberQuery>())) .ReturnsAsync(new GetTeamMemberResponse { User = new MembershipView { FirstName = "Bob" } }); _mediator.Setup(x => x.SendAsync(It.IsAny <GetAccountStatsQuery>())) .ReturnsAsync(new GetAccountStatsResponse { Stats = _accountStats }); _currentDateTime = new Mock <ICurrentDateTime>(); _accountApiClient = new Mock <IAccountApiClient>(); _accountApiClient.Setup(c => c.GetAccount(HashedAccountId)).ReturnsAsync(new AccountDetailViewModel { ApprenticeshipEmployerType = "Levy" }); _mapper = new Mock <IMapper>(); _orchestrator = new EmployerTeamOrchestrator(_mediator.Object, _currentDateTime.Object, _accountApiClient.Object, _mapper.Object); }
public void LoadCb(string data) { var dataJson = SimpleJSON.JSON.Parse(data); if (dataJson["error"] != null) Debug.Log(dataJson["error"]); else { Debug.Log(dataJson["account"]["PlayerName"].Value); _playerName = dataJson["account"]["PlayerName"].Value; _playerLevel = int.Parse(dataJson["account"]["Level"].Value); _softCurrency = int.Parse(dataJson["account"]["SoftCurrency"].Value); _hardCurrency = int.Parse(dataJson["account"]["HardCurrency"].Value); _maxStamina = int.Parse(dataJson["account"]["Stamina"].Value); _currentStamina = 0;// int.Parse(d["CurrentStamina"].ToString()); _currentExp = 0;//int.Parse(dataJson["account"]["CurrentExp"].Value); _expToNextLevel = 0; //int.Parse(d["ExpToNextLevel"].ToString()); _rechargeTime = 0;// float.Parse(d["floatTime"].ToString()); _stats = new AccountStats(int.Parse(dataJson["account"]["LogDays"].Value), int.Parse(dataJson["account"]["TotalLogDays"].Value), dataJson["account"]["LastLogDay"] == null ? DateTime.Now : DateTime.Parse(dataJson["account"]["LastLogDay"].Value)); _inventory.LoadInventory(_playerId); } }