210 lines
12 KiB
C#
210 lines
12 KiB
C#
//using System;
|
|
//using System.Collections.Generic;
|
|
//using System.Linq;
|
|
//using YLErp.Configuration;
|
|
//using YLErp.DBModels;
|
|
//using YLErp.Model;
|
|
|
|
//namespace YLErp.BLL.MarginCalculationBak
|
|
//{
|
|
// /// <summary>
|
|
// ///
|
|
// /// </summary>
|
|
// public static class MarginDefault
|
|
// {
|
|
// /// <summary>
|
|
// /// 计算日终保证金
|
|
// /// </summary>
|
|
// /// <param name="userId"></param>
|
|
// /// <param name="userName"></param>
|
|
// /// <param name="tradeList"></param>
|
|
// /// <param name="settleDate"></param>
|
|
// /// <param name="priceDict">如需要根据不同客户配置选取价格,应传null</param>
|
|
// /// <param name="hasOptionInfo"></param>
|
|
// /// <param name="isEodSettle"></param>
|
|
// /// <param name="forSingleTrade"></param>
|
|
// /// <param name="volType"></param>
|
|
// /// <param name="forOtherSide"></param>
|
|
// /// <returns></returns>
|
|
// public static List<trade_span> RunMarginCalculation(int userId, string userName, List<trade> tradeList, DateTime settleDate, Dictionary<int, double> 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<trade_span> tradeSpans, List<trade_span> tradeSpansOtherSide, int SpanType = 0, List<int> RefreshClientIds = null, Dictionary<int, double> 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);
|
|
// }
|
|
// }
|
|
|
|
// /// <summary>
|
|
// /// isInitialMargin为true: 为初始保证金
|
|
// /// isInitialMargin为false: 为实时保证金
|
|
// /// </summary>
|
|
// 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;
|
|
// }
|
|
//}
|