Dukascopy Support Board http://www.dukascopy.com/swiss/english/forex/jforex/forum/ |
|
API 2.9.5.1 Broadcast min period exceeded : 187 / 1000 http://www.dukascopy.com/swiss/english/forex/jforex/forum/viewtopic.php?f=16&t=50544 |
Page 1 of 1 |
Author: | hyperscalper [ Mon 16 Dec, 2013, 17:16 ] |
Post subject: | API 2.9.5.1 Broadcast min period exceeded : 187 / 1000 |
Upgraded my linux server from 2.8.0 --> 2.9.5.1 this weekend and now I have problems with IEngine.broadcast... pacing. So I believe this exception should not be happening, since I didn't change my codebase. I am running many individual Strategy modules, each of which may use IEngine.broadcast... My software runs perfectly under API 2.8.0, so something has change in API 2.9.5.1 which results in my software violating the minimum delay between successive messages, even though each Strategy waits the required period of time >1000 msecs between successive broadcast messages. I may have to revert to 2.8.0 until this can be clarified. HyperScalper |
Author: | API Support [ Mon 16 Dec, 2013, 17:23 ] |
Post subject: | Re: API 2.9.5.1 Broadcast min period exceeded : 187 / 1000 |
Could you please provide a launch scenario and an example strategy? |
Author: | hyperscalper [ Mon 16 Dec, 2013, 17:53 ] |
Post subject: | Re: API 2.9.5.1 Broadcast min period exceeded : 187 / 1000 |
I don't think I can, as it's very complex. But each Strategy independently "paces" itself so that it does NOT violate the minimum delay requirement, on a per-Strategy basis. As this works perfectly in 2.8.0, I can only assume that the exception is being incorrectly thrown, or the delay criterion has been changed since 2.8.0 . In the unlikely event that the minimum delay period has now become a "global" account-wide restriction, this could explain why I am seeing problems. Each Strategy paces correctly, but they are running concurrently so another Strategy happens to send its own message just a few milliseconds after different Strategy has executed a broadcast. If this were the case that would easily explain the problem, and hope the implementation hasn't been changed in that way <speculation> You could reassure me that this is not the requirement, that would help... I'll quickly implement a global delay timestamp at the level of the IClient, which all Strategies must observe, and see whether the problem disappears. HyperScalper |
Author: | API Support [ Mon 16 Dec, 2013, 17:59 ] |
Post subject: | Re: API 2.9.5.1 Broadcast min period exceeded : 187 / 1000 |
We don't ask you for your complex system, we ask if you can provide an example strategy or 2 strategies which show the idea + the launch scenario (i.e. local run/remote run; Historical Tester or work with live data; JForex-SDK or platform). |
Author: | hyperscalper [ Mon 16 Dec, 2013, 20:22 ] |
Post subject: | Re: API 2.9.5.1 Broadcast min period exceeded : 187 / 1000 |
(Amazon EC2 linux, Oracle JDK 1.7 update 45 server vm) I put in a global pacing restriction and the exception is still thrown. I realize you want a test scenario but I can't provide one at this time. I have to revert to the 2.8.0 API for right now. I've been respecting these min delay pacing restrictions for many months, so I'm pretty sure the code enforces the minimum delay of 1000+ msecs per broadcast message per Strategy. I delay about 1200 msecs just to be on the safe side. For now, it appears that the API's internal timestamp for the "last broadcast message" is incorrect. So these min delay violation exceptions appear to be thrown when they should not be thrown. HyperScalper |
Author: | hyperscalper [ Mon 16 Dec, 2013, 20:50 ] |
Post subject: | Re: API 2.9.5.1 Broadcast min period exceeded : 187 / 1000 |
I've seen a few of these also in 2.8.0 API so I'll review my minimum delay code. Just saw a lot more of them in 2.9.1.5 so I panicked Could be I have missed something. I'll post some more when I get some further results. Could be my problem so I'll check carefully. If I've queued up several IContext.broadcast calls within a Callable, and IContext.executeTask has these queued up, it could be that I violate the minimum delay, so I'll make sure I measure time from the actual call to IEngine.broadcast, rather than the IContext.executeTask so that could be my problem... Sorry for the trouble Thanks, HyperScalper |
Page 1 of 1 |