using MarketData.Utils; using System; using System.Collections.Generic; using System.Text; /// /// This StopLimit class is used for database persistence /// namespace MarketData.MarketDataModel { public class StopLimitConstants { public static readonly String STOP_QUOTE="Stop Quote"; } public class StopLimits:List { public StopLimits() { } public StopLimits(List 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 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 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(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("EffectiveDate",EffectiveDate.ToShortDateString())); return nvpCollection; } public static StopLimit FromNVPCollection(NVPCollection nvpCollection) { StopLimit stopLimit=new StopLimit(); NVPDictionary nvpDictionary=nvpCollection.ToDictionary(); stopLimit.Symbol=nvpDictionary["Symbol"].Get(); stopLimit.StopPrice=nvpDictionary["StopPrice"].Get(); stopLimit.Shares=nvpDictionary["Shares"].Get(); stopLimit.StopType=nvpDictionary["StopType"].Get(); stopLimit.EffectiveDate=nvpDictionary["EffectiveDate"].Get(); return stopLimit; } } }