static void _client_RspError(CTP_CLI.CThostFtdcRspInfoField_M pRspInfo, int nRequestID, bool bIsLast) { throw new NotImplementedException(); }
/// <summary> /// 登陆成功回掉函数 /// </summary> /// <param name="pRspUserLogin">用户登录信息结构</param> /// <param name="pRspInfo">返回用户响应信息</param> /// <param name="nRequestID">返回用户登录请求的ID,该ID 由用户在登录时指定。</param> /// <param name="bIsLast">指示该次返回是否为针对nRequestID的最后一次返回。</param> static void _client_RspUserLogin(CTP_CLI.CThostFtdcRspUserLoginField_M pRspUserLogin, CTP_CLI.CThostFtdcRspInfoField_M pRspInfo, int nRequestID, bool bIsLast) { if (pRspInfo.ErrorID == 0 && bIsLast == true) { status = FutureTradeThreadStatus.LOGIN; } //throw new NotImplementedException(); }
/// <summary> /// 报单回报(私有回报) /// 此函数通知报单的变化 /// </summary> /// <param name="pOrder"></param> static void _client_RtnOrder(CTP_CLI.CThostFtdcOrderField_M pOrder) { switch (pOrder.OrderStatus) { case 48: { //全部成交 TradeRecord.GetInstance().UpdateOrder(pOrder.VolumeTraded,Convert.ToInt16(pOrder.OrderRef),pOrder.OrderSysID,pOrder.StatusMsg,pOrder.OrderStatus,pOrder.VolumeTotal); } break; case 49: { //部分成交 TradeRecord.GetInstance().UpdateOrder(pOrder.VolumeTraded,Convert.ToInt16(pOrder.OrderRef),pOrder.OrderSysID,pOrder.StatusMsg,pOrder.OrderStatus,pOrder.VolumeTotal); } break; case 51: { //未成交状态 TradeRecord.GetInstance().UpdateOrder(pOrder.VolumeTraded,Convert.ToInt16(pOrder.OrderRef),pOrder.OrderSysID,pOrder.StatusMsg,pOrder.OrderStatus,pOrder.VolumeTotal); } break; case 53: { //已撤单状态 TradeRecord.GetInstance().UpdateOrder(pOrder.VolumeTraded,Convert.ToInt16(pOrder.OrderRef),pOrder.OrderSysID,pOrder.StatusMsg,pOrder.OrderStatus,pOrder.VolumeTotal); } break; case 97: { //报单已经提交,创建委托记录 TradeRecord.GetInstance().SubscribeOrder("1", pOrder.InstrumentID, Convert.ToChar(pOrder.Direction).ToString(), pOrder.VolumeTotalOriginal, Convert.ToDecimal(pOrder.LimitPrice), Convert.ToInt16(pOrder.OrderRef), pOrder.OrderStatus, pOrder.CombOffsetFlag_0); } break; default: { //如果是没有见过的状态,则默认更新委托信息 TradeRecord.GetInstance().UpdateOrder(pOrder.VolumeTraded,Convert.ToInt16(pOrder.OrderRef),pOrder.OrderSysID,pOrder.StatusMsg,pOrder.OrderStatus,pOrder.VolumeTotal); } break; } }
/// <summary> /// 成交回报(私有回报) /// 此函数通知交易的变化 /// </summary> /// <param name="pTrade"></param> static void _client_RtnTrade(CTP_CLI.CThostFtdcTradeField_M pTrade) { TradeRecord.GetInstance().UpdateTrade(Convert.ToInt16(pTrade.OrderRef), pTrade.Volume, Convert.ToDecimal(pTrade.Price), pTrade.TradeID); }
/// <summary> /// 提交报单请求响应处理函数, 当报单内容有问题时,通过该函数响应 /// </summary> /// <param name="pInputOrderAction">报单请求内容</param> /// <param name="pRspInfo">返回信息</param> /// <param name="nRequestID"></param> /// <param name="bIsLast"></param> static void _client_RspOrderAction(CTP_CLI.CThostFtdcInputOrderActionField_M pInputOrderAction, CTP_CLI.CThostFtdcRspInfoField_M pRspInfo, int nRequestID, bool bIsLast) { //throw new NotImplementedException(); }
/// <summary> /// 交易提交出现问题回掉函数 /// </summary> /// <param name="pInputOrder"></param> /// <param name="pRspInfo"></param> /// <param name="nRequestID"></param> /// <param name="bIsLast"></param> static void _client_RspOrderInsert(CTP_CLI.CThostFtdcInputOrderField_M pInputOrder, CTP_CLI.CThostFtdcRspInfoField_M pRspInfo, int nRequestID, bool bIsLast) { TradeRecord.GetInstance().MarkFailure(Convert.ToInt16(pInputOrder.OrderRef), pRspInfo.ErrorMsg); }