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(); } }