Для каждого экзекьютора у нас есть две точки: это купить и продать.
Это работает по принципу машина состояний - в зависимости от текущего состояния мы определяем определенную логику и переходим к следующему сконфигурированому состоянию. ВАЖНЫЙ МОМЕНТ: У каждого исполнителя есть два состояния: 1. Отвечает за то с какого состояния исполнитель начнёт работу (То есть определяет первое состояние). 2. Состояние с которого мы должны продолжить прерванное исполнение (Если по какой-то причине у нас исполнение прервалось, допустим отключился компьютер, а исполнение должно продолжаться, то после того как мы заново запустим приложение, приложение увидит, что у нас есть исполнение которое необходимо продолжать, то оно начнет исполнение с состояния которое не закончила(следующее состояние после законченного). В основном почти у всех экзекьюторов состояние с которого мы должны возобновить прерванное исполнение это в целом одно и тоже, это проверка EndOfExecutionTimeState, это делается чтобы убедиться, что время не истекло, стоит ли возобновлять исполнение. Если время в порядке и возобновление возможно, то возобновление происходит с состояния на котором оно прервалось.)