コード例 #1
0
        private void AddToMonitoring(O2GOrderRow order)
        {
            OrderMonitor monitor = new OrderMonitor(order);

            monitor.OrderCompleted += new EventHandler(monitor_OrderCompleted);
            mMonitors.Add(monitor);
        }
コード例 #2
0
 /// <summary>
 /// ctor
 /// </summary>
 /// <param name="session"></param>
 public ResponseListener(O2GSession session)
 {
     mSession = session;
     mRequestID = string.Empty;
     mResponse = null;
     mOrderMonitor = null;
     mSyncResponseEvent = new EventWaitHandle(false, EventResetMode.AutoReset);
 }
コード例 #3
0
 public void onAdded(string sRowID, O2GRow rowData)
 {
     O2GTableType type = rowData.TableType;
     switch (type)
     {
         case O2GTableType.Orders:
             O2GOrderRow orderRow = (O2GOrderRow)rowData;
             if (mRequestID.Equals(orderRow.RequestID))
             {
                 if ((OrderMonitor.IsClosingOrder(orderRow) || OrderMonitor.IsOpeningOrder(orderRow)) &&
                         mOrderMonitor == null)
                 {
                     Console.WriteLine("The order has been added. Order ID: {0}, Rate: {1}, Time In Force: {2}",
                         orderRow.OrderID,
                         orderRow.Rate,
                         orderRow.TimeInForce);
                     mOrderMonitor = new OrderMonitor(orderRow);
                 }
             }
             break;
         case O2GTableType.Trades:
             O2GTradeRow tradeRow = (O2GTradeRow)rowData;
             if (mOrderMonitor != null)
             {
                 mOrderMonitor.OnTradeAdded(tradeRow);
                 if (mOrderMonitor.IsOrderCompleted)
                 {
                     PrintResult();
                     mResponseListener.StopWaiting();
                 }
             }
             break;
         case O2GTableType.ClosedTrades:
             O2GClosedTradeRow closedTradeRow = (O2GClosedTradeRow)rowData;
             if (mOrderMonitor != null)
             {
                 mOrderMonitor.OnClosedTradeAdded(closedTradeRow);
                 if (mOrderMonitor.IsOrderCompleted)
                 {
                     PrintResult();
                     mResponseListener.StopWaiting();
                 }
             }
             break;
         case O2GTableType.Messages:
             O2GMessageRow messageRow = (O2GMessageRow)rowData;
             if (mOrderMonitor != null)
             {
                 mOrderMonitor.OnMessageAdded(messageRow);
                 if (mOrderMonitor.IsOrderCompleted)
                 {
                     PrintResult();
                     mResponseListener.StopWaiting();
                 }
             }
             break;
     }
 }
コード例 #4
0
        private void monitor_OrderCompleted(object sender, EventArgs e)
        {
            OrderMonitor monitor = (OrderMonitor)sender;

            RemoveRequestID(monitor.Order.RequestID);

            if (BatchOrderCompleted != null && IsBatchExecuted())
            {
                BatchOrderCompleted(this, EventArgs.Empty);
            }
        }
コード例 #5
0
        public void OnOrderAdded(O2GOrderRow order)
        {
            string sRequestID = order.RequestID;

            if (IsOwnRequest(sRequestID))
            {
                if (OrderMonitor.IsClosingOrder(order) || OrderMonitor.IsOpeningOrder(order))
                {
                    AddToMonitoring(order);
                }
            }
        }
コード例 #6
0
        private void PrintMonitorResult(OrderMonitor orderMonitor)
        {
            if (orderMonitor != null)
            {
                OrderMonitor.ExecutionResult result = orderMonitor.Result;
                ReadOnlyCollection<O2GTradeRow> trades;
                ReadOnlyCollection<O2GClosedTradeRow> closedTrades;
                O2GOrderRow order = orderMonitor.Order;
                string sOrderID = order.OrderID;
                trades = orderMonitor.Trades;
                closedTrades = orderMonitor.ClosedTrades;

                switch (result)
                {
                    case OrderMonitor.ExecutionResult.Canceled:
                        if (trades.Count > 0)
                        {
                            PrintTrades(trades, sOrderID);
                            PrintClosedTrades(closedTrades, sOrderID);
                            Console.WriteLine("A part of the order has been canceled. Amount = {0}", orderMonitor.RejectAmount);
                        }
                        else
                        {
                            Console.WriteLine("The order: OrderID = {0}  has been canceled.", sOrderID);
                            Console.WriteLine("The cancel amount = {0}.", orderMonitor.RejectAmount);
                        }
                        break;
                    case OrderMonitor.ExecutionResult.FullyRejected:
                        Console.WriteLine("The order has been rejected. OrderID = {0}", sOrderID);
                        Console.WriteLine("The rejected amount = {0}", orderMonitor.RejectAmount);
                        Console.WriteLine("Rejection cause: {0}", orderMonitor.RejectMessage);
                        break;
                    case OrderMonitor.ExecutionResult.PartialRejected:
                        PrintTrades(trades, sOrderID);
                        PrintClosedTrades(closedTrades, sOrderID);
                        Console.WriteLine("A part of the order has been rejected. Amount = {0}", orderMonitor.RejectAmount);
                        Console.WriteLine("Rejection cause: {0} ", orderMonitor.RejectMessage);
                        break;
                    case OrderMonitor.ExecutionResult.Executed:
                        PrintTrades(trades, sOrderID);
                        PrintClosedTrades(closedTrades, sOrderID);
                        break;
                }
            }
        }
