using Qdp.Pricing.Base.Enums; using Qdp.Pricing.Library.Common.Interfaces; using Qdp.Pricing.Library.Options.MonteCarlo; namespace YLErp.BLL.Calculation.Engine { public abstract class OptionEngineFactoryBase : IOptionEngineFactory { public abstract IEngine GetEngine(string engineName = null, OptionExercise exercise = OptionExercise.European, params object[] additionalParams); protected virtual IEngine CreateGenericMonteCarloEngine(params object[] parameters) { int parallelDegree = PS.Config.ErpElement.QdpParallelDegree, numberOfSimulation = 50000; bool useConstRate = true, useConstVol = true; if (parameters.Length > 0) { parallelDegree = (int)parameters[0]; } if (parameters.Length > 1) { numberOfSimulation = (int)parameters[1]; } if (parameters.Length > 2) { useConstRate = (bool)parameters[2]; } if (parameters.Length > 3) { useConstVol = (bool)parameters[3]; } return new GenericMonteCarloEngine(parallelDegree, numberOfSimulation, useConstRate: useConstRate, useConstVol: useConstVol); } } }