IB有规则,我在2秒内无法运行超过6个这样的呼叫。我一直在考虑起搏规则,需要找到一个解决方法。我可以将方法调用(Historicaldata)保存为对象并定期调用它吗? 我有多个调用此方法的线程,需要找到一个解决方案,在每6次连续调用的调用ibClient.ClientSocket.reqHistoricalData之间暂停。
private void Historicaldata(int tickerId, Contract contract, string endDateTime,
string durationString, string barSizeSetting, string whatToShow, int useRTH, int formatDate, List<TagValue> chartOptions)
{
ibClient.ClientSocket.reqHistoricalData(tickerId, contract, endDateTime, durationString, barSizeSetting, whatToShow, useRTH, formatDate, null);
}
答案 0 :(得分:0)
您可以使用ConcurrentQueue
创建一个包含参数的类。
创建课程时,您可以启动一个每2/6秒触发一次的计时器。
计时器回叫可以检查队列中是否有任何项目,如果是,请进行方法调用。
或者,您可以将队列添加到队列中,计时器可以调用委托。