Files
zszq-trs/YLErpDAL/BLL/Calculation/Engine/IOptionEngineFactory.cs
T
2024-05-09 14:06:26 +08:00

46 lines
1.8 KiB
C#

using Qdp.Pricing.Base.Enums;
using Qdp.Pricing.Library.Common.Interfaces;
namespace YLErp.BLL.Calculation.Engine
{
public interface IOptionEngineFactory
{
IEngine GetEngine(string engineName = null, OptionExercise exercise = OptionExercise.European, params object[] additionalParams);
}
public static class OptionEngineFactory
{
public static IOptionEngineFactory GetEngineFactory(string optionType)
{
switch (optionType.ToUpper())
{
case "VANILLAOPTION":
BLL.Calculation.Engine.OptionEngineRepository.VanillaAmericanDefaultEngine = valuedateBLL.VanillaAmericanOptionName;
return VanillaEngineFactory.Instance;
case "BARRIEROPTION":
return BarrierEngineFactory.Instance;
case "BINARYOPTION":
return BinaryEngineFactory.Instance;
case "ASIANOPTION":
return AsianEngineFactory.Instance;
case "RAINBOWOPTION":
return RainbowEngineFactory.Instace;
case "SYNTHTICNORMALSPREADOPTION":
return SyntheticNormalSpreadFactory.Instance;
case "DOUBLESHARKFINOPTION":
return DoubleSharkFinFactory.Instance;
case "SPREADOPTION":
return SpreadEngineFactory.Instance;
case "AUTOCALL":
return AutoCallEngineFactory.Instance;
case "SNOWBALL":
return SnowballEngineFactory.Instance;
case "RANGEACCRUAL":
return RangeAccrualEngineFactory.Instance;
default:
throw new Exception($"不支持的期权类型{optionType}.无法创建计算引擎");
}
}
}
}