private void MainForm_OnActPosUpdateButtonClick(object sender, PositionTableArgs e) { try { PositionManager tempPosManager = ParseUserArgsPositionForManager(new PositionManager(), e.userArgs); List <string[]> tempPosTableData = new List <string[]>(); tempPosManager.UpdateGeneralParametres(); if (tempPosManager.Futures != null) { tempPosTableData.Add(CreateActualPosTableDataRowFromFut(tempPosManager.Futures)); } foreach (Option opt in tempPosManager.Options) { tempPosTableData.Add(CreateActualPosTableDataRowFromOpt(opt)); } mainForm.UpdateActualPositionTableData(tempPosTableData); } catch (Exception e2) { LOGGER.Error("An exception when event of ACTUAL position update was enabled:{0}", e2.ToString()); throw; } }
private void MainForm_OnPosUpdateButtonClick(object sender, PositionTableArgs e) { try { List <string[]> tempPosTableData = new List <string[]>(); List <double[]> tempPosChartData = new List <double[]>(); simulPosManager.CleanAllPositions(); ParseUserArgsPositionForManager(simulPosManager, e.userArgs); simulPosManager.UpdateGeneralParametres(); if (simulPosManager.Futures != null) { tempPosTableData.Add(CreatePosTableDataRowFromFut(simulPosManager.Futures)); } foreach (Option opt in simulPosManager.Options) { tempPosTableData.Add(CreatePosTableDataRowFromOpt(opt)); } mainForm.UpdateSimulationPositionTableData(tempPosTableData); GO_Calculator goCalculator = new GO_Calculator(simulPosManager, 0.3, 0.2, 0.01); foreach (Option option in simulPosManager.Options) { option.Futures.MinPriceLimit = dataCollector.GetBasicFutures().MinPriceLimit; option.Futures.MaxPriceLimit = dataCollector.GetBasicFutures().MaxPriceLimit; } double tempActVol = (dataCollector.GetOption(dataCollector.CalculateActualStrike(), OptionType.Call).BuyVol + dataCollector.GetOption(dataCollector.CalculateActualStrike(), OptionType.Put).BuyVol) / 2.0; mainForm.UpdateTotalInfoTable(new double[] { Math.Round(simulPosManager.CalculatePositionCurPnL(), 0), Math.Round(simulPosManager.CalculatePositionPnL(), 2), Math.Round(simulPosManager.FixedPnL, 2), Math.Round(simulPosManager.TotalDelta, 4), Math.Round(simulPosManager.TotalGamma, 4), Math.Round(simulPosManager.TotalVega, 4), Math.Round(simulPosManager.TotalTheta, 4), Math.Round(goCalculator.CalculateTotalPosition_GO( tempActVol, dataCollector.GetBasicFutures().GetTradeBlotter().AskPrice), 0) }); double minStr = dataCollector.CalculateMinImportantStrike(); double maxStr = dataCollector.CalculateMaxImportantStrike(); for (double i = minStr; i <= maxStr; i += Settings.Default.StrikeStep) { tempPosChartData.Add(new double[] { i, Math.Round(simulPosManager.CalculateCurApproxPnL(i), 0), Math.Round(simulPosManager.CalculateExpirationPnL(i), 0) }); } mainForm.UpdatePositionChartData(tempPosChartData); Settings.Default.SimulFixedPnL = simulPosManager.FixedPnL; Settings.Default.Save(); } catch (Exception e2) { LOGGER.Error("An exception when event of position update was enabled:{0}", e2.ToString()); throw; } }