internal void UpdateContractDetail(ContractDetail contractDetail) { contractDetails.Add(contractDetail); if (contractDetail.ContractDetails.MarketRuleIds != null) { foreach (int marketRuleId in contractDetail.ContractDetails.MarketRuleIds) { clientManager.RequestMarketRule(marketRuleId); } } BuyOrder buyOrder = buyOrders.FirstOrDefault(x => x.Id == contractDetail.ReqId); buyOrder.MinTick = (decimal)contractDetail.ContractDetails.MinTick; }
private void SubscribeTicker(BuyOrder buyOrder) { Contract contract = new Contract(); contract.Symbol = txtTicker.Text; contract.SecType = "STK"; contract.Exchange = "SMART"; if (txtTicker.Text == "MSFT") { contract.PrimaryExch = "NASDAQ"; // todo paramaterise } contract.Currency = "USD"; clientManager.RequestMarketData(contract, buyOrder); }
private void btnPlaceOrder_Click(object sender, EventArgs e) { try { // create buy order - this will add to grid BuyOrder buyOrder = new BuyOrder(GetNextId(), txtTicker.Text, numStop.Value, numStopBuyLimit.Value, numRiskPercent.Value, numDollarValue.Value, rdoUseRiskPercent.Checked); buyOrders.Add(buyOrder); SubscribeTicker(buyOrder); // req contract details for Order clientManager.RequestContractDetails(buyOrder.Id, buyOrder.Ticker); } catch (ArgumentNullException ae) { MessageBox.Show(ae.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private decimal CalculateStopOrderPrice(BuyOrder buyOrder) { return(buyOrder.Low - buyOrder.MinTick); }