public virtual void Do()
 {
     if (Order.Status == OrderStatus.PendingNew)
     {
         var report = new ExecutionReport(Order);
         report.ExecType  = ExecType.ExecNew;
         report.OrdStatus = OrderStatus.New;
         Agent.EmitExecutionReport(report);
     }
     if (Order.Type == OrderType.Market &&
         double.IsNaN(_marketData.OpenPrice) &&
         !_rules.MarketOrder)
     {
         var report = new ExecutionReport(Order);
         report.ExecType  = ExecType.ExecRejected;
         report.OrdStatus = OrderStatus.Rejected;
         report.Text      = "没有行情无法将市价转化为限价";
         Agent.EmitExecutionReport(report);
         Clear();
         return;
     }
     AutoCloseOpen();
     SendOrder();
 }
        public void Init()
        {
            if (_order.Status == OrderStatus.PendingNew)
            {
                var report = new ExecutionReport(_order)
                {
                    ExecType  = ExecType.ExecNew,
                    OrdStatus = OrderStatus.New
                };
                _agent.EmitExecutionReport(report);
            }
            if (!CheckMarketToLimit())
            {
                var report = new ExecutionReport(_order)
                {
                    ExecType  = ExecType.ExecRejected,
                    OrdStatus = OrderStatus.Rejected,
                    Text      = "无法将市价转化为限价"
                };
                _agent.EmitExecutionReport(report);
                Clear();
                return;
            }

            if (SetOpenClose())
            {
                FrozenPosition();
                SendOrder();
            }
            else
            {
                var report = new ExecutionReport(_order)
                {
                    ExecType  = ExecType.ExecRejected,
                    OrdStatus = OrderStatus.Rejected,
                    Text      = "平仓仓位不足"
                };
                _agent.EmitExecutionReport(report);
                Clear();
            }
        }