//using System; //using System.Collections.Generic; //using System.Linq; //using YLErp.Configuration; //using YLErp.DBModels; //using YLErp.Model; //namespace YLErp.BLL.MarginCalculationBak //{ // /// // /// // /// // public static class MarginDefault // { // /// // /// 计算日终保证金 // /// // /// // /// // /// // /// // /// 如需要根据不同客户配置选取价格,应传null // /// // /// // /// // /// // /// // /// // public static List RunMarginCalculation(int userId, string userName, List tradeList, DateTime settleDate, Dictionary priceDict, bool hasOptionInfo = false, bool isEodSettle = false, bool forSingleTrade = true, string volType = "交易", bool forOtherSide = false) // { // switch (PS.Config.Company) // { // case CompanyEnum.国泰君安: // case CompanyEnum.上期资本: // case CompanyEnum.中财资本: // return GTJAMarginCalculation.Instance.RunMarginCalculation(userId, userName, tradeList, settleDate, priceDict, hasOptionInfo, isEodSettle, forSingleTrade, volType, forOtherSide); // case CompanyEnum.光大光子: // return GDGZMarginCalculation.Instance.RunMarginCalculation(userId, userName, tradeList, settleDate, priceDict, hasOptionInfo, isEodSettle, forSingleTrade, volType, forOtherSide); // case CompanyEnum.渤海: // case CompanyEnum.安粮: // return BHRSMarginCalculation.Instance.RunMarginCalculation(userId, userName, tradeList, settleDate, priceDict, hasOptionInfo, isEodSettle, forSingleTrade, volType, forOtherSide); // case CompanyEnum.申万: // return SYWGMarginCalculation.Instance.RunMarginCalculation(userId, userName, tradeList, settleDate, priceDict, hasOptionInfo, isEodSettle, forSingleTrade, volType, forOtherSide); // case CompanyEnum.格林大华: // return UniversalMarginCalculation.Instance.RunMarginCalculation(userId, userName, tradeList, settleDate, priceDict, hasOptionInfo, isEodSettle, forSingleTrade, volType, forOtherSide); // case CompanyEnum.方顿: // return FDMarginCalculation.Instance.RunMarginCalculation(userId, userName, tradeList, settleDate, priceDict, hasOptionInfo, isEodSettle, forSingleTrade, volType, forOtherSide); // case CompanyEnum.茂川资本: // return MaoChuanMarginCalculation.Instance.RunMarginCalculation(userId, userName, tradeList, settleDate, priceDict, hasOptionInfo, isEodSettle, forSingleTrade, volType, forOtherSide); // case CompanyEnum.宏源: // return HongYuanMarginCalculation.Instance.RunMarginCalculation(userId, userName, tradeList, settleDate, priceDict, hasOptionInfo, isEodSettle, forSingleTrade, volType, forOtherSide); // case CompanyEnum.伴兴: // return BXMarginCalculation.Instance.RunMarginCalculation(userId, userName, tradeList, settleDate, priceDict, hasOptionInfo, isEodSettle, forSingleTrade, volType, forOtherSide); // case CompanyEnum.海通: // return HaiTongMarginCalculation.Instance.RunMarginCalculation(userId, userName, tradeList, settleDate, priceDict, hasOptionInfo, isEodSettle, forSingleTrade, volType, forOtherSide); // case CompanyEnum.瑞达: // return RDMarginCalculation.Instance.RunMarginCalculation(userId, userName, tradeList, settleDate, priceDict, hasOptionInfo, isEodSettle, forSingleTrade, volType, forOtherSide); // default: // return GTJAMarginCalculation.Instance.RunMarginCalculation(userId, userName, tradeList, settleDate, priceDict, hasOptionInfo, isEodSettle, forSingleTrade, volType, forOtherSide); // } // } // public static bool CalcClientMargin(int userId, string userName, DateTime settleDate, List tradeSpans, List tradeSpansOtherSide, int SpanType = 0, List RefreshClientIds = null, Dictionary clientAdditionalMarginDic = null) // { // switch (PS.Config.Company) // { // case CompanyEnum.国泰君安: // return GTJAMarginCalculation.Instance.CalcClientMargin(userId, userName, settleDate, tradeSpans, tradeSpansOtherSide, SpanType, RefreshClientIds, false); // case CompanyEnum.光大光子: // return GDGZMarginCalculation.Instance.CalcClientMargin(userId, userName, settleDate, tradeSpans, tradeSpansOtherSide, SpanType, RefreshClientIds, false); // case CompanyEnum.渤海: // return BHRSMarginCalculation.Instance.CalcClientMargin(userId, userName, settleDate, tradeSpans, tradeSpansOtherSide, SpanType, RefreshClientIds, false); // case CompanyEnum.安粮: // return BHRSMarginCalculation.Instance.CalcClientMargin(userId, userName, settleDate, tradeSpans, tradeSpansOtherSide, SpanType, RefreshClientIds, false, clientAdditionalMarginDic); // case CompanyEnum.申万: // return SYWGMarginCalculation.Instance.CalcClientMargin(userId, userName, settleDate, tradeSpans, tradeSpansOtherSide, SpanType, RefreshClientIds, !PS.Config.ErpElement.TwoSideMargin); // case CompanyEnum.格林大华: // return UniversalMarginCalculation.Instance.CalcClientMargin(userId, userName, settleDate, tradeSpans, tradeSpansOtherSide, SpanType, RefreshClientIds, !PS.Config.ErpElement.TwoSideMargin); // case CompanyEnum.伴兴: // return BXMarginCalculation.Instance.CalcClientMargin(userId, userName, settleDate, tradeSpans, tradeSpansOtherSide, SpanType, RefreshClientIds, false); // case CompanyEnum.海通: // return HaiTongMarginCalculation.Instance.CalcClientMargin(userId, userName, settleDate, tradeSpans, tradeSpansOtherSide, SpanType, RefreshClientIds, false); // case CompanyEnum.瑞达: // return RDMarginCalculation.Instance.CalcClientMargin(userId, userName, settleDate, tradeSpans, tradeSpansOtherSide, SpanType, RefreshClientIds, false); // default: // return GTJAMarginCalculation.Instance.CalcClientMargin(userId, userName, settleDate, tradeSpans, tradeSpansOtherSide, SpanType, RefreshClientIds, false); // } // } // public static bool isMarginCalcNeedSpecial() // { // switch (YLErp.PS.Config.Company) // { // case CompanyEnum.渤海: // case CompanyEnum.安粮: // return BHRSMarginCalculation.Instance.MarginCalcNeedSpecial; // case CompanyEnum.国泰君安: // case CompanyEnum.申万: // case CompanyEnum.格林大华: // default: // return SYWGMarginCalculation.Instance.MarginCalcNeedSpecial; // } // } // public static double? GetInitialMarginRatio(trade trade) // { // switch (PS.Config.Company) // { // case CompanyEnum.方顿: // return FDMarginCalculation.Instance.GetInitialMarginRatio(trade); // default: // return 0; // } // } // public static double? GetPositionMarginRatio(trade trade) // { // switch (PS.Config.Company) // { // case CompanyEnum.方顿: // return FDMarginCalculation.Instance.GetPositionMarginRatio(trade); // default: // return 0; // } // } // public static double GetInitialMargin(trade trade, bool hasOptionInfo = false) // { // if (trade is null) // { // return 0; // } // switch (PS.Config.Company) // { // case CompanyEnum.方顿: // return FDMarginCalculation.Instance.GetInitialMargin(trade); // case CompanyEnum.光大光子: // return GDGZMarginCalculation.Instance.GetInitialMargin(trade); // default: // return GetTradeMargin(trade, (trade.SpotPrice ?? 0), true, hasOptionInfo); // } // } // /// // /// isInitialMargin为true: 为初始保证金 // /// isInitialMargin为false: 为实时保证金 // /// // public static double GetTradeMargin(trade trade, double price, bool isInitialMargin = false, bool hasOptionInfo = false) // { // if (trade.TradeType == "结构化交易") // { // var option = StructureOption_Code.StructureOptions.FirstOrDefault(o => o.Name == trade.StructureType || o.CnName == trade.StructureType); // //自由组合时不在变更StructureType字段值,保持原有结构化交易的内容; // if (option != null) // { trade.StructureType = option.CnName; } // } // double? tempInitialMargin = null; // if (!isInitialMargin && trade.CalcFlag == 1) // { // tempInitialMargin = trade.InitialMargin; // trade.InitialMargin = null; // } // try // { // switch (PS.Config.Company) // { // case CompanyEnum.国泰君安: // case CompanyEnum.上期资本: // case CompanyEnum.光大光子: // return GTJAMarginCalculation.Instance.GetTradeMargin(trade, price, isInitialMargin, hasOptionInfo); // case CompanyEnum.渤海: // return BHRSMarginCalculation.Instance.GetTradeMargin(trade, price, isInitialMargin, hasOptionInfo); // case CompanyEnum.安粮: // return BHRSMarginCalculation.Instance.GetTradeMargin(trade, price, isInitialMargin, hasOptionInfo); // case CompanyEnum.申万: // return SYWGMarginCalculation.Instance.GetTradeMargin(trade, price, isInitialMargin, hasOptionInfo); // case CompanyEnum.格林大华: // return UniversalMarginCalculation.Instance.GetTradeMargin(trade, price, isInitialMargin, hasOptionInfo); // case CompanyEnum.茂川资本: // return MaoChuanMarginCalculation.Instance.GetTradeMargin(trade, price, isInitialMargin, hasOptionInfo); // case CompanyEnum.宏源: // return HongYuanMarginCalculation.Instance.GetTradeMargin(trade, price, isInitialMargin, hasOptionInfo); // case CompanyEnum.伴兴: // return BXMarginCalculation.Instance.GetTradeMargin(trade, price, isInitialMargin, hasOptionInfo); // case CompanyEnum.海通: // return HaiTongMarginCalculation.Instance.GetTradeMargin(trade, price, isInitialMargin, hasOptionInfo); // case CompanyEnum.瑞达: // return RDMarginCalculation.Instance.GetTradeMargin(trade, price, isInitialMargin, hasOptionInfo); // default: // return GTJAMarginCalculation.Instance.GetTradeMargin(trade, price, isInitialMargin, hasOptionInfo); // } // } // finally // { // if (isInitialMargin && trade.CalcFlag == 1 && trade.InitialMargin == null) // { // trade.InitialMargin = tempInitialMargin; // } // } // } // } // public class MarginResult // { // public trade trade; // public double Margin; // } //}