public void RemoveStatSeries(StockStat stat)
 {
     for (int i = 0; i < stat.DataCount; i++)
     {
         PVChart.Series.Remove(PVChart.Series.FindByName(stat.ChartSeriesName(i)));
     }
 }
Beispiel #2
0
 public StockStatSticker(StockStat stat, IStockStatsInfoGenerator statsInfoGenerator)
 {
     _stat = stat;
     _statsInfoGenerator = statsInfoGenerator;
     InitializeComponent();
     UpdateStatInfo();
 }
Beispiel #3
0
 public static void UpdateStatSeriesDefinition(this PriceVolumeChart chart, StockStat stat)
 {
     for (int i = 0; i < stat.DataCount; i++)
     {
         Series s = chart.GetSeries(stat.ChartSeriesName(i));
         s.Color = stat.DataColor[i];
     }
 }
 private bool EditStat(StockStat stat)
 {
     using (FormEditStockStatParams frm = new FormEditStockStatParams())
         if (!frm.Execute(stat))
         {
             return(false);
         }
     return(true);
 }
        public void AddStatSeries(StockStat stat)
        {
            StockStatSeriesFactory factory = new StockStatSeriesFactory();

            for (int i = 0; i < stat.DataCount; i++)
            {
                PVChart.Series.Add(factory.CreateSeries(stat, i));
            }
        }
 public Series CreateSeries(StockStat stat, int seriesIndex) => new Series(stat.ChartSeriesName(seriesIndex))
 {
     ChartArea       = stat.ChartArea,
     ChartType       = SeriesChartType.Line,
     Color           = stat.DataColor[seriesIndex],
     Font            = new System.Drawing.Font("Microsoft Sans Serif", 6F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))),
     IsXValueIndexed = true,
     YValueType      = ChartValueType.Single
 };
 private void OnStatStickerDoubleClick(StockStatSticker sticker, StockStat stat)
 {
     if (!EditStat(stat))
     {
         return;
     }
     sticker.UpdateStatInfo();
     chartPV.UpdateStatSeriesDefinition(stat);
     CalculateStatAndRefreshChartData(stat);
 }
        public void AddStat(StockStat stat)
        {
            chartPV.AddStatSeries(stat);
            _currentData.Stats.Add(stat);
            StockStatSticker sticker = new StockStatSticker(stat, _currentStatsInfoGenerator);

            sticker.OnStickerDoubleClick += OnStatStickerDoubleClick;
            sticker.OnStickerMouseClick  += OnStatStickerClick;
            _stickerPositioner.Add(sticker);
        }
        private void OnClickPriceChartStat(object sender, EventArgs e)
        {
            StockStat stat = StatsFactories.PriceChart.Get(sender.ToString(), "areaPrices");

            if (!EditStat(stat))
            {
                return;
            }
            AddStat(stat);
            CalculateStatAndRefreshChartData(stat);
        }
Beispiel #10
0
 private void SaveStatDataColors(StockStat stat)
 {
     foreach (var control in pnlTblLayoutColors.Controls)
     {
         if (!(control is Button))
         {
             continue;
         }
         Button btn = (Button)control;
         stat.DataColor[(int)btn.Tag] = btn.BackColor;
     }
 }
 private void OnStatStickerClick(StockStatSticker sticker, StockStat stat, MouseEventArgs e)
 {
     if (e.Button == MouseButtons.Middle)
     {
         if (stat.ChartArea != "areaPrices")
         {
             chartPV.RemoveArea(stat.ChartArea);
         }
         RemoveStat(sticker, stat);
         Refresh();
     }
 }
Beispiel #12
0
 public bool Execute(StockStat stat)
 {
     SetCaption(stat.Name);
     dgvParams.LoadParams(stat.StatParams);
     LoadStatDataColors(stat);
     if (ShowDialog() == DialogResult.OK)
     {
         dgvParams.SaveParams(stat.StatParams);
         SaveStatDataColors(stat);
         return(true);
     }
     return(false);
 }
        private void OnClickAdditionalStat(object sender, EventArgs e)
        {
            string newAreaName = $"Area{Guid.NewGuid():N}";

            StockStat stat = StatsFactories.Additional.Get(sender.ToString(), newAreaName);

            if (!EditStat(stat))
            {
                return;
            }
            chartPV.CreateNewArea(newAreaName);
            AddStat(stat);
            CalculateStatAndRefreshChartData(stat);
        }
        public SignalsPriceCrossingSMA(string stockName, StockDataRange dataRange, int smaPeriod, ISystemDataLoader dataLoader, IStockDataProvider dataProvider, IMMSignalVolume signalVolumeCalculator)
        {
            _dataRange              = dataRange;
            _smaPeriod              = smaPeriod;
            _dataLoader             = dataLoader;
            _dataProvider           = dataProvider;
            _signalVolumeCalculator = signalVolumeCalculator;

            _stock   = _dataProvider.GetStockDefinition(stockName);
            _statSMA = new StatSMA("")
                       .SetParam(StatSMAParams.Period, new MOParamInt()
            {
                Value = _smaPeriod
            });
        }
        private string GetStatValue(StockStat stat, int selectedIndex, int dataPricesLength)
        {
            int emptyStart = dataPricesLength - stat.Data(0).Length;

            if (selectedIndex < emptyStart)
            {
                return("");
            }

            List <string> values = new List <string>();

            for (int i = 0; i < stat.DataCount; i++)
            {
                values.Add(DataFormatting.FormatStatValue(stat.Data(i)[selectedIndex - emptyStart]));
            }
            return(string.Join(", ", values));
        }
