Например хочу закрыть позицию, чтобы не переносить через ночь за 10 секунд до закрытия сессии.
Могу например проверять GetServerTime в каждом calc()... Но что если например инструмент низколиквидный и есть заметная вероятность, что в последние 10 секунд не пройдет ни одного трейда? Тогда, например, функция а-ля ToDoAt(hour, minute, second){} переопределяемая пользователем и вызываемая в соответствующий момент времени, независимо от вызова calc() пригодилась бы.
Если есть вероятность, что за последние 10 секунд не совершится ни одного трейда, никакая функция не поможет закрыть в это время позицию: у тебя просто не будет покупателя или продавца! вообще пытаться за 10 секунд до окончания сессии закрыть неликвид - это огромный риск остаться в позиции. Я неправ?