private void bbExportHistory_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            XtraFolderBrowserDialog dialog = new XtraFolderBrowserDialog();

            if (dialog.ShowDialog() != DialogResult.OK)
            {
                return;
            }
            GridControl gc   = new GridControl();
            GridView    view = new GridView();

            gc.ViewCollection.Add(view);
            gc.MainView   = view;
            gc.DataSource = new BindingSource()
            {
                DataSource = typeof(DependencyArbitrageHistoryItem)
            };
            gc.BindingContext = new BindingContext();
            gc.ForceInitialize();
            view.PopulateColumns();
            ArbitrageHelper.Items.ForEach(i => i.SaveHistory());
            ArbitrageHelper.Items.ForEach(i => {
                StatisticalArbitrageStrategy info = new StatisticalArbitrageStrategy();
                info.Assign(i);
                info.LoadHistory();
                gc.DataSource = info.History;
                gc.ExportToXlsx(dialog.SelectedPath + "\\" + info.GetExportFileName() + ".xlsx");
            });
            System.Diagnostics.Process.Start(dialog.SelectedPath);
        }
        private void biShowChart_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            StatisticalArbitrageStrategy info = (StatisticalArbitrageStrategy)this.gridView1.GetFocusedRow();
            DependencyArbitrageChartForm form = info.Tag as DependencyArbitrageChartForm;

            if (form == null || form.IsDisposed)
            {
                form           = new DependencyArbitrageChartForm();
                form.Text      = "Current: " + info.TradingPair;
                form.Arbitrage = info;
            }
            form.Show();
            form.Activate();
        }
        private void biAllHistoryChart_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            StatisticalArbitrageStrategy info = (StatisticalArbitrageStrategy)this.gridView1.GetFocusedRow();
            DependencyArbitrageChartForm form = new DependencyArbitrageChartForm();

            StatisticalArbitrageStrategy all = new StatisticalArbitrageStrategy();

            all.Assign(info);
            all.LoadHistory();

            form.Text      = "All History: " + info.TradingPair;
            form.Arbitrage = all;

            form.Show();
            form.Activate();
        }
        void OnArbitrageChanged(StatisticalArbitrageStrategy prev, StatisticalArbitrageStrategy current)
        {
            if (prev != null)
            {
                prev.Tag = null;
            }

            if (current != null)
            {
                current.Tag = this;
            }

            RealTimeSource source = new RealTimeSource()
            {
                DataSource = Arbitrage.History
            };

            UpperName = Arbitrage.SecondName.ToString() + " (upper)";
            LowerName = Arbitrage.FirstNames[0].ToString() + " (lower)";

            this.myChartControl1.Series["Upper"].DataSource         = source;
            this.myChartControl1.Series["Upper"].ArgumentDataMember = "Time";
            this.myChartControl1.Series["Upper"].ValueDataMembers.AddRange("UpperBidChart");
            this.myChartControl1.Series["Upper"].Name = UpperName;

            this.myChartControl1.Series["Lower"].DataSource         = source;
            this.myChartControl1.Series["Lower"].ArgumentDataMember = "Time";
            this.myChartControl1.Series["Lower"].ValueDataMembers.AddRange("LowerAskChart");
            this.myChartControl1.Series["Lower"].Name = LowerName;

            this.myChartControl1.Series["Deviation"].DataSource         = source;
            this.myChartControl1.Series["Deviation"].ArgumentDataMember = "Time";
            this.myChartControl1.Series["Deviation"].ValueDataMembers.AddRange("MaxDeviationLog");

            this.gridControl1.DataSource = source;
        }