public UncloseOrderWatcher(OrderContext orderContext,
                                   QuotationContext qutationContext, IOrderStore store,
                                   IPricePolicyStore pricePolicyStore, OrderServiceBuilder builder, OrderNotifyManager orderNotifyer)
        {
            if (orderContext == null)
            {
                throw new ArgumentNullException(nameof(orderContext));
            }
            if (qutationContext == null)
            {
                throw new ArgumentNullException(nameof(qutationContext));
            }
            if (store == null)
            {
                throw new ArgumentNullException(nameof(store));
            }
            if (pricePolicyStore == null)
            {
                throw new ArgumentNullException(nameof(pricePolicyStore));
            }
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            _orderContext     = orderContext;
            _qutationContext  = qutationContext;
            _store            = store;
            _pricePolicyStore = pricePolicyStore;
            _builder          = builder;
            _orderNotifyer    = orderNotifyer;

            DefaultClosePricePolicy = new RealTimeCloseOpenPricePolicy();
        }
        /// <summary>
        /// </summary>
        /// <param name="orderContext"></param>
        /// <param name="qutationContext"></param>
        /// <param name="orderStore"></param>
        /// <param name="orderPolicyStore"></param>
        /// <param name="pricePolicyStore"></param>
        /// <param name="generator"></param>
        /// <param name="notify"></param>
        /// <param name="logger"></param>
        public OrderService(OrderContext orderContext, QuotationContext qutationContext, IOrderStore orderStore,
                            IOrderPolicyStore orderPolicyStore, IPricePolicyStore pricePolicyStore,
                            IOrderIdGenerator generator, IOrderNotify notify, ILogger <OrderService> logger)
        {
            if (orderContext == null)
            {
                throw new ArgumentNullException(nameof(orderContext));
            }
            if (qutationContext == null)
            {
                throw new ArgumentNullException(nameof(qutationContext));
            }
            if (orderStore == null)
            {
                throw new ArgumentNullException(nameof(orderStore));
            }
            if (generator == null)
            {
                throw new ArgumentNullException(nameof(generator));
            }
            if (notify == null)
            {
                throw new ArgumentNullException(nameof(notify));
            }
            if (logger == null)
            {
                throw new ArgumentNullException(nameof(logger));
            }

            _orderContext     = orderContext;
            _qutationContext  = qutationContext;
            _orderStore       = orderStore;
            _orderPolicyStore = orderPolicyStore;
            _pricePolicyStore = pricePolicyStore;


            _orderIdGenerator          = generator;
            _notify                    = notify;
            _logger                    = logger;
            DefaultOpenOpenPricePolicy = new RealTimeOpenPricePolicy();
        }