public static OrderCancelReject CreateOrderCancelReject(OrderCancelRequest msg, int rejectReason, string rejectReasonText) { var orderid = (msg.IsSetOrderID()) ? msg.OrderID.Obj : "unknown orderID"; var ocj = new OrderCancelReject( new OrderID(orderid), msg.ClOrdID, msg.OrigClOrdID, new OrdStatus(OrdStatus.REJECTED), new CxlRejResponseTo(CxlRejResponseTo.ORDER_CANCEL_REQUEST)) { CxlRejReason = new CxlRejReason(rejectReason), Text = new Text(rejectReasonText) }; return ocj; }
private void CancelOrder() { OrderCancelRequest request = new OrderCancelRequest { Body = new OrderCancelBody { OrderInfo = new FengjingSDK461.Model.Request.OrderCancelInfo { OrderId = textBox3.Text, OrderPrice = Convert.ToDecimal(textBox9.Text), OrderQuantity = Convert.ToInt32(textBox10.Text), reason = textBox11.Text, Seq = textBox12.Text } } }; var result = Class1.CancelOrder(request); SetMsg("取消订单: \r\n" + JsonHelper.ObjectToJson(result)); }
public async Task <ApiResult <string> > CancelOrder(OrderCancelRequest request) { var client = _httpClientFactory.CreateClient(); client.BaseAddress = new Uri(_configuration["BaseAddress"]); var json = JsonConvert.SerializeObject(request); var httpContent = new StringContent(json, Encoding.UTF8, "application/json"); var respone = await client.PostAsync($"/api/order/cancelorder", httpContent); var result = await respone.Content.ReadAsStringAsync(); if (respone.IsSuccessStatusCode) { return(JsonConvert.DeserializeObject <ApiSuccessResult <string> >(result)); } else { return(JsonConvert.DeserializeObject <ApiErrorResult <string> >(result)); } }
/// <summary> /// Cancel Limit order /// </summary> /// <param name="order"></param> public void CancelLimitOrder(Order order) { try { // Create FIX order OrderCancelRequest orderCancelRequest = OrderCancelRequest(order); // Send request Session.SendToTarget(orderCancelRequest, _orderSessionId); if (Logger.IsDebugEnabled) { Logger.Debug("Cancel Order Sent " + order, _type.FullName, "CancelLimitOrder"); } } catch (Exception exception) { Logger.Error(exception, _type.FullName, "CancelLimitOrder"); } }
/// <summary> /// 取消订单基础数据验证 /// </summary> /// <param name="request"></param> /// <param name="otaBusinessId"></param> /// <returns></returns> public DataValidResult ValidDataForOrderCancelRequest(OrderCancelRequest request, int otaBusinessId) { var result = new DataValidResult { Status = false }; if (string.IsNullOrEmpty(request.Body.OrderInfo.OrderId)) { result.Code = "114001"; result.Message = "订单取消失败,订单id不能为空"; return(result); } if (request.Body.OrderInfo.OrderQuantity <= 0) { result.Code = "114003"; result.Message = "订单取消失败,订单总票数不能小于1"; return(result); } var tbl_Order = Get(request.Body.OrderInfo.OrderId); if (tbl_Order == null) { result.Code = "114004"; result.Message = "订单取消失败,订单不存在"; return(result); } if (tbl_Order.OTABusinessId != otaBusinessId) { result.Code = "114005"; result.Message = "订单取消失败,订单存在,但不属于该调用者"; return(result); } if (tbl_Order.BookCount != request.Body.OrderInfo.OrderQuantity) { result.Code = "114007"; result.Message = "订单取消失败,订单总票数和原始总票数不一致"; return(result); } result.Status = true; return(result); }
public Task CancelAsync(string orderId, [FromBody] OrderCancelRequest request = null, string accountId = null) { if (!_ordersCache.TryGetOrderById(orderId, out var order)) { throw new InvalidOperationException("Order not found"); } ValidationHelper.ValidateAccountId(order, accountId); var reason = request?.Originator == OriginatorTypeContract.System ? OrderCancellationReason.CorporateAction : OrderCancellationReason.None; var canceledOrder = _tradingEngine.CancelPendingOrder(order.Id, request?.AdditionalInfo, request?.Comment, reason); _operationsLogService.AddLog("action order.cancel", order.AccountId, request?.ToJson(), canceledOrder.ToJson()); return(Task.CompletedTask); }
/// <summary> /// 取消订单 /// </summary> /// <param name="request"></param> /// <returns></returns> public static OrderCancelResponse CancelOrder(OrderCancelRequest request) { request.Head = new HeadRequest { InvokeTime = DateTime.Now.ToString("yyyy-MM-dd"), InvokeUser = key, ProtocolVersion = "V1" }; string url = apiUrl + "order/cancel"; var result = dooPost(request, url).Result; if (!string.IsNullOrEmpty(result.Data)) { return(Base64Helper.Base64EncodeToObject <OrderCancelResponse>(result.Data)); } return(new OrderCancelResponse { Head = new HeadResponse { Describe = "数据格式不正确" } }); }
public async Task <ApiResult <string> > CancelOrder(OrderCancelRequest request) { var order = await _context.Orders.FindAsync(request.Id); if (order == null) { return(new ApiErrorResult <string>("Không tìm thấy đơn hàng này trong CSDL")); } if (order.status == -1) { return(new ApiErrorResult <string>("Đơn hàng này đã bị hủy trước đó, không thể hủy lại")); } var isValid = await _context.Transports.AnyAsync(x => x.order_id == request.Id && x.ship_status == 1); if (isValid) { return(new ApiErrorResult <string>("Đơn hàng này đã được tạo đơn vận chuyển, không thể hủy")); } else { order.status = -1; order.cancel_reason = request.reason; order.cancel_at = DateTime.Now; var details = await _context.OrDetails.Where(x => x.order_id == order.id).ToListAsync(); foreach (var item in details) { var product = _context.Products.Find(item.product_id); if (product != null) { if (product.instock != null) { product.instock += item.quantity; } } } _context.SaveChanges(); return(new ApiSuccessResult <string>("Hủy đơn hàng thành công")); } }
public ReturnResult SimulationMTGetDeal(string url, OrderCancelRequestBody body) { ReturnResult result = new ReturnResult { IsSuccess = false, }; try { OrderCancelRequest requestData = new OrderCancelRequest { partnerId = agentinfo.mt_partnerId, body = body }; var responseStr = new MeiTuanInter(agentinfo.mt_partnerId, agentinfo.mt_secret, agentinfo.mt_client).DoRequest(url, JsonConvert.SerializeObject(requestData)); if (string.IsNullOrEmpty(responseStr)) { result.Message = "返回数据为空"; } else { OrderCancelResponse responseBody = (OrderCancelResponse)JsonConvert.DeserializeObject(responseStr, typeof(OrderCancelResponse)); if (responseBody.code == 200) { result.IsSuccess = true; result.Message = JsonConvert.SerializeObject(responseBody); } else { result.Message = responseBody.describe; } } } catch (Exception ex) { result.Message = "异常" + ex.Message; } return(result); }
public void OnMessage(OrderCancelRequest msg, SessionID sessionID) { var execID = _execIdGenerator(); try { var orderID = TranslateFixMessages.GetOrderIdFromMessage(msg); _commandFactory.EnqueueCancelOrder(_messageGenerator, sessionID, orderID, msg.ClOrdID.getValue(), msg.OrigClOrdID.getValue(), execID); } catch (QuickFIXException e) { var reply = CreateFix44Message.CreateOrderCancelReject(msg, CxlRejReason .OTHER, e.Message); _fixFacade.SendToTarget(reply, sessionID); } }
public void OnMessage(OrderCancelRequest msg, SessionID sessionID) { var execID = _execIdGenerator(); try { var orderID = TranslateFixMessages.GetOrderIdFromMessage(msg); _commandFactory.EnqueueCancelOrder(_messageGenerator, sessionID, orderID, msg.ClOrdID.getValue(), msg.OrigClOrdID.getValue(), execID); } catch (QuickFIXException e) { var reply = CreateFix42Message.CreateOrderCancelReject(msg, CxlRejReason .OTHER, e.Message); _fixFacade.SendToTarget(reply, sessionID); } }
/// <summary> /// 取消订单详情 /// </summary> /// <param name="orderInfo"></param> private PageResult CancelOrder(OrderCancelRequest request, Tbl_OTABusiness business) { string orderId = request.Body.OrderInfo.OrderId; OrderCancelResponse result = new OrderCancelResponse { Head = HeadResult.V1 }; var validResult = _orderService.ValidDataForOrderCancelRequest(request, business.Id); if (!validResult.Status) { result.Head.Code = validResult.Code; result.Head.Describe = validResult.Message; return(PageDataResult.Data(result, business.Saltcode.ToString())); } var tbl_Order = _orderService.Get(orderId); var checkResult = _orderDetailService.CheckOrderDetailIsCanncel(orderId); if (!checkResult.Status) { result.Head.Code = checkResult.Code; result.Head.Describe = checkResult.Message; return(PageDataResult.Data(result, business.Saltcode.ToString())); } try { _orderService.BeginTran(); foreach (var row in checkResult.List) { //添加退款记录 var tbl_RefundDetail = _refundDetailService.Add(row); //更新订单详情的状态:为已退款 _orderDetailService.UpdateOrderDetailForRefund(row); //更新票的日售票数 _ticketService.UpdateTicketBySellCount(row); //添加日志 _saleLogService.Add(tbl_RefundDetail); } //退激活票时,同步删除验票表存在的数据 _ticketTestingService.Delete(tbl_Order.OrderNo); //提交事物 _orderService.CommitTran(); } catch { _orderService.RollbackTran(); result.Head.Code = "114012"; result.Head.Describe = "订单取消失败,系统出错"; return(PageDataResult.Data(result, business.Saltcode.ToString())); } result.Body = new FengjingSDK461.Model.Response.OrderCancelInfo { Message = "成功" }; result.Head.Code = "000000"; result.Head.Describe = "成功"; return(PageDataResult.Data(result, business.Saltcode.ToString())); //try //{ // //电子票发送退票短信 // _smsService.RefundSend(checkResult.List, tbl_Order.Mobile); // result.Head.Code = "000000"; // result.Head.Describe = "成功"; // return PageDataResult.Data(result, business.Saltcode.ToString()); //} //catch (Exception ex) //{ // result.Head.Code = "000003"; // result.Head.Describe = "取消订单成功,发送退票短信失败"; // return PageDataResult.Data(result, business.Saltcode.ToString()); //} }
public Message CreateOrderCancelMessage(string symbol, string clOrdID, string newClOrdID, MarketSide side, string orderID) { var ocq = new OrderCancelRequest(new OrigClOrdID(clOrdID), new ClOrdID(newClOrdID), new Symbol(symbol), TranslateFixFields.Translate(side), new TransactTime(DateTime.Now)) { OrderID = new OrderID(orderID) }; return ocq; }
/// <summary> /// 取消接口 /// </summary> /// <param name="requestData"></param> /// <returns></returns> public object CancelOrder(string request) { var requestBody = _ctripGateway.CheckCancelOrder(request); if (requestBody == null) { return(_ctripGateway.ErrorResult(ResultCode.JsonParsingFailure, "报文解析失败")); } var data = requestBody.Data; var CancelOrderRequest = new OrderCancelRequest { Body = new OrderCancelBody { OrderInfo = new OrderCancelInfo { OrderId = data.SupplierOrderId, OtaOrderId = data.OtaOrderId, OrderPrice = 0, OrderQuantity = data.Items.Sum(a => a.Quantity), reason = "", Seq = data.SequenceId, Items = new List <CancelOrderItemInfo>() } } }; foreach (var row in data.Items) { CancelOrderRequest.Body.OrderInfo.Items.Add(new CancelOrderItemInfo { ItemId = row.ItemId, ProductId = row.PLU, Quantity = row.Quantity, Amount = row.Amount }); } var response = _ticketGateway.CancelOrderDetail(CancelOrderRequest); if (response.Head.Code == "000000") { var responseBody = new CancelOrderBodyRespose { supplierConfirmType = 1, items = new List <CancelOrderitemRespose>() }; foreach (var row in data.Items) { responseBody.items.Add(new CancelOrderitemRespose { itemId = row.ItemId }); } return(_ctripGateway.CancelOrder(responseBody)); } else if (response.Head.Code == "114003" || response.Head.Code == "114014") { return(_ctripGateway.ErrorResult(ResultCode.CancelOrderForNotCount, response.Head.Describe)); } else if (response.Head.Code == "114004") { return(_ctripGateway.ErrorResult(ResultCode.CancelOrderNumberNotExist, response.Head.Describe)); } else if (response.Head.Code == "114009") { return(_ctripGateway.ErrorResult(ResultCode.CancelOrderForConsume, response.Head.Describe)); } else if (response.Head.Code == "114010" || response.Head.Code == "114013") { return(_ctripGateway.ErrorResult(ResultCode.CancelOrderForCancel, response.Head.Describe)); } else if (response.Head.Code == "114011") { return(_ctripGateway.ErrorResult(ResultCode.CancelOrderForExpired, response.Head.Describe)); } else if (response.Head.Code == "114012") { return(_ctripGateway.ErrorResult(ResultCode.SystemError, response.Head.Describe)); } return(_ctripGateway.ErrorResult(ResultCode.CancelOrderForError, response.Head.Describe)); }
public void SendOrderCancelRequest(OrderCancelRequest request) { IOrder iorder = ((InstrumentOrderListTable)OrderManager.Orders).All[request.OrigClOrdID]; this.provider.CallCancel(Map.FQ_OQ_Order[(object)iorder] as Order); }
public virtual void onMessage(OrderCancelRequest message, QuickFix.SessionID session) { throw new QuickFix.UnsupportedMessageType(); }
/// <summary> /// 检查订单详情的状态,是否还能取消。 /// </summary> /// <param name="orderDetailId">订单编号</param> /// <returns></returns> public DataValidResult <Tbl_OrderDetail> CheckOrderDetailIsCanncel(OrderCancelRequest orderCancelRequest, string orderNo) { var result = new DataValidResult <Tbl_OrderDetail>() { Status = false, List = new List <Tbl_OrderDetail>() }; var list = GetList(orderNo); var items = orderCancelRequest.Body.OrderInfo.Items; if (items == null || items.Count <= 0) { result.Code = "114012"; result.Message = "订单取消失败,系统出错"; return(result); } foreach (var row in items) { var orderDetail = list.FirstOrDefault(a => a.OtaOrderDetailId == row.ItemId); if (orderDetail == null) { result.Code = "114004"; result.Message = "订单取消失败,订单不存在"; return(result); } if (orderDetail.Quantity != row.Quantity) { result.Code = "114014"; result.Message = "订单取消失败,订单取消数量不正确"; return(result); } if (orderDetail.OrderStatus == (int)OrderDetailsDataStatus.Canncel || orderDetail.OrderStatus == (int)OrderDetailsDataStatus.Refund) { continue; } if (orderDetail.OrderStatus == (int)OrderDetailsDataStatus.Consume) { result.Code = "114009"; result.Message = "订单取消失败,订单已消费,订单不能取消"; return(result); } if (orderDetail.OrderStatus == (int)OrderDetailsDataStatus.IsTaken) { result.Code = "114013"; result.Message = "订单取消失败,订单已取票,不能取消"; return(result); } if (orderDetail.CanRefund == false) { result.Code = "114010"; result.Message = "订单取消失败,订单不支持取消"; return(result); } if (orderDetail.CanRefundTime < DateTime.Now.Date) { result.Code = "114011"; result.Message = "订单取消失败,订单已过期,不可退"; return(result); } if (orderDetail.OrderStatus == (int)OrderDetailsDataStatus.Success || orderDetail.OrderStatus == (int)OrderDetailsDataStatus.Activate) { result.List.Add(orderDetail); continue; } result.Code = "114012"; result.Message = "订单取消失败,系统出错"; return(result); } result.Status = true; return(result); }
private void SendSelectedRequest() { switch (DataContainer.Data[_listBoxSelectedIndexNo].MsgType) { case "U1000": MsgAIR requestData = (MsgAIR)DataContainer.Data[_listBoxSelectedIndexNo]; AccountInfoRequest request = new AccountInfoRequest(); request.Set(new Account(Properties.Settings.Default.Account)); request.Set(new AccReqID(requestData.AccReqID)); //testforJack //request.Set(new SubscriptionRequestType('1')); if (!initiator.IsStopped) { bool ret = Session.SendToTarget(request, conn.m_sessionID); } else { MessageBox.Show(@"Connection is not established!!", @"Warning", MessageBoxButtons.OK); } break; case "D": MsgNOSR requestData1 = (MsgNOSR)DataContainer.Data[_listBoxSelectedIndexNo]; NewOrderSingle request1 = new NewOrderSingle(); request1.Set(new Account(Properties.Settings.Default.Account)); request1.Set(new ClOrdID(requestData1.ClOrdID)); request1.Set(new OrderQty(decimal.Parse(requestData1.OrderQty))); request1.Set(new OrdType(char.Parse(requestData1.OrdType))); request1.Set(new Side(char.Parse(requestData1.Side))); request1.Set(new Symbol(requestData1.Symbol)); request1.Set(new TransactTime(DateTime.Now)); if (!initiator.IsStopped) { bool ret = Session.SendToTarget(request1, conn.m_sessionID); } else { MessageBox.Show(@"Connection is not established!!", @"Warning", MessageBoxButtons.OK); } break; case "H": MsgOSR requestData2 = (MsgOSR)DataContainer.Data[_listBoxSelectedIndexNo]; OrderStatusRequest request2 = new OrderStatusRequest(); request2.Set(new Account(Properties.Settings.Default.Account)); request2.Set(new ClOrdID(requestData2.ClOrdID)); request2.Set(new Side(char.Parse(requestData2.Side))); request2.Set(new Symbol(requestData2.Symbol)); request2.Set(new OrderID(requestData2.OrderID)); if (!initiator.IsStopped) { bool ret = Session.SendToTarget(request2, conn.m_sessionID); } else { MessageBox.Show(@"Connection is not established!!", @"Warning", MessageBoxButtons.OK); } break; case "AF2": MsgBOIR requestData3 = (MsgBOIR)DataContainer.Data[_listBoxSelectedIndexNo]; OrderMassStatusRequest request3 = new OrderMassStatusRequest(); request3.Set(new Account(Properties.Settings.Default.Account)); request3.Set(new Symbol(requestData3.Symbol)); request3.Set(new MassStatusReqID(requestData3.MassStatusReqID)); //request3.Set(new NoStatuses(int.Parse(requestData3.GroupNums))); if (!initiator.IsStopped) { bool ret = Session.SendToTarget(request3, conn.m_sessionID); } else { MessageBox.Show(@"Connection is not established!!", @"Warning", MessageBoxButtons.OK); } break; case "G": MsgOCRR requestData4 = (MsgOCRR)DataContainer.Data[_listBoxSelectedIndexNo]; OrderCancelReplaceRequest request4 = new OrderCancelReplaceRequest(); request4.Set(new Account(Properties.Settings.Default.Account)); request4.Set(new ClOrdID(requestData4.ClOrdID)); request4.Set(new OrderQty(decimal.Parse(requestData4.OrderQty))); request4.Set(new OrderID(requestData4.OrderID)); if (!initiator.IsStopped) { bool ret = Session.SendToTarget(request4, conn.m_sessionID); } else { MessageBox.Show(@"Connection is not established!!", @"Warning", MessageBoxButtons.OK); } break; case "F": MsgOCR requestData5 = (MsgOCR)DataContainer.Data[_listBoxSelectedIndexNo]; OrderCancelRequest request5 = new OrderCancelRequest(); request5.Set(new Account(Properties.Settings.Default.Account)); request5.Set(new ClOrdID(requestData5.ClOrdID)); request5.Set(new OrderID(requestData5.OrderID)); request5.Set(new Symbol(requestData5.Symbol)); request5.Set(new TransactTime(DateTime.Now)); if (!initiator.IsStopped) { bool ret = Session.SendToTarget(request5, conn.m_sessionID); } else { MessageBox.Show(@"Connection is not established!!", @"Warning", MessageBoxButtons.OK); } break; default: break; } }
public void SendOrderCancelRequest(SessionID session) { origClOrdID = clOrdId; clOrdId = DateTime.Now.Ticks.ToString(); var cancel = new OrderCancelRequest(new OrigClOrdID(origClOrdID), new ClOrdID(clOrdId), new Symbol(lastSymbol), new Side(Side.BUY), new TransactTime(DateTime.Now)) { Account = new Account(lastAccount) }; Session.SendToTarget(cancel, session); }
public async Task <Result> Cancel([FromBody] OrderCancelRequest request) { return(await _orderService.Cancel(request.Id, request.Reason)); }
public void ProcessOrderCancelRequest(QuickFix.Message msg, string bolsa) { try { OrderCancelRequest ocr = (OrderCancelRequest)msg; string origclordid = ocr.OrigClOrdID.getValue(); int account; if (bolsa.Equals(ExchangePrefixes.BOVESPA, StringComparison.InvariantCultureIgnoreCase)) { string acc = ocr.Account.getValue(); acc = (acc.Remove(acc.Length - 1)); account = Convert.ToInt32(acc); } else { account = Convert.ToInt32(ocr.Account.getValue()); } // Buscar ordem original OrderDbInfo orderOrig = _db.BuscarOrdem(origclordid, account, ocr.Symbol.getValue()); // Adicionar as informacoes da ordem original na tabela de upodate if (orderOrig.OrderID == 0) { orderOrig = null; orderOrig = _db.BuscarOrdem(origclordid, account, ocr.Symbol.getValue(), true); if (orderOrig.OrderID == 0) { logger.Info("OCR - Nao achou a ordem em questao!!!: " + origclordid); return; } } // Adicionar informacoes originais na tabela update OrderDbUpdateInfo updt = new OrderDbUpdateInfo(); updt.Account = orderOrig.Account; updt.Instrumento = orderOrig.Symbol; updt.OrderID = orderOrig.OrderID; updt.ClOrdID = orderOrig.ClOrdID; updt.OrdStatusID = orderOrig.OrdStatus; updt.Price = orderOrig.Price; updt.Quantidade = orderOrig.OrderQty; updt.Quantidade_Exec = orderOrig.CumQty; updt.Quantidade_Aparente = Convert.ToInt32(orderOrig.OrderQtyApar); updt.Quantidade_Minima = Convert.ToInt32(orderOrig.OrderQtyMin); updt.Dt_Validade = orderOrig.ExpireDate; updt.Dt_Atualizacao = orderOrig.TransactTime; updt.TimeInForce = orderOrig.TimeInForce; if (!_db.InserirOrdermUpdate(updt)) { logger.Error("Erro ao inserir o registro na tabela tb_fix_order_update"); return; } // Adicionar as novas informacoes na tabela detail OrderDbDetalheInfo detail = new OrderDbDetalheInfo(); detail.OrderQty = Convert.ToInt32(ocr.OrderQty.getValue()); detail.OrderID = orderOrig.OrderID; detail.OrderStatusID = (int)FixOrderStatus.CANCELAMENTO_SOLICITADO; detail.Description = DescMsg.OCR_PENDING_CANCELLING; detail.TransactTime = ocr.TransactTime.getValue(); detail.FixMsgSeqNum = Convert.ToInt32(ocr.Header.GetField(Tags.MsgSeqNum)); if (!_db.InserirOrdemDetalhe(detail, orderOrig.ClOrdID)) { logger.Error("Erro ao inserir o registro na tabela tb_fix_order_update - msg cancelamento"); return; } // Atualizar a informacao original na tabela tb_fix_order // Atualiza os campos gravados na tabela tb_fix_order_update // Ordem original já se encontra em orderOrig orderOrig.OrigClOrdID = ocr.OrigClOrdID.getValue(); orderOrig.ClOrdID = ocr.ClOrdID.getValue(); orderOrig.OrdStatus = (int)FixOrderStatus.CANCELAMENTO_SOLICITADO; //orderOrig.OrderQty = Convert.ToInt32(ocr.OrderQty.getValue()); orderOrig.TransactTime = ocr.TransactTime.getValue(); orderOrig.Memo = ocr.IsSetField(Tags.Memo) ? ocr.GetField(Tags.Memo): string.Empty; orderOrig.FixMsgSeqNum = Convert.ToInt32(ocr.Header.GetField(Tags.MsgSeqNum)); orderOrig.MsgFix = ocr.ToString().Replace('\x01', '|'); if (!_db.AtualizarOrdem(orderOrig)) { logger.Info("Problemas na atualizacao da ordem cancelamento. ClOrdID: " + orderOrig.ClOrdID); return; } DropCopyCallbackManager.Instance.EnqueueCallback(orderOrig); } catch (Exception ex) { logger.Error("Problemas no processamento da mensagem OrderCancelRequest: " + ex.Message, ex); } }
public void ProcessOrderCancelRequest(NewOrderSingle nos, OrderCancelRequest msg) { }
public virtual void SendOrderCancelRequest(OrderCancelRequest request) { }
public void OnMessage(OrderCancelRequest msg, SessionID sessionID) { MessageDisplay(msg, sessionID, MessageDisplayer.Sender); }
public void SendOrderCancelRequest(OrderCancelRequest request) { IOrder key = OrderManager.Orders.All[request.OrigClOrdID]; Order order = Map.SQ_OQ_Order[key] as Order; this.provider.CallCancel(order); }
public MainRule(int id, OrderCancelRequest request) { Context = new ContextModel(id, request, this); }
public void SendOrderCancelRequest(OrderCancelRequest request) { SendOrderCancelRequest(request as FIXOrderCancelRequest); }
public void OnMessage(OrderCancelRequest msg, SessionID sessionID) { _fix44MessageHandler.OnMessage(msg, sessionID); }
/// <summary> /// 取消订单项 /// </summary> /// <param name="orderInfo"></param> private PageResult CancelOrderDetail(OrderCancelRequest request, Tbl_OTABusiness business) { string orderId = request.Body.OrderInfo.OrderId; string otaOrderId = request.Body.OrderInfo.OtaOrderId; OrderCancelResponse result = new OrderCancelResponse { Head = HeadResult.V1 }; var validResult = _orderService.ValidDataForOrderCancelRequest(request, business.Id); if (!validResult.Status) { result.Head.Code = validResult.Code; result.Head.Describe = validResult.Message; return(PageDataResult.Data(result, business.Saltcode.ToString())); } var tbl_Order = _orderService.Get(orderId, otaOrderId); if (tbl_Order == null) { result.Head.Code = "114004"; result.Head.Describe = "订单取消失败,订单不存在"; return(PageDataResult.Data(result, business.Saltcode.ToString())); } var checkResult = _orderDetailService.CheckOrderDetailIsCanncel(request, orderId); if (!checkResult.Status) { result.Head.Code = checkResult.Code; result.Head.Describe = checkResult.Message; return(PageDataResult.Data(result, business.Saltcode.ToString())); } try { if (checkResult.List.Count > 0) { _orderService.BeginTran(); foreach (var row in checkResult.List) { //添加退款记录 var tbl_RefundDetail = _refundDetailService.Add(row); //更新订单详情的状态:为已取消 _orderDetailService.UpdateOrderDetailForCanncel(row); //退激活票时,同步删除验票表存在的数据 _ticketTestingService.Delete(row.Number); //更新票的日售票数 _ticketService.UpdateTicketBySellCount(row); //添加日志 _saleLogService.Add(tbl_RefundDetail); } //提交事物 _orderService.CommitTran(); } } catch { _orderService.RollbackTran(); result.Head.Code = "114012"; result.Head.Describe = "订单取消失败,系统出错"; return(PageDataResult.Data(result, business.Saltcode.ToString())); } result.Body = new FengjingSDK461.Model.Response.OrderCancelInfo { Message = "成功" }; result.Head.Code = "000000"; result.Head.Describe = "成功"; return(PageDataResult.Data(result, business.Saltcode.ToString())); }
public void OnMessage(OrderCancelRequest msg, SessionID sessionId) { }
static void Main(string[] args) { TestFixApp testFixApp = new TestFixApp(args.FirstOrDefault()); testFixApp.Start(); Account account = new Account("54b97c9e-202b-11b2-be90-529049f1f1bb"); ClOrdID clOrdId = new ClOrdID(Guid.NewGuid().ToString()); Symbol symbol = new Symbol("BTC/USD"); Side side = new Side(Side.BUY); #region SecurityListRequest SecurityListRequest securityListRequest = new SecurityListRequest( new SecurityReqID(Guid.NewGuid().ToString()), new SecurityListRequestType(SecurityListRequestType.SYMBOL) ) { Symbol = symbol }; Console.WriteLine("Press enter to next comand"); Console.ReadLine(); testFixApp.Send(securityListRequest); testFixApp.WaitResponces(1); #endregion SecurityListRequest #region MarketDataRequest MarketDataRequest marketDataRequest = new MarketDataRequest( new MDReqID(Guid.NewGuid().ToString()), new SubscriptionRequestType(SubscriptionRequestType.SNAPSHOT), new MarketDepth(5)) { MDUpdateType = new MDUpdateType(MDUpdateType.FULL_REFRESH), }; var bid = new MarketDataRequest.NoMDEntryTypesGroup() { MDEntryType = new MDEntryType(MDEntryType.BID) }; var ask = new MarketDataRequest.NoMDEntryTypesGroup() { MDEntryType = new MDEntryType(MDEntryType.OFFER) }; var symGroup = new MarketDataRequest.NoRelatedSymGroup { Symbol = symbol }; marketDataRequest.AddGroup(bid); marketDataRequest.AddGroup(ask); marketDataRequest.AddGroup(symGroup); Console.WriteLine("Press enter to next comand"); Console.ReadLine(); testFixApp.Send(marketDataRequest); testFixApp.WaitResponces(1); #endregion MarketDataRequest #region NewOrderSingle NewOrderSingle newOrderSingle = new NewOrderSingle( clOrdId, symbol, side, new TransactTime(DateTime.Now), new OrdType(OrdType.LIMIT)) { OrderQty = new OrderQty(0.1m), Price = new Price(1m), Account = account, AcctIDSource = new AcctIDSource(AcctIDSource.OTHER) }; Console.WriteLine("Press enter to next comand"); Console.ReadLine(); testFixApp.Send(newOrderSingle); testFixApp.WaitResponces(2); #endregion NewOrderSingle #region OrderCancelReplaceRequest OrderCancelReplaceRequest orderCancelReplaceRequest = new OrderCancelReplaceRequest( new OrigClOrdID(clOrdId.ToString()), clOrdId = new ClOrdID(Guid.NewGuid().ToString()), symbol, side, new TransactTime(DateTime.Now), new OrdType(OrdType.LIMIT)) { Price = new Price(2m), OrderQty = new OrderQty(0.2m) }; Console.WriteLine("Press enter to next comand"); Console.ReadLine(); testFixApp.Send(orderCancelReplaceRequest); testFixApp.WaitResponces(2); #endregion OrderCancelReplaceRequest #region OrderStatusRequest OrderStatusRequest orderStatusRequest = new OrderStatusRequest( clOrdId, symbol, side ); Console.WriteLine("Press enter to next comand"); Console.ReadLine(); testFixApp.Send(orderStatusRequest); testFixApp.WaitResponces(1); #endregion OrderStatusRequest #region OrderCancelRequest OrderCancelRequest orderCancelRequest = new OrderCancelRequest( new OrigClOrdID(clOrdId.ToString()), new ClOrdID(Guid.NewGuid().ToString()), symbol, side, new TransactTime(DateTime.Now) ) { OrderQty = new OrderQty(0.1m) }; Console.WriteLine("Press enter to next comand"); Console.ReadLine(); testFixApp.Send(orderCancelRequest); testFixApp.WaitResponces(3); #endregion region OrderCancelRequest #region OrderMassStatusRequest OrderMassStatusRequest orderMassStatusRequest = new OrderMassStatusRequest( new MassStatusReqID(Guid.NewGuid().ToString()), new MassStatusReqType(MassStatusReqType.STATUS_FOR_ALL_ORDERS)) { Side = side, Symbol = symbol }; Console.WriteLine("Press enter to next comand"); Console.ReadLine(); testFixApp.Send(orderMassStatusRequest); #endregion OrderMassStatusRequest Console.WriteLine("Press enter to exit"); Console.ReadLine(); testFixApp.Stop(); }
void CreateLimitOrderWithAssetPair(string assetPair, decimal volume) { try { var orderId = Guid.NewGuid().ToString(); var price = 0.01m; var quantity = volume + 0.5m; var marketOrder = FixHelpers.CreateNewOrder(orderId, isMarket: false, isBuy: true, qty: quantity, price: price, assetPairId: assetPair); fixClient.Send(marketOrder); var response = fixClient.GetResponse <Message>(); int aa = 60; while (aa-- > 0) { if (((ExecutionReport)response).ClOrdID.Obj.ToString() == orderId) { break; } response = fixClient.GetResponse <Message>(); System.Threading.Thread.Sleep(TimeSpan.FromSeconds(1)); } Assert.That(response, Is.Not.Null); Assert.That(response, Is.TypeOf <ExecutionReport>()); var ex = (ExecutionReport)response; Assert.That(ex.OrdStatus.Obj, Is.EqualTo(OrdStatus.PENDING_NEW), $"unexpected response status for assetPair {assetPair}. response: {response.ToString().Replace("\u0001", "|")}"); Assert.That(ex.ExecType.Obj, Is.EqualTo(ExecType.PENDING_NEW), $"unexpected response type for assetPair {assetPair}. response: {response.ToString().Replace("\u0001", "|")}"); // clean myself var cancelRequest = new OrderCancelRequest { ClOrdID = new ClOrdID(Guid.NewGuid().ToString()), OrigClOrdID = new OrigClOrdID(orderId), TransactTime = new TransactTime(DateTime.UtcNow) }; fixClient.Send(cancelRequest); response = fixClient.GetResponse <Message>(); int a = 60; while (a-- > 0) { if (((ExecutionReport)response).ClOrdID.Obj.ToString() == cancelRequest.ClOrdID.Obj.ToString()) { break; } response = fixClient.GetResponse <Message>(); System.Threading.Thread.Sleep(TimeSpan.FromSeconds(1)); } Assert.That(response, Is.Not.Null); Assert.That(response, Is.TypeOf <ExecutionReport>(), $"unexpected response type for assetPair {assetPair}. response: {response.ToString().Replace("\u0001", "|")}"); ex = (ExecutionReport)response; //Assert.That(ex.OrdStatus.Obj, Is.EqualTo(OrdStatus.PENDING_CANCEL), $"unexpected response status for assetPair {assetPair}. response: {response.ToString().Replace("\u0001", "|")}"); //Assert.That(ex.ExecType.Obj, Is.EqualTo(ExecType.PENDING_CANCEL), $"unexpected response type for assetPair {assetPair}. response: {response.ToString().Replace("\u0001", "|")}"); int time = 120; while (time-- > 0) { if (ex.OrdStatus.Obj != OrdStatus.CANCELED) { response = fixClient.GetResponse <Message>(); ex = (ExecutionReport)response; System.Threading.Thread.Sleep(TimeSpan.FromSeconds(1)); } else { break; } } } catch (Exception) { //Assert.Fail($"An error occured with assetPair {assetPair}. Number of Exceptions {i++}"); } }
/// <inheritdoc /> public async Task <ExecutionReport> CancelOrderAsync( OrderCancelRequest command, CancellationToken cancellationToken = default) { return(await PostAsync <ExecutionReport>(CancelOrderPath, command, cancellationToken).ConfigureAwait(false)); }