﻿1.价格接口: IPriceProvider,IPriceProvider2,IEodPriceProvider
1.1 IPriceProvider 定义根据交易产品代码获取价格的接口
1.2 IPriceProvider2 定义根据交易产品数据ID获取价格的接口
1.3 IEodPriceProvider 定义了收盘价结算价获取接口

2.现价接口实现

2.1 调用DataCacheProvider.GetUnderlyingDataSource()
实现的接口:IPriceProvider,IPriceProvider2
数据功能: underlying_manager表数据实时价格
使用场景: 所有业务场景都支持

2.2 调用YLBaseService.UnderlyingDataProvider
实现的接口:IPriceProvider,IUnderlyingDataProviderEx
使用说明: 所有的Service类都基于YLBaseService, 这个对象的实现本质上是对DataCacheProvider.GetUnderlyingDataSource的封装
使用场景: 所有的Service类

2.2 ExchangeOptionPriceProvider.Default
实现的接口: IPriceProvider
数据功能: 场内期权(exchange_list_option)表数据实时价格
使用场景: 所有业务场景都支持

3.收盘价接口实现

3.1 调用new EodPriceProvider(DateTime valueDate, bool useClosePrice, bool isDiviendPrice = false)
实现的接口: IEodPriceProvider,IPriceProvider,IPriceProvider2
数据功能：获取eod_commmodityFutures和eod_stock表中的收盘结算价
使用场景: 所有业务场景都支持
参数说明: 
--- valueDate: 收盘日期
--- useClosePrice: 调用IPriceProvider,IPriceProvider2接口API时是否返回收盘价
--- isDiviendPrice: 是否对从数据库取到的收盘价做除权除息处理
特定方法说明:
--- Initialize: 初始化价格数据,根据valueDate将数据库中的数据加载到内存字典中并在随后的价格获取函数中检索内存字典获取
    ：如果不调用此方法，则首先检索缓存中是否存在，如果不存在则从数据库中获取并存入缓存
    : !!!调用此方法前请先对检索数据库的可能次数做下预估，如果小于20次,没必要调用此方法
--- CheckDbExists：检查数据库中是否存在收盘价数据，如果已经调用了Initialize方法，可以直接根据Count属性检查
--- Clone(bool useClosePrice = true):克隆已创建的EodPriceProvider对象并在克隆对象中价格接口使用新的收盘价结算价返回判断处理
    ：克隆对象和源对象使用相同的内存字典只是变更了价格接口(IPriceProvider,IPriceProvider2)的行为规则

4. 其它接口实现

4.1 PriceProvider 实现了IPriceProvider接口
说明: 类内部实现封装了Dictionary<string, double>类型的字典,提供SetPrice添加价格数据,并支持Dictionary<string, double>对象隐式转换

4.2 PriceProvider2 实现了IPriceProvider2接口
说明: 类内部实现封装了Dictionary<int, double>类型的字典,提供SetPrice添加价格数据,并支持Dictionary<string, double>对象隐式转换

4.3 SinglePriceProvider2 实现了IPriceProvider2接口
说明: 单个UnderlyingID对应的价格提供接口实现