Optimizations
This commit is contained in:
@@ -15,6 +15,7 @@ namespace MarketData.Cache
|
||||
{
|
||||
private Dictionary<String,PricesByDate> priceCache=new Dictionary<String,PricesByDate>();
|
||||
private static LocalPriceCache instance=null;
|
||||
private DateTime latestDate = Utility.Epoch;
|
||||
private Thread cacheMonitorThread=null;
|
||||
private volatile bool threadRun=true;
|
||||
private int cacheCycle=300000;
|
||||
@@ -30,7 +31,8 @@ namespace MarketData.Cache
|
||||
{
|
||||
lock(thisLock)
|
||||
{
|
||||
priceCache=new Dictionary<String,PricesByDate>();
|
||||
priceCache=new Dictionary<String,PricesByDate>();
|
||||
RefreshLatestDate();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,18 +57,38 @@ namespace MarketData.Cache
|
||||
{
|
||||
lock(typeof(LocalPriceCache))
|
||||
{
|
||||
if(null==instance)instance=new LocalPriceCache();
|
||||
if(null==instance)
|
||||
{
|
||||
instance=new LocalPriceCache();
|
||||
instance.RefreshLatestDate();
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
}
|
||||
|
||||
public void RefreshLatestDate()
|
||||
{
|
||||
lock(typeof(LocalPriceCache))
|
||||
{
|
||||
latestDate=PricingDA.GetLatestDate();
|
||||
}
|
||||
}
|
||||
|
||||
public DateTime GetLatestDate()
|
||||
{
|
||||
lock(typeof(LocalPriceCache))
|
||||
{
|
||||
return latestDate;
|
||||
}
|
||||
}
|
||||
|
||||
public void Refresh()
|
||||
{
|
||||
lock(typeof(LocalPriceCache))
|
||||
{
|
||||
List<String> symbols=new List<String>(priceCache.Keys);
|
||||
Dictionary<String, DateTime> maxDbDates = PricingDA.GetLatestDates(symbols);
|
||||
|
||||
RefreshLatestDate();
|
||||
foreach(String symbol in symbols)
|
||||
{
|
||||
PricesByDate symbolPrices=priceCache[symbol];
|
||||
|
||||
@@ -24,7 +24,8 @@ namespace MarketData.Generator.GainLoss
|
||||
if (null == portfolioTrades || 0 == portfolioTrades.Count) return null;
|
||||
LocalPriceCache.GetInstance().Add(portfolioTrades);
|
||||
DateTime minTradeDate = portfolioTrades.GetMinTradeDate();
|
||||
DateTime maxDate = PricingDA.GetLatestDate();
|
||||
// DateTime maxDate = PricingDA.GetLatestDate();
|
||||
DateTime maxDate=LocalPriceCache.GetInstance().GetLatestDate();
|
||||
if(null!=maxDateRef)maxDate=maxDateRef.Value;
|
||||
Dictionary<DateTime,TotalGainLossItem> gainLossCollection = new Dictionary<DateTime, TotalGainLossItem>();
|
||||
DateGenerator dateGenerator = new DateGenerator();
|
||||
@@ -76,7 +77,8 @@ namespace MarketData.Generator.GainLoss
|
||||
if (null == portfolioTrades || 0 == portfolioTrades.Count) return null;
|
||||
LocalPriceCache.GetInstance().Add(portfolioTrades);
|
||||
DateTime minTradeDate = portfolioTrades.GetMinTradeDate();
|
||||
DateTime maxDate = PricingDA.GetLatestDate();
|
||||
// DateTime maxDate = PricingDA.GetLatestDate();
|
||||
DateTime maxDate=LocalPriceCache.GetInstance().GetLatestDate();
|
||||
if(null!=maxDateRef)maxDate=maxDateRef.Value;
|
||||
Dictionary<DateTime,TotalGainLossItem> gainLossCollection = new Dictionary<DateTime, TotalGainLossItem>();
|
||||
DateGenerator dateGenerator = new DateGenerator();
|
||||
|
||||
@@ -24,7 +24,7 @@ namespace MarketData.Generator.GainLoss
|
||||
{
|
||||
if(!ValidatePortfolioTrades(portfolioTrades))return null;
|
||||
DateTime minDate=portfolioTrades.GetMinTradeDate();
|
||||
DateTime maxDate=PricingDA.GetLatestDate();
|
||||
DateTime maxDate = LocalPriceCache.GetInstance().GetLatestDate();
|
||||
if(null!=maxDateRef) maxDate=maxDateRef.Value;
|
||||
double prevGainLoss=double.NaN;
|
||||
List<DateTime> historicalDates=dateGenerator.GenerateHistoricalDates(minDate,maxDate);
|
||||
@@ -103,9 +103,8 @@ namespace MarketData.Generator.GainLoss
|
||||
{
|
||||
if(!ValidatePortfolioTrades(portfolioTrades)) return null;
|
||||
DateTime minDate=portfolioTrades.Min(x => x.TradeDate);
|
||||
DateTime maxDate=PricingDA.GetLatestDate();
|
||||
DateTime maxDate = LocalPriceCache.GetInstance().GetLatestDate();
|
||||
double prevGainLoss=double.NaN;
|
||||
// LocalPriceCache.GetInstance().RemoveDate(maxDate);
|
||||
List<DateTime> historicalDates=dateGenerator.GenerateHistoricalDates(minDate,maxDate);
|
||||
|
||||
foreach(DateTime currentDate in historicalDates)
|
||||
@@ -124,11 +123,6 @@ namespace MarketData.Generator.GainLoss
|
||||
foreach(PortfolioTrade openPosition in openPositions)
|
||||
{
|
||||
exposure+=openPosition.Shares*openPosition.Price;
|
||||
//if(!LocalPriceCache.GetInstance().ContainsPrice(openPosition.Symbol,currentDate))
|
||||
//{
|
||||
// Prices prices=PricingDA.GetPricesForward(openPosition.Symbol,currentDate,90);
|
||||
// LocalPriceCache.GetInstance().Add(prices);
|
||||
//}
|
||||
Price price=LocalPriceCache.GetInstance().GetPrice(openPosition.Symbol,currentDate);
|
||||
if(null==price)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user