The crash ceases all trading after the event.
Below is a snippet of code to demonstrate the problem.
// UI parameters:
// orderQuantity = byStrategy, entrys per direction = 1
// primary instrument = BGZ, 10 minute, 1/5/2010 to 1/6/2010
// CloseAtEndOfSession = false
protectedoverridevoid Initialize()
{
Add("BGU",PeriodType.Minute,10); //BarsArray [1]
CalculateOnBarClose = true;
}
protectedoverridevoid OnBarUpdate()
{
if (BarsInProgress != 0)
return;
if(Closes[0][0]<Closes[0][1])
{
ExitLong(1,400,"Reset", "dd1");
}
if(Closes[0][0]>Closes[0][1])
{
EnterLong(1,400,"dd1");
}
if(ToTime(Time[0]) == 160000)
{
EnterLong(1,400,"dd1"); //***** crashes NT but EnterLong(0,400,"dd1") will run okay
}
}
The work around solution is to wrap EnterLong(x,,) with an if statement to filter out the possibility of an end of session execution.
There seems to be some NT end of session code that is invisible to the user in normal (primary bars) operation, but monitoring the OnOrderUpdate method reveals that primary bar orders are cancelled without fill. However this is not the case with other than the primary bars object, which I think is the source of the problem.
Comment