/// <summary> /// Create or Update DailyPlay for trade idea /// </summary> public void AddOrUpdate(TradeIdea tradeIdea) { DateTime date = tradeIdea.DateOfScan.Date; DailyPlay dailyPlay = GetByDate(date); if (dailyPlay != null) { dailyPlay.Price = tradeIdea.Price; dailyPlay.MasterSecurity = tradeIdea.MasterSecurity; Update(dailyPlay); } else { dailyPlay = new DailyPlay { Price = tradeIdea.Price, SecurityCode = tradeIdea.MasterSecurity.SecurityCode, MasterSecurity = tradeIdea.MasterSecurity, Date = date }; Add(dailyPlay); } }
private Tuple <TradeIdea, TradeIdeaLog> GenerateTradeIdeaForLatestDate(List <Signal> signals, HistoricalData historicalData) { Tuple <TradeIdea, TradeIdeaLog> result; DateTime date = historicalData.LatestDate; //TODO: should we remove this at all? now delayed //SupportAndResistance sr = _algoService.GetSupportAndResistance(historicalData, expandedQuote.Last); TradeIdeasGeneratorArgument args = TradeIdeasGeneratorArgument.Create(signals, historicalData /*, sr*/); double marketCap = 0; //if (quote != null) //{ // marketCap = quote.MarketCapitalization ?? 0; //} TradeIdeaLog tradeIdeaLog = new TradeIdeaLog(historicalData.SecurityCode, args, date); List <TradeIdeaRuleWrapper> generatedTradeIdeas = GenerateTradeIdeas(args, tradeIdeaLog); Signal syrahSentiment = signals .ForIndicator(TradeIdeasGeneratorArgument.LongTermSentimentForDependencies) .FirstOrDefault(s => s.Date == date); int?syrahSentimentLongTerm = syrahSentiment == null ? null : (int?)syrahSentiment.Value; syrahSentiment = signals .ForIndicator(TradeIdeasGeneratorArgument.ShortTermSentimentForDependencies) .FirstOrDefault(s => s.Date == date); int?syrahSentimentShortTerm = syrahSentiment == null ? null : (int?)syrahSentiment.Value; double lastPrice = historicalData.Close.Last(); string companyName = historicalData.SecurityCode; if (generatedTradeIdeas != null && generatedTradeIdeas.Any()) { TradeIdea tradeIdea = new TradeIdea { DailyPlay = false, DateOfScan = date, MarketCap = marketCap, Price = lastPrice, StockCode = historicalData.SecurityCode, CompanyName = companyName, SyrahSentimentValue = syrahSentimentLongTerm, SyrahSentimentShortTerm = syrahSentimentShortTerm, RuleMatch = generatedTradeIdeas.Select(item => item.Rule).ToList(), RulesWithLogs = generatedTradeIdeas }; result = Tuple.Create(tradeIdea, tradeIdeaLog); } else { result = Tuple.Create((TradeIdea)null, tradeIdeaLog); } return(result); }
public static void SetDateOfScan(this TradeIdea tradeIdea, DateTime date) { tradeIdea.DateOfScan = new DateTime(date.Year, date.Month, date.Day, 0, 0, 0, DateTimeKind.Utc); tradeIdea.DateOfScanTicks = Convert.ToInt32(tradeIdea.DateOfScan.Ticks / Precision); }
public void SaveTradeIdea(TradeIdea tradeIdea) { throw new NotImplementedException(); }