先週末にバージョンアップしたEAを配布する予定でしたが、さらに仕様の変更を行うことにしたために配布を延期しました。
今回、さらに変更するのは、複数のEAを同時に利用した際に起こるエラーを回避するための仕様です。これまでは、一応、IsTradeAllowed()と言うコードを利用して他のEAとの併用時のエラーを回避できるようにしてはいたのですが、BNシリーズをいくつも併用するとこれだけでは対処が十分でないようで、EAの数を増やし始めてから徐々に "Trade context busy" というエラーが頻発するようになりました。
BNシリーズは同じ時間帯に取引が集中するために、いくつも併用するとどうしても取引のタイミングが重なってしまう場合があるようです。現在いくつEAを併用しているかは内緒ですが、フォワードテストをしている公開口座のEAのラインアップも今後さらに増やして行きたいと思っているので、このエラーを何とか回避しなければいけません。
対応に困って、アメリカのビジネスパートナーに相談したところ、より確実にエラーを回避できるような方法を教えてもらったので、そのまま実装することにしました。
その内容については、
こちらのサイトを参照してください。
今週一杯、新しいバージョンの動作確認をして週末には配布できるようにしたいと思います。
- 2008/08/04(月) 07:34:45|
- 開発方針
-
-
| コメント:2
私も複数のEAを同時に動かした場合にTrade context busyをどう防ぐか…困ってました。
結局sleepを入れてリトライを繰り返してましたが、IsTradeAllowed()で衝突回避ができるんですね。
目からウロコです。ありがとうございました。
- 2008/08/04(月) 10:38:00 |
- URL |
- Kaz #mQop/nM.
- [ 編集]
お役に立てたようでしたら幸いです。
でもIsTradeAllowed()ではエラー回避には十分ではないようで、リンク先のページにある最後の方のコードを使うとより良いようですよ。
横着して関数のコードはそのままコピペして実装してしまいました。
- 2008/08/04(月) 11:02:45 |
- URL |
- ぼなんさ #-
- [ 編集]