Hola,
Yo lo haría en el método onBar, comprobando que el periodo que te venga sea de, por ejemplo, un segundo (o la frecuencia con la que quieras comprobar entre los periodos posibles...).
Algo como (va de memoria porque no estoy ahora dentro del editor de jforex...)
IF (period.equals(Period.ONE_SEC)){
...
}
Creo que sería mejor en el onBar que en el onTick porque imagino que no necesitas tanta exactitud como para comprobar en cada tick... pero sería igual hacerlo en uno o en otro, lo que pasa que en el onTick no necesitas poner el filtro del periodo...
Ahora, la condición, necesitarías obtener por un lado el margen y por otro el beneficio de las órdenes abiertas.
Para lo del margen, no sé exactamente ahora a que dato te refieres, pero podrías mirar algunos métodos el objeto IAccount, como getEquity, getBalance, getBaseEquity, getCreditLine, getUseOfLeverage, etc... entre tantos alguno tendrá que valer para sacar directamente lo que quieres o para usarlo y calcular tú el dato que necesitas
...
Para el beneficio podrías usar un bucle como este:
double pl = 0;
for(IOrder o : engine.getOrders())
pl = pl + o.getProfitLossInAccountCurrency(); //restar o.getCommissions() si quieres tener en cuenta las comisiones
Bueno, no se si te habrá ayudado porque es muy general...
Saludos,