111 lines
3.8 KiB
C#
Executable File
111 lines
3.8 KiB
C#
Executable File
using MarketData.Utils;
|
|
|
|
namespace MarketData.Generator.CMMomentum
|
|
{
|
|
public class SlotPositions : List<SlotPosition>
|
|
{
|
|
public SlotPositions()
|
|
{
|
|
}
|
|
public SlotPositions(int slot, Positions positions)
|
|
{
|
|
for (int index = 0; index < positions.Count; index++)
|
|
{
|
|
Add(new SlotPosition(slot, positions[index]));
|
|
}
|
|
}
|
|
public NVPCollections ToNVPCollections()
|
|
{
|
|
NVPCollections nvpCollections = new NVPCollections();
|
|
foreach (SlotPosition position in this)
|
|
{
|
|
nvpCollections.Add(position.ToNVPCollection());
|
|
}
|
|
return nvpCollections;
|
|
}
|
|
public static SlotPositions FromNVPCollections(NVPCollections nvpCollections)
|
|
{
|
|
SlotPositions positions = new SlotPositions();
|
|
foreach (NVPCollection nvpCollection in nvpCollections)
|
|
{
|
|
positions.Add(SlotPosition.FromNVPCollection(nvpCollection));
|
|
}
|
|
return positions;
|
|
}
|
|
}
|
|
public class SlotPosition : Position
|
|
{
|
|
public SlotPosition()
|
|
{
|
|
}
|
|
public SlotPosition(int slot, Position position) : base(position)
|
|
{
|
|
Slot = slot;
|
|
//Symbol = position.Symbol;
|
|
//PurchaseDate = position.PurchaseDate;
|
|
//SellDate = position.SellDate;
|
|
//Shares = position.Shares;
|
|
//PurchasePrice = position.PurchasePrice;
|
|
//CurrentPrice = position.CurrentPrice;
|
|
//Beta= position.Beta;
|
|
//BetaMonths = position.BetaMonths;
|
|
//SharpeRatio = position.SharpeRatio;
|
|
//Weight = position.Weight;
|
|
//RiskAdjustedWeight = position.RiskAdjustedWeight;
|
|
//RiskAdjustedAllocation = position.RiskAdjustedAllocation;
|
|
//TargetBetaOverBeta = position.TargetBetaOverBeta;
|
|
}
|
|
public SlotPosition(Position position) : base(position)
|
|
{
|
|
//Symbol = position.Symbol;
|
|
//PurchaseDate = position.PurchaseDate;
|
|
//SellDate = position.SellDate;
|
|
//Shares = position.Shares;
|
|
//PurchasePrice = position.PurchasePrice;
|
|
//CurrentPrice = position.CurrentPrice;
|
|
//Beta = position.Beta;
|
|
//BetaMonths = position.BetaMonths;
|
|
//SharpeRatio = position.SharpeRatio;
|
|
//Weight = position.Weight;
|
|
//RiskAdjustedWeight = position.RiskAdjustedWeight;
|
|
//RiskAdjustedAllocation = position.RiskAdjustedAllocation;
|
|
//TargetBetaOverBeta = position.TargetBetaOverBeta;
|
|
}
|
|
public Position ToPosition()
|
|
{
|
|
Position position = new Position(this);
|
|
return position;
|
|
//Position position = new Position();
|
|
//position.Symbol = Symbol;
|
|
//position.PurchaseDate = PurchaseDate;
|
|
//position.SellDate = SellDate;
|
|
//position.Shares = Shares;
|
|
//position.PurchasePrice = PurchasePrice;
|
|
//position.CurrentPrice = CurrentPrice;
|
|
//position.Beta = Beta;
|
|
//position.BetaMonths = BetaMonths;
|
|
//position.SharpeRatio = SharpeRatio;
|
|
//position.Weight = Weight;
|
|
//position.RiskAdjustedWeight = RiskAdjustedWeight;
|
|
//position.RiskAdjustedAllocation = RiskAdjustedAllocation;
|
|
//position.TargetBetaOverBeta = TargetBetaOverBeta;
|
|
//return position;
|
|
}
|
|
public int Slot { get; set; }
|
|
public override NVPCollection ToNVPCollection()
|
|
{
|
|
NVPCollection nvpCollection = base.ToNVPCollection();
|
|
nvpCollection.Insert(0, new NVP("Slot", Slot.ToString()));
|
|
return nvpCollection;
|
|
}
|
|
public static new SlotPosition FromNVPCollection(NVPCollection nvpCollection)
|
|
{
|
|
NVPDictionary nvpDictionary = nvpCollection.ToDictionary();
|
|
Position position = Position.FromNVPCollection(nvpCollection);
|
|
SlotPosition slotPosition = new SlotPosition(position);
|
|
slotPosition.Slot = nvpDictionary["Slot"].Get<int>();
|
|
return slotPosition;
|
|
}
|
|
}
|
|
}
|