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());
                }
            }
        }
Esempio n. 2
0
 public bool ValidateWithinTodaysRangeAndGetQuote(UnvalidatedFilledOrder order, out OptionQuote?quote)
 {
     return(ValidateWithinTodaysRangeAndGetQuote(order.Symbol, order.Price, out quote));
 }