46 lines
1.8 KiB
C#
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}.无法创建计算引擎");
|
|
}
|
|
}
|
|
}
|
|
}
|