using MarketData.Utils;
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;
}
}
}