public async Task DownloadOptionChains() { Thread.Sleep(1000); DateTime monday = DateTime.Now.GetPreviousDayOfWeekOccurrence(DayOfWeek.Monday); DateTime friday = DateTime.Now.GetPreviousDayOfWeekOccurrence(DayOfWeek.Friday); Query query = new Query(); query.SortPropertyName = Security.PropertyNames.Symbol; query.QuerySingleFilters.Add(new QuerySingleFilter() { PropertyName = Security.PropertyNames.PairEligible, Parameter = "true", QueryOperator = QueryOperators.Equals }); List <Security> securities = SecurityService.GetCollection(query); securities.RemoveAll(x => (x.NextEarningsDate.HasValue && x.NextEarningsDate >= monday && x.NextEarningsDate <= friday)); securities.RemoveAll(x => (x.ExDividendDate.HasValue && x.ExDividendDate >= monday && x.ExDividendDate <= friday)); for (int i = 0; i < securities.Count; i++) { Security security = securities[i]; OnProgressMessageRaised(new HtmlTag("li").Class("list-group-item").Class("active") .Append(HtmlTags.Span.Append("Processing security: ")) .Append(HtmlTags.B.Append(security.Symbol)).ToHtml().ToString(), this.JobId); if (SecurityService.GetCurrentPrice(security)) { SecurityService.Save(security); OnProgressMessageRaised(new HtmlTag("li").Class("list-group-item") .Append(HtmlTags.B.Append(security.Symbol)) .Append(HtmlTags.Span.Append($" current price: {security.CurrentPrice:C}")) .ToHtml().ToString(), this.JobId); OptionChain optionChain = OptionChainService.GetOpcOptionChain(security); if (optionChain != null) { OnProgressMessageRaised(new HtmlTag("li").Class("list-group-item") .Append(HtmlTags.B.Append(security.Symbol)) .Append(HtmlTags.Span.Append(" option chain retrieved")) .ToHtml().ToString(), this.JobId); optionChain.SecurityIdentifier = security.Identifier; OptionChainService.Save(optionChain); } } } }
public void Purge() { Thread.Sleep(1500); SendPurgeMessage("WeeklyIncomeComboCount"); foreach (WeeklyIncomeComboCount x in WeeklyIncomeComboCountService.GetCollection()) { WeeklyIncomeComboCountService.Delete(x); } SendPurgeMessage("OptionStrike"); foreach (OptionStrike x in OptionStrikeService.GetCollection()) { OptionStrikeService.Delete(x); } SendPurgeMessage("OptionDate"); foreach (OptionDate x in OptionDateService.GetCollection()) { OptionDateService.Delete(x); } SendPurgeMessage("OptionChain"); foreach (OptionChain x in OptionChainService.GetCollection()) { OptionChainService.Delete(x); } SendPurgeMessage("BullPutSpread"); foreach (BullPutSpread x in BullPutSpreadService.GetCollection()) { BullPutSpreadService.Delete(x); } SendPurgeMessage("BearCallSpread"); foreach (BearCallSpread x in BearCallSpreadService.GetCollection()) { BearCallSpreadService.Delete(x); } SendPurgeMessage("PairCondor"); foreach (PairCondor x in PairCondorService.GetCollection()) { PairCondorService.Delete(x); } SendPurgeMessage("WeeklyIncomeActionPlan"); foreach (WeeklyIncomeActionPlan x in WeeklyIncomeActionPlanService.GetCollection()) { WeeklyIncomeActionPlanService.Delete(x); } SendPurgeMessage("Call"); foreach (Call x in CallService.GetCollection()) { CallService.Delete(x); } SendPurgeMessage("Put"); foreach (Put x in PutService.GetCollection()) { PutService.Delete(x); } SendPurgeMessage("WeeklyIncomePlaySheet"); foreach (WeeklyIncomePlaySheet x in WeeklyIncomePlaySheetService.GetCollection()) { WeeklyIncomePlaySheetService.Delete(x); } OnRedirectRaised("WeeklyIncome", "Index", 0, this.JobId); }