Hey swen.... As it's coded , there is not anything between start() and the job .... So yes, it will do the job on every tick....
A frequent method is to count something, on your case here you could count the total orders.... If the count has changed since the last tick,
-- Now do the job....
Else
-- Now do nothing....
//--
When EA starts,all open transactions should be composed to the Array
this has me curious.... All of this information is stored/written currently .... Is there something special your doing with the array.... I can not tell from your code...h