Пример #1
0
        private void placeOrders()
        {
            Console.WriteLine(string.Format("{0} : Placing orders ...", DateTime.Now.ToShortTimeString()));

            ContractDetails conDetails;

            for (int i = 0; i < myOrders.Count; i++)
            {
                // Long for contract
                Contract orderContract = new Contract();
                orderContract.Symbol  = myOrders[i].symbol;
                orderContract.SecType = "OPT";
                orderContract.Right   = "PUT";
                orderContract.LastTradeDateOrContractMonth = myOrders[i].Expiry;
                orderContract.Strike   = myOrders[i].strike;
                orderContract.Exchange = "SMART";
                conDetails             = ibClient.reqContractDetails(1, orderContract, false)[0].contractDetails;
                orderContract          = conDetails.Summary;

                // Construct order
                Order contractOrder = new Order();
                contractOrder.Account = OControl.defAccount;
                if (myOrders[i].position > 0)
                {
                    Console.WriteLine("Buy order not allowed!");
                    Environment.Exit(0);
                }
                contractOrder.Action        = (myOrders[i].position > 0) ? "BUY" : "SELL";
                contractOrder.TotalQuantity = Math.Abs(myOrders[i].position);
                contractOrder.OrderType     = "LMT";
                contractOrder.LmtPrice      = Math.Ceiling(myOrders[i].price / conDetails.MinTick) * conDetails.MinTick;
                contractOrder.Tif           = "DAY";
                contractOrder.Transmit      = true;

                // Place Order
                nextID++;
                ibClient.placeOrder(nextID, orderContract, contractOrder);
                //contractOrder.Tif = "GTC"; // Way to hack around irresponsive to GTC order
                //ibClient.placeOrder(nextID, orderContract, contractOrder);

                // Acknowledgement
                Console.WriteLine(string.Format("Order {0} has been placed.", orderContract.LocalSymbol));
            }
        }
Пример #2
0
        private double getSymbolPrice(string secType)
        {
            dbm.WriteLine(clientID, "Obtaining undelying price ...", true);

            // get Underlying Contract
            Contract underlying = new Contract();

            underlying.Symbol  = this_symbol;
            underlying.SecType = secType;
            underlying         = ibClient.reqContractDetails(1, underlying)[0].contractDetails.Summary;

            // Request Price
            do
            {
                ibClient.SetMarketDataType(IntBrokerSocket.MarketDataType.Delayed);
                CompleteTick_Struct mymkt = ibClient.GetMktSnapShotData(new List <Contract>(new Contract[] { underlying }))[0];
                symbolPrice = mymkt.getTick(tickPreference.LastPreference);
            } while (symbolPrice <= 0);

            return(symbolPrice);
        }
Пример #3
0
        private List <CompleteTick_Struct> IBPrice2DT()
        {
            //###########################################################################################
            //      Obtain option price
            //###########################################################################################
            List <Contract>            AllContracts = new List <Contract>();
            List <CompleteTick_Struct> myMkt;


            // Create and send request
            foreach (Position_Struct pos in myPortfolio)
            {
                Contract tmpContract = ibClient.reqContractDetails(Toolkit.RndReqId(), pos.contract)[0].contractDetails.Summary;
                AllContracts.Add(tmpContract);
            }
            ibClient.SetMarketDataType(IntBrokerSocket.MarketDataType.Delayed);
            myMkt = ibClient.GetMktSnapShotData(AllContracts);


            return(myMkt);
        }