Initial Commit
This commit is contained in:
109
MarketData/MarketDataLib/MarketDataModel/StopLimit.cs
Executable file
109
MarketData/MarketDataLib/MarketDataModel/StopLimit.cs
Executable file
@@ -0,0 +1,109 @@
|
||||
using MarketData.Utils;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
/// <summary>
|
||||
/// This StopLimit class is used for database persistence
|
||||
/// </summary>
|
||||
|
||||
namespace MarketData.MarketDataModel
|
||||
{
|
||||
public class StopLimitConstants
|
||||
{
|
||||
public static readonly String STOP_QUOTE="Stop Quote";
|
||||
}
|
||||
|
||||
public class StopLimits:List<StopLimit>
|
||||
{
|
||||
public StopLimits()
|
||||
{
|
||||
}
|
||||
public StopLimits(List<StopLimit> stopLimits)
|
||||
{
|
||||
foreach(StopLimit stopLimit in stopLimits) Add(stopLimit);
|
||||
}
|
||||
public NVPCollections ToNVPCollections()
|
||||
{
|
||||
NVPCollections nvpCollections=new NVPCollections();
|
||||
foreach(StopLimit stopLimit in this)
|
||||
{
|
||||
nvpCollections.Add(stopLimit.ToNVPCollection());
|
||||
}
|
||||
return nvpCollections;
|
||||
}
|
||||
public static StopLimits FromNVPCollections(NVPCollections nvpCollections)
|
||||
{
|
||||
StopLimits stopLimits=new StopLimits();
|
||||
foreach(NVPCollection nvpCollection in nvpCollections)
|
||||
{
|
||||
stopLimits.Add(StopLimit.FromNVPCollection(nvpCollection));
|
||||
}
|
||||
return stopLimits;
|
||||
}
|
||||
public void AddFromNVPCollection(NVPCollection nvpCollection)
|
||||
{
|
||||
Add(StopLimit.FromNVPCollection(nvpCollection));
|
||||
}
|
||||
public void Add(StopLimits stopLimits)
|
||||
{
|
||||
foreach(StopLimit stopLimit in stopLimits)this.Add(stopLimit);
|
||||
}
|
||||
}
|
||||
|
||||
public class StopLimit
|
||||
{
|
||||
public String Symbol{get;set;}
|
||||
public double StopPrice{get;set;}
|
||||
public double Shares{get;set;}
|
||||
public String StopType{get;set;}
|
||||
public int Active{get;set;}
|
||||
public DateTime EffectiveDate{get;set;} // if the EffectiveDate is Epoch then the StopLimit is taken to be in effect and is the most recent. Otherwise it is considered an historical stop limit
|
||||
|
||||
public StopLimit()
|
||||
{
|
||||
}
|
||||
public StopLimit(String symbol,double stopPrice,int shares,String stopType,int active)
|
||||
{
|
||||
this.Symbol=symbol;
|
||||
this.StopPrice=stopPrice;
|
||||
this.Shares=shares;
|
||||
this.StopType=stopType;
|
||||
this.Active=active;
|
||||
}
|
||||
public override String ToString()
|
||||
{
|
||||
StringBuilder sb=new StringBuilder();
|
||||
sb.Append(Symbol).Append(",");
|
||||
sb.Append(Utility.FormatCurrency(StopPrice)).Append(",");
|
||||
sb.Append(Utility.FormatNumber(Shares,3)).Append(",");
|
||||
sb.Append(StopType).Append(",");
|
||||
sb.Append(Active.ToString()).Append(",");
|
||||
sb.Append(EffectiveDate.ToShortDateString());
|
||||
return sb.ToString();
|
||||
}
|
||||
public virtual NVPCollection ToNVPCollection()
|
||||
{
|
||||
NVPCollection nvpCollection=new NVPCollection();
|
||||
nvpCollection.Add(new NVP("Symbol",Symbol.ToString()));
|
||||
nvpCollection.Add(new NVP("StopPrice",StopPrice.ToString()));
|
||||
nvpCollection.Add(new NVP("Shares",Shares.ToString()));
|
||||
nvpCollection.Add(new NVP("StopType",StopType.ToString()));
|
||||
nvpCollection.Add(new NVP("Active",Active.ToString()));
|
||||
nvpCollection.Add(new NVP("EffectiveDate",EffectiveDate.ToShortDateString()));
|
||||
return nvpCollection;
|
||||
}
|
||||
public static StopLimit FromNVPCollection(NVPCollection nvpCollection)
|
||||
{
|
||||
StopLimit stopLimit=new StopLimit();
|
||||
|
||||
NVPDictionary nvpDictionary=nvpCollection.ToDictionary();
|
||||
stopLimit.Symbol=nvpDictionary["Symbol"].Get<String>();
|
||||
stopLimit.StopPrice=nvpDictionary["StopPrice"].Get<double>();
|
||||
stopLimit.Shares=nvpDictionary["Shares"].Get<double>();
|
||||
stopLimit.StopType=nvpDictionary["StopType"].Get<String>();
|
||||
stopLimit.EffectiveDate=nvpDictionary["EffectiveDate"].Get<DateTime>();
|
||||
return stopLimit;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user