关于样例代码中的OnRtnOrder

Discussion in 'CTP' started by skyline, Jul 29, 2011.

  1. 官方自带的样例代码中演示了 开仓,撤单,对撤单后面跟的OnRtnOrder有点疑问。

    发送了撤单,什么情况下返回的回报是正在交易的?
    这样不是多次撤单了吗?

    if (IsTradingOrder(pOrder))
    ReqOrderAction(pOrder);


    ///报单通知
    void CTraderSpi::OnRtnOrder(CThostFtdcOrderField* pOrder)
    {
    if (IsMyOrder(pOrder))
    {
    if (IsTradingOrder(pOrder))
    ReqOrderAction(pOrder);

    else if (pOrder->OrderStatus == THOST_FTDC_OST_Canceled)
    cout << "--->>> 撤单成功" << endl;
    }
    }
     
  2. OnRtnOrder,是返回定单的状态的函数。比方说当前白糖7400,你下7380的买单一张,显然不能成交,这时使用ReqOrderAction可以成功撤单。撤单成功后,OnRtnOrder再次被调用,此时定单状态是THOST_FTDC_OST_Canceled,显示撤单已成功。
     
  3. if (IsTradingOrder(pOrder))
    ReqOrderAction(pOrder);

    撤单成功后为什么还要检测下是否正在交易,如果正在交易就再撤销单子
     
  4. OnRtnOrder是回调函数,很多情况会被调用,不单是撤单时才会调用。示例代码演示的是下单然后撤单,如果下单成交了就不撤单了
     
  5. 明白了,谢谢 一马当先兄。