public double SendLimitSellOrder(string ticker, double price, int size)
        {
            string derivativeClass = GetActualClassToTicker(ticker);

            string inputParams = GetTransactionsInputParams(new string[]
            {
                "ACCOUNT=" + account,
                "TRANS_ID=" + GetNewTransactionId(),
                "CLASSCODE=" + derivativeClass,
                "SECCODE=" + ticker,
                "TYPE=" + T2QParametres.TYPE_DEAL_LIMIT,
                "OPERATION=" + T2QParametres.OPERATION_SELL,
                "ACTION=" + T2QParametres.ACTION_NEW_ORDER,
                "PRICE=" + Convert.ToString(price),
                "QUANTITY=" + Convert.ToString(size)
            });

            double result = SendSyncTransactionToQuik(inputParams);

            TerminalOrder tempOrder = new TerminalOrder(result, ticker, TerminalOrderType.LIMIT, TerminalOrderOperation.SELL,
                                                        price, size, TerminalOrderStatus.ACTIVE);

            tempOrder.CreationTime = DateTime.Now;

            OrderMap.Add(result, tempOrder);

            return(result);
        }
        public double SendMarketBuyOrder(string ticker, int size)
        {
            string derivativeClass = GetActualClassToTicker(ticker);

            string inputParams = GetTransactionsInputParams(new string[]
            {
                "ACCOUNT=" + account,
                "TRANS_ID=" + GetNewTransactionId(),
                "CLASSCODE=" + derivativeClass,
                "SECCODE=" + ticker,
                "TYPE=" + T2QParametres.TYPE_DEAL_MARKET,
                "OPERATION=" + T2QParametres.OPERATION_BUY,
                "ACTION=" + T2QParametres.ACTION_NEW_ORDER,
                "PRICE=" + Convert.ToString(0.0),
                "QUANTITY=" + Convert.ToString(size)
            });

            double result = SendSyncTransactionToQuik(inputParams);

            TerminalOrder tempOrder = new TerminalOrder(result, ticker, TerminalOrderType.MARKET, TerminalOrderOperation.BUY,
                                                        0.0, size, TerminalOrderStatus.EXECUTED);

            tempOrder.CreationTime = DateTime.Now;
            tempOrder.LastTime     = DateTime.Now;

            OrderMap.Add(result, tempOrder);

            return(result);
        }
 private void UpdateOrderMap(TerminalOrder order)
 {
     if (OrderMap.ContainsKey(order.Id))
     {
         OrderMap[order.Id] = order;
     }
     else
     {
         OrderMap.Add(order.Id, order);
     }
 }
        public double RollLimitOrder(double id, double price, int size)
        {
            TerminalOrder existingOrder;

            if (!OrderMap.TryGetValue(id, out existingOrder))
            {
                throw new NotImplementedException();
            }

            string derivativeClass = GetActualClassToTicker(existingOrder.Ticker);

            string inputParams = GetTransactionsInputParams(new string[]
            {
                "TRANS_ID=" + GetNewTransactionId(),
                "CLASSCODE=" + derivativeClass,
                "SECCODE=" + existingOrder.Ticker,
                "MODE=" + T2QParametres.MODE,
                "ACTION=" + T2QParametres.ACTION_MOVE_ORDER,
                "FIRST_ORDER_NUMBER=" + (int)id,
                "FIRST_ORDER_NEW_PRICE=" + Convert.ToString(price),
                "FIRST_ORDER_NEW_QUANTITY=" + Convert.ToString(size)
            });

            double result = SendSyncTransactionToQuik(inputParams);

            existingOrder.LastTime    = DateTime.Now;
            existingOrder.OrderStatus = TerminalOrderStatus.CANCELED;
            //AND IF IT WAS EXECUTED?

            TerminalOrder tempOrder = new TerminalOrder(result, existingOrder.Ticker, TerminalOrderType.LIMIT, TerminalOrderOperation.SELL,
                                                        price, size, TerminalOrderStatus.ACTIVE);

            tempOrder.CreationTime = DateTime.Now;

            OrderMap.Add(result, tempOrder);

            return(result);
        }