示例#1
0
        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;
            }
        }
示例#2
0
        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;
            }
        }