Beispiel #16
0
 private void LoadStatDataColors(StockStat stat)
 {
     pnlTblLayoutColors.ColumnStyles.Clear();
     pnlTblLayoutColors.ColumnCount = stat.DataCount;
     for (int i = 0; i < stat.DataCount; i++)
     {
         pnlTblLayoutColors.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F / (float)stat.DataCount));
         Button btn = new Button
         {
             Text      = stat.DataName(i),
             FlatStyle = FlatStyle.Flat,
             BackColor = stat.DataColor[i],
             Dock      = DockStyle.Fill,
             Tag       = i,
         };
         btn.Click += OnDataColorButtonClick;
         pnlTblLayoutColors.Controls.Add(btn, i, 0);
     }
 }
Beispiel #17
0
        public SignalsBBTrend(string stockName, StockDataRange dataRange, int bbPeriod, float bbSigmaWidth, ISystemDataLoader dataLoader, IStockDataProvider dataProvider, IMMSignalVolume signalVolumeCalculator)
        {
            _dataRange              = dataRange;
            _bbPeriod               = bbPeriod;
            _bbSigmaWidth           = bbSigmaWidth;
            _dataLoader             = dataLoader;
            _dataProvider           = dataProvider;
            _signalVolumeCalculator = signalVolumeCalculator;

            _stock  = _dataProvider.GetStockDefinition(stockName);
            _statBB = new StatBB("")
                      .SetParam(StatBBParams.Period, new MOParamInt()
            {
                Value = _bbPeriod
            })
                      .SetParam(StatBBParams.SigmaWidth, new MOParamFloat()
            {
                Value = bbSigmaWidth
            });
        }
Beispiel #18
0
 public static StockStat SetParam(this StockStat stat, string paramName, MOParam paramValue)
 {
     stat.StatParams.Set(paramName, paramValue);
     return(stat);
 }
Beispiel #19
0
 public static string ChartSeriesName(this StockStat stat, int seriesIndex) => $"{stat.UID}_{seriesIndex}";
Beispiel #20
0
 public static void PrependStockStatData(this PriceVolumeChart chart, StockPricesData data, StockStat stat)
 {
     for (int i = 0; i < stat.DataCount; i++)
     {
         Series s = chart.GetSeries(stat.ChartSeriesName(i));
         s.Points.Clear();
     }
     AppendStockStatData(chart, data, stat);
 }
 public void RemoveStat(StockStatSticker sticker, StockStat stat)
 {
     chartPV.RemoveStatSeries(stat);
     _currentData.Stats.Remove(stat);
     _stickerPositioner.Remove(sticker);
 }
 private void CalculateStatAndRefreshChartData(StockStat stat)
 {
     stat.Calculate(CurrentData.Prices);
     RefreshData();
     Refresh();
 }
Beispiel #23
0
 public static void AppendStockStatData(this PriceVolumeChart chart, StockPricesData data, StockStat stat)
 {
     for (int i = 0; i < stat.DataCount; i++)
     {
         Series  s            = chart.GetSeries(stat.ChartSeriesName(i));
         float[] currdata     = stat.Data(i);
         int     tsstartindex = data.Length - currdata.Length;
         for (int j = 0; j < tsstartindex; j++)
         {
             int ix = s.Points.AddXY(data.TS[j], 0);
             s.Points[ix].IsEmpty = true;
         }
         for (int j = 0; j < currdata.Length; j++)
         {
             s.Points.AddXY(data.TS[tsstartindex + j], currdata[j]);
         }
     }
 }
 public string GetStatHeader(StockStat stat) => $"{stat.Name}({GetStatHeaderParams(stat.StatParams)})";