private int getRandomStock() { Thread.Sleep(50); int stocksNum = StocksManager.getStocksNum(); return(rng.Next(1, stocksNum)); }
public MainViewModel(IEventAggregator eventAggregator) { _eventAggregator = eventAggregator; LoadAppSettings(); SettingsViewModel = new SettingsViewModel(this); StocksManager = new StocksManager(this); }
private async Task <bool> EnsureHistoryLoaded(IStockModel stock) { if (!stock.MonthStatsExpired) { return(true); } try { await StocksManager.CheckMonthStatsAsync(stock).TimeoutAfter(TimeSpan.FromSeconds(5)); } catch (Exception ex) { var errorText = $"Не удалось загрузить историю {stock.Ticker}: {ex.Message}"; MainModel.AddErrorMessage(errorText); Logger?.LogError(ex, errorText); return(false); } if (stock.AvgDayVolumePerMonth < 0.01m) { var errorText = $"Не удалось загрузить историю {stock.Ticker}"; MainModel.AddErrorMessage(errorText); Logger?.LogError(errorText); return(false); } return(true); }
public int findSafestStock() { double minLoss = StocksManager.getStocks().Min(st => st.getLossProbability()); Stock s = StocksManager.getStocks().First <Stock>(st => st.getLossProbability() == minLoss); return(s._id); }
protected override int findRelevantStock(double money, List <double> ARList, List <double> earnLossList, History history, int roundNum) { IEnumerable <Stock> stocks = StocksManager.getStocks(); double maxGrade = -100; int maxGradeStockNum = 0; double currMoney = history.getCurrMoney(); double currAR = money / currMoney; int[] bannedStocks = new int[] { 1, 2, 7, 8 }; ARList.Add(currAR); foreach (Stock s in stocks) { if (bannedStocks.ToList().Find(x => x == s._id) > 0) { continue; } double grade = _stockCalculator.calcStockGrade(s, money, ARList, earnLossList, history, roundNum, _comm); if (grade > maxGrade) { maxGrade = grade; maxGradeStockNum = s._id; } } if (ConfigurationManager.AppSettings["InverseStocks"] == "T") { maxGradeStockNum = StocksManager.getStocksNum() - maxGradeStockNum + 1; } return(maxGradeStockNum); }
public RocketMonitoringStrategy(ISettingsProvider settingsProvider, IMainModel mainModel, StocksManager stocksManager, IEventAggregator2 eventAggregator, ILogger <RocketMonitoringStrategy> logger) { StocksManager = stocksManager; Settings = settingsProvider.Settings; MainModel = mainModel; Logger = logger; eventAggregator.SubscribeOnPublishedThread(this); }
public ArbitrageMonitoringStrategy(ISettingsProvider settingsProvider, IMainModel mainModel, StocksManager stocksManager, IEventAggregator2 eventAggregator, ILogger <ArbitrageMonitoringStrategy> logger, IUSADataManager usaDataManager) { StocksManager = stocksManager; Settings = settingsProvider.Settings; SetChatId(Settings); MainModel = mainModel; DataManager = usaDataManager; Logger = logger; eventAggregator.SubscribeOnPublishedThread(this); }
public void ProcessRequest(HttpContext context) { if ("GET" == context.Request.HttpMethod.ToUpper()) { string id = context.Request.QueryString["ID"]; Guid temp; if (string.IsNullOrEmpty(id) || !Guid.TryParse(id, out temp)) { context.Response.StatusCode = 400; context.Response.Write(" ID is required."); return; } StocksManager manager = new StocksManager(); var model = manager.GetStock(temp); if (model == null) { context.Response.StatusCode = 404; context.Response.Write($" Data is null (id={temp})"); } string retText = Newtonsoft.Json.JsonConvert.SerializeObject(model); context.Response.ContentType = "text/json"; context.Response.Write(retText); } else if ("POST" == context.Request.HttpMethod.ToUpper()) { string id = context.Request.QueryString["ID"]; Guid temp; if (string.IsNullOrEmpty(id) || !Guid.TryParse(id, out temp)) { context.Response.StatusCode = 400; context.Response.Write(" ID is required."); return; } StocksManager manager = new StocksManager(); var model = manager.GetStock(temp); if (model == null) { context.Response.StatusCode = 404; context.Response.Write($" Data is null (id={temp})"); } //if(!LoginHelper.HasLogined()) //{ // context.Response.StatusCode = 400; // context.Response.Write($" not logined."); //} //var loginInfo = LoginHelper.GetCurrentUserInfo(); // 取得前端的 post string cQtyText = context.Request.Form["CurrentQty"]; string lQtyText = context.Request.Form["LockedQty"]; int cQty = Convert.ToInt32(cQtyText); int lQty = Convert.ToInt32(lQtyText); model.CurrentQty = cQty; model.LockedQty = lQty; //model.Modifier = loginInfo.ID; //model.ModifyDate = DateTime.Now; // 寫入 manager.UpdateStock(model); string retText = Newtonsoft.Json.JsonConvert.SerializeObject(model); context.Response.ContentType = "text/json"; context.Response.Write(retText); } }
public async Task RefreshStocks() { await StocksManager.UpdatePrices(); }
public void RefreshStocks() { StocksManager.SubscribeToStockEvents(); }
public async Task RefreshAll() { await StocksManager.UpdateStocks(); }