2017-07-12 10 views
0

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

パラメータを保持するためにConcurrentQueueでクラスを作成できます。

クラスを作成するときは、2/6秒ごとに起動するタイマーを開始できます。

タイマーコールバックは、キューに項目があるかどうかをチェックし、そうであればメソッド呼び出しを行います。

代理人をキューに追加し、タイマーが代理人を呼び出すことができます。

関連する問題