Ejemplo n.º 1
0
        private int getRandomStock()
        {
            Thread.Sleep(50);
            int stocksNum = StocksManager.getStocksNum();

            return(rng.Next(1, stocksNum));
        }
Ejemplo n.º 2
0
 public MainViewModel(IEventAggregator eventAggregator)
 {
     _eventAggregator = eventAggregator;
     LoadAppSettings();
     SettingsViewModel = new SettingsViewModel(this);
     StocksManager     = new StocksManager(this);
 }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 6
0
 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);
 }
Ejemplo n.º 7
0
 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);
 }
Ejemplo n.º 8
0
        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);
            }
        }
Ejemplo n.º 9
0
 public async Task RefreshStocks()
 {
     await StocksManager.UpdatePrices();
 }
Ejemplo n.º 10
0
 public void RefreshStocks()
 {
     StocksManager.SubscribeToStockEvents();
 }
Ejemplo n.º 11
0
 public async Task RefreshAll()
 {
     await StocksManager.UpdateStocks();
 }