private void currentStatusToolStripMenuItem_Click(object sender, EventArgs e) { StatisticInfo dlg = new StatisticInfo(); //refresh current data RefreshObservedPool(); RefreshLongTermPool(); RefreshShortTermPool(); RefreshTacticalPool(); //calculate statistic data decimal longtermprofit = m_statData.LongTermProfit; decimal shorttermprofit = m_statData.ShortTermProfit; decimal tacticalprofit = m_statData.TacticalProfit; StockPool.LongTermTableDataTable longdt = (StockPool.LongTermTableDataTable)dataGridViewObserved.DataSource; foreach (StockPool.LongTermTableRow row in longdt.Rows) { m_statData.LongTermValue += row.CurrentPrice * row.Amount; longtermprofit += (row.CurrentPrice - row.CostPrice) * row.Amount; } StockPool.TacticalTableDataTable tacticaldt = (StockPool.TacticalTableDataTable)dataGridViewTactical.DataSource; foreach (StockPool.TacticalTableRow row in tacticaldt.Rows) { m_statData.TacticalValue += row.CurrentPrice * row.DealCount; tacticalprofit += (row.CurrentPrice - row.CostPrice) * row.DealCount; } StockPool.ShortTermTableDataTable shortdt = (StockPool.ShortTermTableDataTable)dataGridViewTactical.DataSource; foreach (StockPool.ShortTermTableRow row in shortdt.Rows) { m_statData.ShortTermValue += row.CurrentPrice * row.Amount; shorttermprofit += (row.CurrentPrice - row.CostPrice) * row.Amount; } //display dlg.textBoxLongTermValue.Text = m_statData.LongTermValue.ToString(); dlg.textBoxLongProfit.Text = longtermprofit.ToString(); dlg.textBoxLongLeftCash.Text = m_statData.LongTermLeftCash.ToString(); dlg.textBoxLongAvailable.Text = m_statData.LongTermAvailableCash.ToString(); dlg.textBoxTacticalValue.Text = m_statData.TacticalValue.ToString(); dlg.textBoxTacticalProfit.Text = tacticalprofit.ToString(); dlg.textBoxShortValue.Text = m_statData.ShortTermValue.ToString(); dlg.textBoxShortProfit.Text = shorttermprofit.ToString(); dlg.textBoxShortLeft.Text = m_statData.ShortTermLeftCash.ToString(); dlg.textBoxTotalLeft.Text = (m_statData.LongTermLeftCash + m_statData.ShortTermLeftCash).ToString(); m_statData.TotalAsset = m_statData.LongTermLeftCash + m_statData.ShortTermLeftCash + m_statData.LongTermValue + m_statData.TacticalValue + m_statData.ShortTermValue; dlg.textBoxTotalAsset.Text = m_statData.TotalAsset.ToString(); m_statData.TotalProfit = longtermprofit + tacticalprofit + shorttermprofit; dlg.textBoxTotalProfit.Text = m_statData.TotalProfit.ToString(); dlg.textBoxCostCash.Text = m_statData.CostCash.ToString(); dlg.textBoxNetCount.Text = m_statData.curNetCount.ToString(); m_statData.curNetValue = m_statData.TotalAsset / m_statData.curNetCount; dlg.textBoxNetValue.Text = m_statData.curNetValue.ToString(); dlg.ShowDialog(); }
private void RefreshLongTermPool() { StockPool.LongTermTableDataTable dt = (StockPool.LongTermTableDataTable)dataGridViewObserved.DataSource; foreach (StockPool.LongTermTableRow row in dt.Rows) { string stocknumber = row.Code; decimal price = WebUtil.GetCurrentPrice(stocknumber); if (price != 0) { row.CurrentPrice = price; } } }
private void closePositionToolStripMenuItem_Click(object sender, EventArgs e) { if (this.tabControl1.SelectedIndex != 1) { return; } PositionDlg dlg = new PositionDlg(); string name = dataGridViewLongTerm.SelectedRows[0].Cells["Name"].Value.ToString(); StockPool.TacticalTableDataTable dt = (StockPool.TacticalTableDataTable)dataGridViewTactical.DataSource; if (dt.Select("Name=" + name).Length != 0) { MessageBox.Show("please underweight stock in tactical pool first"); return; } dlg.textBoxName.Text = dataGridViewLongTerm.SelectedRows[0].Cells["Name"].Value.ToString(); dlg.textBoxNumber.Text = dataGridViewLongTerm.SelectedRows[0].Cells["Code"].Value.ToString(); dlg.textBoxType.Text = "ClosePosition"; dlg.textBoxCount.Text = dataGridViewLongTerm.SelectedRows[0].Cells["Amount"].Value.ToString(); if (dlg.ShowDialog() == DialogResult.OK) { //update statistic data StockPool.LongTermTableDataTable longtermdt = (StockPool.LongTermTableDataTable)dataGridViewLongTerm.DataSource; StockPool.LongTermTableRow row = (StockPool.LongTermTableRow)longtermdt.Rows[dataGridViewLongTerm.SelectedRows[0].Index]; decimal sellprice = Convert.ToDecimal(dlg.textBoxPrice.Text); decimal profit = (sellprice - row.CostPrice) * row.Amount; m_statData.LongTermProfit += profit; m_statData.LongTermLeftCash += sellprice * row.Amount; m_statData.LongTermAvailableCash += sellprice * row.Amount + row.AvailableCash; //insertDealRecord DealRecordData data = new DealRecordData(); data.Name = dlg.textBoxName.Text; data.Type = dlg.textBoxType.Text; data.Price = dlg.textBoxPrice.Text; data.Count = dlg.textBoxCount.Text; data.Pool = "LongTermPool"; data.Profit = profit.ToString(); InsertDealRecord(data); //delete longterm record DeleteFromStockPool(dataGridViewLongTerm, dataGridViewLongTerm.SelectedRows[0].Index); } }
private void InsertLongTermPool(PositionDlg dlg) { StockPool.LongTermTableDataTable dt = (StockPool.LongTermTableDataTable)dataGridViewLongTerm.DataSource; StockPool.LongTermTableRow row = dt.NewLongTermTableRow(); row.Name = dlg.textBoxName.Text; row.Code = dlg.textBoxNumber.Text; row.CostPrice = Convert.ToDecimal(dlg.textBoxPrice.Text); row.Amount = Convert.ToUInt32(dlg.textBoxCount.Text); row.ClassType = dlg.comboBoxClassType.SelectedText; if (dlg.comboBoxClassType.SelectedText == "High potential") { row.AvailableCash = row.CostPrice * row.Amount / 2; //for high potential stock, long term position is 50% } else { row.AvailableCash = row.CostPrice * row.Amount / 3; //for blue chip stock, long term position is 60% } dt.Rows.Add(row); }
private void underwweightToolStripMenuItem_Click(object sender, EventArgs e) { if (this.tabControl1.SelectedIndex != 2) { return; } DealDlg dlg = new DealDlg(); dlg.textBoxName.Text = dataGridViewTactical.SelectedRows[0].Cells["Name"].Value.ToString(); dlg.textBoxNumber.Text = dataGridViewTactical.SelectedRows[0].Cells["Code"].Value.ToString(); dlg.textBoxCount.Text = dataGridViewTactical.SelectedRows[0].Cells["DealCount"].Value.ToString(); dlg.textBoxType.Text = "UnderWeight"; if (dlg.ShowDialog() == DialogResult.OK) { decimal price = Convert.ToDecimal(dlg.textBoxPrice.Text); uint count = Convert.ToUInt16(dlg.textBoxCount.Text); StockPool.LongTermTableDataTable dt = (StockPool.LongTermTableDataTable)dataGridViewLongTerm.DataSource; StockPool.LongTermTableRow row = (StockPool.LongTermTableRow)dt.Select("Name=" + dlg.textBoxName.Text)[0]; decimal profit = (price - row.CostPrice) * count; row.AvailableCash += price * count; m_statData.TacticalProfit += profit; m_statData.LongTermLeftCash += price * count; //real left cash //delete tactical record DeleteFromStockPool(dataGridViewTactical, dataGridViewTactical.SelectedRows[0].Index); //insert deal record DealRecordData data = new DealRecordData(); data.Name = dlg.textBoxName.Text; data.Type = dlg.textBoxType.Text; data.Price = dlg.textBoxPrice.Text; data.Count = dlg.textBoxCount.Text; data.Pool = "TacticalPool"; data.Profit = dlg.sellprofit.ToString(); InsertDealRecord(data); } }
private void overweightToolStripMenuItem1_Click(object sender, EventArgs e) { if (this.tabControl1.SelectedIndex != 1) { return; } DealDlg dlg = new DealDlg(); dlg.textBoxName.Text = dataGridViewLongTerm.SelectedRows[0].Cells["Name"].Value.ToString(); dlg.textBoxNumber.Text = dataGridViewLongTerm.SelectedRows[0].Cells["Code"].Value.ToString(); dlg.textBoxType.Text = "OverWeight"; if (dlg.ShowDialog() == DialogResult.OK) { //update stock available cash in long term pool decimal price = Convert.ToDecimal(dlg.textBoxPrice.Text); uint count = Convert.ToUInt16(dlg.textBoxCount.Text); StockPool.LongTermTableDataTable dt = (StockPool.LongTermTableDataTable)dataGridViewLongTerm.DataSource; StockPool.LongTermTableRow row = (StockPool.LongTermTableRow)dt.Rows[dataGridViewLongTerm.SelectedRows[0].Index]; row.AvailableCash -= price * count; m_statData.LongTermLeftCash -= price * count; //insert tactical record InsertTacticalPool(dlg, -1); //insert deal record DealRecordData data = new DealRecordData(); data.Name = dlg.textBoxName.Text; data.Type = dlg.textBoxType.Text; data.Price = dlg.textBoxPrice.Text; data.Count = dlg.textBoxCount.Text; data.Pool = "TacticalPool"; data.Profit = dlg.sellprofit.ToString(); InsertDealRecord(data); } }