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)); } }
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); }
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); }