protected override FilledOrder Build() { UnvalidatedFilledOrder unvalidatedOrder = new UnvalidatedFilledOrder(Symbol, (float)FilledPrice, Instruction, OrderType, (float)Limit, Quantity, Time); FilledOrder? existingOrder = Database.GetTodaysFilledOrders().FirstOrDefault(order => unvalidatedOrder.StrictEquals(order)); if (existingOrder != null) { return(existingOrder); } else { bool isValid = MarketDataClient.ValidateWithinTodaysRangeAndGetQuote(unvalidatedOrder, out OptionQuote? quote); if (isValid) { return(new FilledOrder(unvalidatedOrder, quote)); } else { Log.Information("Found invalid symbol/price in parsed order: Symbol {Symbol}. Builder {@Builder}", Symbol, this); return(BuildModelFromSimilarUsedSymbol()); } } }
public bool ValidateWithinTodaysRangeAndGetQuote(UnvalidatedFilledOrder order, out OptionQuote?quote) { return(ValidateWithinTodaysRangeAndGetQuote(order.Symbol, order.Price, out quote)); }