コード例 #1
0
        private void EmitCancelReject(GenericOrderItem item,int error_id,string message)
        {
            TextResponse r = new TextResponse()
            {
                Error = CTPAPI.FromCTP(error_id),
                ErrorID = error_id,
                ErrorMsg = message,
            };

            foreach (var leg in item.GetLegs())
            {
                r.OpenClose = leg.OpenClose;
                leg.Order.Text = r.ToString();
                EmitCancelReject(leg.Order, leg.Order.OrdStatus, r.ToString());
            }
        }
コード例 #2
0
 private void EmitCancelLastStatus(GenericOrderItem item)
 {
     foreach (var leg in item.GetLegs())
     {
         OrdStatus status;
         if (orderMap.TryGetValue(leg.Order , out status))
         {
             EmitExecutionReport(leg.Order, status);
             orderMap.Order_OrdStatus.Remove(leg.Order);
         }
     }
 }
コード例 #3
0
        private void EmitRejected(GenericOrderItem item, string message)
        {
            TextResponse r = new TextResponse()
            {
                Error = EnumError.OTHER,
                StatusMsg = message,
            };

            foreach (var leg in item.GetLegs())
            {
                r.OpenClose = leg.OpenClose;
                leg.Order.Text = r.ToString();
                EmitRejected(leg.Order, r.ToString());
            }
        }
コード例 #4
0
 private void EmitCancelled(GenericOrderItem item)
 {
     foreach (var leg in item.GetLegs())
     {
         EmitCancelled(leg.Order);
     }
 }
コード例 #5
0
        private void OnLastStatus(GenericOrderItem item, string OrderSysID, string Key)
        {
            // 一个单子成交完成,报单组可能还没有完,这个地方一定要留意
            if (!item.IsDone())
                return;

            foreach (var order in item.GetLegs())
            {
                orderMap.Order_OrderItem.Remove(order.Order);
            }

            orderMap.OrderItem_OrderField.Remove(item);
            orderMap.OrderRef_OrderItem.Remove(Key);
            orderMap.OrderSysID_OrderRef.Remove(OrderSysID);
        }
コード例 #6
0
 private void UpdateOrderText(GenericOrderItem item, string message)
 {
     foreach (var leg in item.GetLegs())
     {
         leg.Order.Text = message;
     }
 }
コード例 #7
0
        private void OnRtnOrderLastStatus(GenericOrderItem item, CThostFtdcOrderField pOrder, string OrderSysID, string Key)
        {
            // 给成交回报用的,由于成交回报返回慢,所以不能删
            //orderMap.OrderSysID_OrderRef.Remove(OrderSysID);

            // 已经是最后状态,不能用于撤单了
            // 这个功能交给用户上层处理,报个重复撤单也没啥
            //orderMap.OrderItem_OrderField.Remove(item);

            OnLastStatus(item, OrderSysID, Key);
        }
コード例 #8
0
 private void OnRtnTradeLastStatus(GenericOrderItem item, CThostFtdcTradeField pTrade, string OrderSysID, string Key)
 {
     OnLastStatus(item,OrderSysID,Key);
 }
コード例 #9
0
        private void OnRtnOrderFirstStatus(GenericOrderItem item, CThostFtdcOrderField pOrder, string OrderSysID, string Key)
        {
            // 向上层报告保单引用
            if(OrderSysID.Length>0)
            {
                orderMap.OrderSysID_OrderRef[OrderSysID] = Key;

                foreach (var o in item.GetLegs())
                {
                    // 这个地方要再查一查,是不是要移动出来?
                    o.Order.OrderID = pOrder.OrderSysID;
                }
            }
            
            // 判断是第一次报单,还是只是撤单时的第一条记录
            if (!orderMap.OrderItem_OrderField.ContainsKey(item))
            {
                // 在Order_OrderItem中记录绑定关系
                foreach (var o in item.GetLegs())
                {
                    orderMap.Order_OrderItem[o.Order] = item;
                }

                EmitAccepted(item);
            }

            // 在OrderItem_OrderField中记录与API的对应关系
            orderMap.OrderItem_OrderField[item] = pOrder;
        }
コード例 #10
0
ファイル: OrderMap.cs プロジェクト: Jicheng-Yan/OpenQuant-CTP
 public void CreateNewOrder(string key,GenericOrderItem value)
 {
     OrderRef_OrderItem[key] = value;
 }
コード例 #11
0
ファイル: OrderMap.cs プロジェクト: Jicheng-Yan/OpenQuant-CTP
 // 通过报单组合,实际的向交易所撤单
 public bool TryGetValue(GenericOrderItem key, out CThostFtdcOrderField value)
 {
     return OrderItem_OrderField.TryGetValue(key, out value);
 }
コード例 #12
0
ファイル: OrderMap.cs プロジェクト: Jicheng-Yan/OpenQuant-CTP
 // 界面撤单时用于找到对应的报单组合
 public bool TryGetValue(SingleOrder key, out GenericOrderItem value)
 {
     return Order_OrderItem.TryGetValue(key, out value);
 }
コード例 #13
0
ファイル: OrderMap.cs プロジェクト: Jicheng-Yan/OpenQuant-CTP
 // 用于收到委托回报信息后进行处理
 public bool TryGetValue(string key,out GenericOrderItem value)
 {
     return OrderRef_OrderItem.TryGetValue(key, out value);
 }