示例#1
0
 public string GetStockSelectedInfo(StockDisplayData data, int selectedIndex) =>
 $"{data.Prices.TS[selectedIndex].ToString(data.Prices.DataRangeFormatString())} OHLC(" +
 $"{data.Stock.FormatPrice(data.Prices.O[selectedIndex])}, " +
 $"{data.Stock.FormatPrice(data.Prices.H[selectedIndex])}, " +
 $"{data.Stock.FormatPrice(data.Prices.L[selectedIndex])}, " +
 $"{data.Stock.FormatPrice(data.Prices.C[selectedIndex])}) " +
 $"V={data.Prices.V[selectedIndex]}";
示例#2
0
 private void OnRecalculateStockStats(StockDisplayData displayData)
 {
     foreach (var stat in displayData.Stats)
     {
         stat.Calculate(displayData.Prices);
     }
 }
示例#3
0
        private StockPricesData OnPrependChartData(StockDisplayData displayData)
        {
            DateTime ts = DateTimeOperations.OneTickBefore(displayData.TsFrom, displayData.Prices);

            displayData.TsFrom = ts.AddDays(-1).AddYears(-1);
            return(_dataProvider.GetPricesData(displayData.Stock, displayData.Prices.Range, 0, displayData.TsFrom, ts));
        }
 public void LoadData(StockDisplayData data, IStockInfoGenerator infoGenerator, IStockStatsInfoGenerator statsInfoGenerator)
 {
     _currentData               = data;
     _currentInfoGenerator      = infoGenerator;
     _currentStatsInfoGenerator = statsInfoGenerator;
     ReloadCurrentData();
     chartPV.ResetZoom();
     DisplayCurrentStockInfo();
 }
        public string GetStatsSelectedInfo(StockDisplayData data, int selectedIndex)
        {
            List <string> values = new List <string>();

            foreach (StockStat stat in data.Stats)
            {
                values.Add($"{GetStatHeader(stat)}=[{GetStatValue(stat, selectedIndex, data.Prices.Length)}]");
            }
            return(string.Join(", ", values));
        }
示例#6
0
        public string GetStockInfo(StockDisplayData data)
        {
            string nodatainfo = "";

            if (data.Prices.Length == 0)
            {
                nodatainfo = " - no data";
            }
            return($"{data.Stock.FullName} {data.Prices.DataRangeToString()} [{data.TsFrom.ToString(data.Prices.DataRangeFormatString())} - {data.TsTo.ToString(data.Prices.DataRangeFormatString())}{nodatainfo}]");
        }
示例#7
0
 private bool GetStockDisplayData(string stockName, StockDataRange dataRange, DateTime tsFrom, DateTime tsTo, out StockDisplayData displayData)
 {
     displayData = null;
     if (!GetStockDefinition(stockName, out StockDefinition stockDef))
     {
         return(false);
     }
     displayData = new StockDisplayData()
     {
         TsFrom = tsFrom,
         TsTo   = tsTo,
         Stock  = stockDef,
         Prices = _dataProvider.GetPricesData(stockDef, dataRange, 0, tsFrom, tsTo)
     };
     return(true);
 }
示例#8
0
        private PriceVolumePanel AddTabWithChart(TabControl tabControl, StockDisplayData displayData)
        {
            TabPage tab = new TabPage($"[{displayData.Stock.Name}] {displayData.Stock.FullName} ({displayData.Prices.Range})")
            {
                BorderStyle = BorderStyle.FixedSingle
            };

            tabControl.TabPages.Add(tab);
            PriceVolumePanel pvp = new PriceVolumePanel {
                Name = "pvp", Dock = DockStyle.Fill
            };

            pvp.OnPrependData           += OnPrependChartData;
            pvp.OnGetData               += OnGetChartData;
            pvp.OnRecalculateStockStats += OnRecalculateStockStats;
            tab.Controls.Add(pvp);
            tabControl.SelectTab(tab);
            tabControl.Refresh();
            pvp.LoadData(displayData, _stockInfoGenerator, _stockStatsInfoGenerator);
            return(pvp);
        }
示例#9
0
 public string GetAxisYToolTip(StockDisplayData data, double selectedValue) => data.Stock.FormatPrice(selectedValue);
示例#10
0
 public string GetAxisXToolTip(StockDisplayData data, int selectedIndex) => $"{data.Prices.TS[selectedIndex].ToString(data.Prices.DataRangeFormatString())}";
示例#11
0
 private StockPricesData OnGetChartData(StockDisplayData displayData, DateTime tsFrom, DateTime tsTo)
 {
     displayData.TsFrom = tsFrom;
     displayData.TsTo   = tsTo;
     return(_dataProvider.GetPricesData(displayData.Stock, displayData.Prices.Range, 0, tsFrom.AddDays(-1), tsTo));
 }