コード例 #7
0
 /// <summary>
 /// ctor
 /// </summary>
 /// <param name="responseListener"></param>
 public TableListener(ResponseListener responseListener)
 {
     mOrderMonitor = null;
     mResponseListener = responseListener;
     mRequestID = string.Empty;
 }
コード例 #8
0
 public void onTablesUpdates(O2GResponse data)
 {
     O2GResponseReaderFactory factory = mSession.getResponseReaderFactory();
     if (factory != null)
     {
         O2GTablesUpdatesReader reader = factory.createTablesUpdatesReader(data);
         for (int ii = 0; ii < reader.Count; ii++)
         {
             switch (reader.getUpdateTable(ii))
             {
                 case O2GTableType.Accounts:
                     O2GAccountRow account = reader.getAccountRow(ii);
                     //Show balance updates
                     Console.WriteLine("Balance: {0}", account.Balance);
                     break;
                 case O2GTableType.Orders:
                     O2GOrderRow order = reader.getOrderRow(ii);
                     switch (reader.getUpdateType(ii))
                     {
                         case O2GTableUpdateType.Insert:
                             if ((OrderMonitor.IsClosingOrder(order) || OrderMonitor.IsOpeningOrder(order)) &&
                                     mOrderMonitor == null)
                             {
                                 Console.WriteLine("The order has been added. Order ID: {0}, Rate: {1}, Time In Force: {2}",
                                     order.OrderID,
                                     order.Rate,
                                     order.TimeInForce);
                                 mOrderMonitor = new OrderMonitor(order);
                             }
                             break;
                         case O2GTableUpdateType.Delete:
                             if (mOrderMonitor != null)
                             {
                                 Console.WriteLine("The order has been deleted. Order ID: {0}", order.OrderID);
                                 mOrderMonitor.OnOrderDeleted(order);
                                 if (mOrderMonitor.IsOrderCompleted)
                                 {
                                     PrintResult();
                                     mSyncResponseEvent.Set();
                                 }
                             }
                             break;
                     }
                     break;
                 case O2GTableType.Trades:
                     O2GTradeRow trade = reader.getTradeRow(ii);
                     if (reader.getUpdateType(ii) == O2GTableUpdateType.Insert)
                     {
                         if (mOrderMonitor != null)
                         {
                             mOrderMonitor.OnTradeAdded(trade);
                             if (mOrderMonitor.IsOrderCompleted)
                             {
                                 PrintResult();
                                 mSyncResponseEvent.Set();
                             }
                         }
                     }
                     break;
                 case O2GTableType.ClosedTrades:
                     O2GClosedTradeRow closedTrade = reader.getClosedTradeRow(ii);
                     if (reader.getUpdateType(ii) == O2GTableUpdateType.Insert)
                     {
                         if (mOrderMonitor != null)
                         {
                             mOrderMonitor.OnClosedTradeAdded(closedTrade);
                             if (mOrderMonitor.IsOrderCompleted)
                             {
                                 PrintResult();
                                 mSyncResponseEvent.Set();
                             }
                         }
                     }
                     break;
                 case O2GTableType.Messages:
                     O2GMessageRow message = reader.getMessageRow(ii);
                     if (reader.getUpdateType(ii) == O2GTableUpdateType.Insert)
                     {
                         if (mOrderMonitor != null)
                         {
                             mOrderMonitor.OnMessageAdded(message);
                             if (mOrderMonitor.IsOrderCompleted)
                             {
                                 PrintResult();
                                 mSyncResponseEvent.Set();
                             }
                         }
                     }
                     break;
             }
         }
     }
 }
コード例 #9
0
 private void AddToMonitoring(O2GOrderRow order)
 {
     OrderMonitor monitor = new OrderMonitor(order);
     monitor.OrderCompleted += new EventHandler(monitor_OrderCompleted);
     mMonitors.Add(monitor);
 }