Files
zszq-trs/YLErpDAL/Modules/TradeModule/Structure_dz/DzStructureService.cs
T
2024-05-09 14:06:26 +08:00

159 lines
4.7 KiB
C#

using YLErp.QdpModule;
namespace YLErp.Modules.TradeModule.Structure_dz
{
public class DZStructureService : YLBaseService
{
public DZStructureService(OptUserInfo userInfo) : base(userInfo)
{
}
public List<Structure> getStructureList(string structure)
{
List<Structure> structures = new List<Structure>();
if (string.IsNullOrWhiteSpace(structure))
{
for (int i = 0; i < 4; i++)
{
Structure s = new Structure();
s.OptionType = "None";
s.Strike = null;
s.BarrierPrice = null;
s.Multiplier = null;
s.RAMP = "";
s.IsAccAlSrike = null;
structures.Add(s);
}
}
else
{
structures = JsonHelper.Deserialize<List<Structure>>(structure);
}
return structures;
}
/// <summary>
/// 生成 string 示例 获取数据可做参考
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public void gettrade_structure()
{
trade_structure trade_Structure = new trade_structure();
trade_Structure.UnderlyingCode = "A00";
trade_Structure.BuySell = "买入";
trade_Structure.OriginalNotional = 500;
trade_Structure.SpotPrice = 6500;
trade_Structure.TradeDate = DateTime.Now.AddDays(-7).ToString("yyyy-MM-dd");
trade_Structure.ExerciseDate = DateTime.Now.ToString("yyyy-MM-dd");
trade_Structure.SettlementType = "Cash";
List<Structure> structures = new List<Structure>();
List<ObservationDate> observations = new List<ObservationDate>();
var dt = QdpObservationHelper.GetDatesWithFixedTerm(DateTime.Now.AddDays(-7), DateTime.Now, "1D");
foreach (var item in dt)
{
ObservationDate date = new ObservationDate();
if (item.Day == 18)
{
date.ValueDate = item.ToString("yyyy-MM-dd");
date.FixedPrice = 6666;
date.IsClosed = true;
date.ClosePrice = 6666;
}
else
{
date.ValueDate = item.ToString("yyyy-MM-dd");
date.FixedPrice = 6666;
date.IsClosed = false;
date.ClosePrice = null;
}
observations.Add(date);
}
for (int i = 0; i < 4; i++)
{
Structure structure = new Structure();
if(i==0)
{
structure.OptionType = "Call";
structure.Strike = 6666;
structure.BarrierPrice = 7000;
structure.Multiplier = 1;
structure.RAMP = "";
structure.IsAccAlSrike = false;
}
else
{
structure.OptionType = "None";
structure.Strike = null;
structure.BarrierPrice = null;
structure.Multiplier = null;
structure.RAMP = "";
structure.IsAccAlSrike = null;
}
structures.Add(structure);
}
trade_Structure.structures = structures;
trade_Structure.observations = observations;
string b = trade_Structure.ToJson();
}
}
public class trade_structure
{
public string UnderlyingCode { get; set; }
public string BuySell { get; set; }
public double? OriginalNotional { get; set; }
public double? SpotPrice { get; set; }
public string TradeDate { get; set; }
public string ExerciseDate { get; set; }
public string SettlementType { get; set; }
public double? Vol { get; set; }
public List<Structure> structures { get; set; }
public List<ObservationDate> observations { get; set; }
}
public class Structure
{
public string OptionType { get; set; }
public double? Strike { get; set; }
public double? BarrierPrice { get; set; }
public double? Multiplier { get; set; }
public string RAMP { get; set; }
public bool? IsAccAlSrike { get; set; }
}
public class ObservationDate
{
public string ValueDate { get; set; }
public double? FixedPrice { get; set; }
public bool IsClosed { get; set; }
public double? ClosePrice { get; set; }
}
}