private void ibClient_HandleContractDataMessage(ContractDetailsMessage message) { Contract con = message.ContractDetails.Summary; var assetID = generateAssetIDFromContract(con); dicAssets[message.RequestId].Con = con; dicAssets[message.RequestId].ID = assetID; // 此处与下面程序重复逻辑是为了规避已经订阅价格的合约信息被重复获取的问题 rwLock.AcquireWriterLock(1000); try { dicContract[assetID] = con; } catch (Exception e) { throw e; } finally { rwLock.ReleaseWriterLock(); } if (isDebug) { Console.WriteLine("Contract ID = " + dicAssets[message.RequestId].ID); } ibClient.ClientSocket.reqMktData(message.RequestId, con, null, false, false, new List <TagValue>()); }
public void HandleContractMessage(ContractDetailsMessage contractDetailsMessage) { ContractDetailsGrid.Rows.Add(1); ContractDetailsGrid[0, ContractDetailsGrid.Rows.Count - 1].Value = contractDetailsMessage.ContractDetails.Contract.Symbol; ContractDetailsGrid[1, ContractDetailsGrid.Rows.Count - 1].Value = contractDetailsMessage.ContractDetails.Contract.LocalSymbol; ContractDetailsGrid[2, ContractDetailsGrid.Rows.Count - 1].Value = contractDetailsMessage.ContractDetails.Contract.SecType; ContractDetailsGrid[3, ContractDetailsGrid.Rows.Count - 1].Value = contractDetailsMessage.ContractDetails.Contract.Currency; ContractDetailsGrid[4, ContractDetailsGrid.Rows.Count - 1].Value = contractDetailsMessage.ContractDetails.Contract.Exchange; ContractDetailsGrid[5, ContractDetailsGrid.Rows.Count - 1].Value = contractDetailsMessage.ContractDetails.Contract.PrimaryExch; ContractDetailsGrid[6, ContractDetailsGrid.Rows.Count - 1].Value = contractDetailsMessage.ContractDetails.Contract.LastTradeDateOrContractMonth; ContractDetailsGrid[7, ContractDetailsGrid.Rows.Count - 1].Value = contractDetailsMessage.ContractDetails.Contract.Multiplier; ContractDetailsGrid[8, ContractDetailsGrid.Rows.Count - 1].Value = contractDetailsMessage.ContractDetails.Contract.Strike; ContractDetailsGrid[9, ContractDetailsGrid.Rows.Count - 1].Value = contractDetailsMessage.ContractDetails.Contract.Right; ContractDetailsGrid[10, ContractDetailsGrid.Rows.Count - 1].Value = contractDetailsMessage.ContractDetails.Contract.ConId; ContractDetailsGrid[11, ContractDetailsGrid.Rows.Count - 1].Value = contractDetailsMessage.ContractDetails.MdSizeMultiplier; ContractDetailsGrid[12, ContractDetailsGrid.Rows.Count - 1].Value = contractDetailsMessage.ContractDetails.AggGroup; ContractDetailsGrid[13, ContractDetailsGrid.Rows.Count - 1].Value = contractDetailsMessage.ContractDetails.UnderSymbol; ContractDetailsGrid[14, ContractDetailsGrid.Rows.Count - 1].Value = contractDetailsMessage.ContractDetails.UnderSecType; ContractDetailsGrid[15, ContractDetailsGrid.Rows.Count - 1].Value = contractDetailsMessage.ContractDetails.MarketRuleIds; ContractDetailsGrid[16, ContractDetailsGrid.Rows.Count - 1].Value = contractDetailsMessage.ContractDetails.RealExpirationDate; ContractDetailsGrid[17, ContractDetailsGrid.Rows.Count - 1].Value = contractDetailsMessage.ContractDetails.ContractMonth; ContractDetailsGrid[18, ContractDetailsGrid.Rows.Count - 1].Value = contractDetailsMessage.ContractDetails.LastTradeTime; ContractDetailsGrid[19, ContractDetailsGrid.Rows.Count - 1].Value = contractDetailsMessage.ContractDetails.TimeZoneId; UpdateMakretRuleIdsComboBox(contractDetailsMessage.ContractDetails.MarketRuleIds); }
private void ibClient_HandleContractDataMessage(ContractDetailsMessage message) { if (message.ContractDetails != null && message.ContractDetails.Summary != null) { _contractDetails[message.ContractDetails.Summary.ToString()] = message; } }
// TODO(live-1) - figure out how to serve these. There's a MarketHours type that should be used -- Strategy already does // something for this. // One idea would be to move the DataCollator from LiveRunner to TWSSource, and then have a MarketEventDataSource that I can // "load" trading hours updates into. Then the DataCollator would serve the updates at the right time. void ContractDetailsHandler(ContractDetailsMessage message) { //int contractId = e.RequestId / 9999; //// TODO(live-3) - time zones? //List<Tuple<DateTimeOffset, int>> liquidHoursList = ParseTradingHoursString(e.ContractDetails.LiquidHours, Now.Date); //List<Tuple<DateTimeOffset, int>> tradingHoursList = ParseTradingHoursString(e.ContractDetails.TradingHours, Now.Date); }
private void HandleContractDataMessage(ContractDetailsMessage message) { Contract con = message.ContractDetails.Summary; dicAssets[message.RequestId].Con = con; ibClient.ClientSocket.reqMktData(message.RequestId, con, null, false, false, new List <TagValue>()); }
private void HandleContractDataMessage(ContractDetailsMessage message) { if (message.RequestId > ContractManager.CONTRACT_ID_BASE && message.RequestId < OptionsManager.OPTIONS_ID_BASE) { contractManager.UpdateUI(message); } else if (message.RequestId >= OptionsManager.OPTIONS_ID_BASE) { optionsManager.UpdateUI(message); } }
public void UpdateUI(ContractDetailsMessage message) { contractResults.Rows.Add(1); contractResults[0, contractResults.Rows.Count - 1].Value = message.ContractDetails.Summary.Symbol; contractResults[1, contractResults.Rows.Count - 1].Value = message.ContractDetails.Summary.Currency; contractResults[2, contractResults.Rows.Count - 1].Value = message.ContractDetails.Summary.Multiplier; contractResults[3, contractResults.Rows.Count - 1].Value = message.ContractDetails.Summary.Strike; contractResults[4, contractResults.Rows.Count - 1].Value = message.ContractDetails.Summary.Right; contractResults[5, contractResults.Rows.Count - 1].Value = message.ContractDetails.Summary.Expiry; contractResults[6, contractResults.Rows.Count - 1].Value = message.ContractDetails.Summary.ConId; }
public void UpdateUI(ContractDetailsMessage message) { if (isComboLegRequest) { comboContractResults.UpdateUI(message); } else { HandleContractMessage(message); } }
public void UpdateUI(ContractDetailsMessage message) { contractResults.Rows.Add(1); contractResults[0, contractResults.Rows.Count - 1].Value = message.ContractDetails.Contract.Symbol; contractResults[1, contractResults.Rows.Count - 1].Value = message.ContractDetails.Contract.Currency; contractResults[2, contractResults.Rows.Count - 1].Value = message.ContractDetails.Contract.Multiplier; contractResults[3, contractResults.Rows.Count - 1].Value = message.ContractDetails.Contract.Strike; contractResults[4, contractResults.Rows.Count - 1].Value = message.ContractDetails.Contract.Right; contractResults[5, contractResults.Rows.Count - 1].Value = message.ContractDetails.Contract.LastTradeDateOrContractMonth; contractResults[6, contractResults.Rows.Count - 1].Value = message.ContractDetails.Contract.ConId; }
public void HandleContractMessage(ContractDetailsMessage contractDetailsMessage) { ContractDetailsGrid.Rows.Add(1); ContractDetailsGrid[0, ContractDetailsGrid.Rows.Count - 1].Value = contractDetailsMessage.ContractDetails.Summary.Symbol; ContractDetailsGrid[1, ContractDetailsGrid.Rows.Count - 1].Value = contractDetailsMessage.ContractDetails.Summary.LocalSymbol; ContractDetailsGrid[2, ContractDetailsGrid.Rows.Count - 1].Value = contractDetailsMessage.ContractDetails.Summary.SecType; ContractDetailsGrid[3, ContractDetailsGrid.Rows.Count - 1].Value = contractDetailsMessage.ContractDetails.Summary.Currency; ContractDetailsGrid[4, ContractDetailsGrid.Rows.Count - 1].Value = contractDetailsMessage.ContractDetails.Summary.Exchange; ContractDetailsGrid[5, ContractDetailsGrid.Rows.Count - 1].Value = contractDetailsMessage.ContractDetails.Summary.PrimaryExch; ContractDetailsGrid[6, ContractDetailsGrid.Rows.Count - 1].Value = contractDetailsMessage.ContractDetails.Summary.Expiry; ContractDetailsGrid[7, ContractDetailsGrid.Rows.Count - 1].Value = contractDetailsMessage.ContractDetails.Summary.Multiplier; ContractDetailsGrid[8, ContractDetailsGrid.Rows.Count - 1].Value = contractDetailsMessage.ContractDetails.Summary.Strike; ContractDetailsGrid[9, ContractDetailsGrid.Rows.Count - 1].Value = contractDetailsMessage.ContractDetails.Summary.Right; ContractDetailsGrid[10, ContractDetailsGrid.Rows.Count - 1].Value = contractDetailsMessage.ContractDetails.Summary.ConId; }
public void UpdateUI(ContractDetailsMessage message) { Contract contract = message.ContractDetails.Contract; if (contract.Right != null) { if (contract.Right.Equals("C")) { int mktDataRequest = currentMktDataCallRequest++; ibClient.ClientSocket.reqMktData(mktDataRequest, contract, "", useSnapshot, false, new List <TagValue>()); UpdateContractDetails(callGrid, (mktDataRequest - OPTIONS_DATA_CALL_BASE), contract); } else { int mktDataRequest = currentMktDataPutRequest++; ibClient.ClientSocket.reqMktData(mktDataRequest, contract, "", useSnapshot, false, new List <TagValue>()); UpdateContractDetails(putGrid, (mktDataRequest - OPTIONS_DATA_PUT_BASE), contract); } } }
private void ibClient_HandleContractDataMessageSignal(ContractDetailsMessage message) { Contract con = message.ContractDetails.Summary; var assetID = generateAssetIDFromContract(con); rwLock.AcquireWriterLock(1000); try { dicContract[assetID] = con; } catch (Exception e) { throw e; } finally { rwLock.ReleaseWriterLock(); } autoEvent.Set(); }