Exemplo n.º 1
0
        public void EvaluateAndUpdateOrder(MyMarketOrder order)
        {
            Debug.Assert(order != null);
            Log.WriteLog("Trying to evaluate and update order " + order.ID.ToString() + ": " + order.Type.ToString());

            //update evaluate cd
            order.EvaluateCoolDownEndTime = System.DateTime.UtcNow.AddMilliseconds(Config.IntervalOfProcessingSameOrder);

            // get good price
            double RecommendedPrice = _decide.GetRecommendedPrice(order);
            // <0 means we cannot find a obvious best price
            // new price >0?
            if (RecommendedPrice > 0)
            {
                // if already good
                if (RecommendedPrice == order.Price)
                {
                    // need no update -> update state
                    order.Status = OrderStatus.NeedNoUpdate;
                }
                else
                {
                    // TODO check config limit

                    //  Update  -> update state and modify cd /// or hesatate(config restricted)
                    order.Modify(RecommendedPrice);
                    order.Status = OrderStatus.AutoModified;
                }
            }
            else
            {
                order.Status = OrderStatus.Hesitate;
            }

            Log.WriteLog("Done evaluating and updating order " + order.ID.ToString() + ": " + order.Type.ToString());
        }