Да нет никаких проблем. Были бы - давно уже бы громко ругался

Только лишние строчки во вспомогательных логах, да необходимость периодически обдумывать после очередных дописок в инит, что будет, если этот код выполнится несколько раз с обрывами исполнения предыдущего раза в произвольном месте.
Но ваша фраза "на самом деле это не init много раз вызывается, а сам скрипт может рассчитываться несколько раз сначала" настораживает... Означает ли она, что во время очередного запуска скрипта может выполнится не только инит, но еще и calc() или onHistoryCalculated() , а потом еще раз скрипт запустится и опять дойдет до исполнения calc()/onHistoryCalculated()

Просто если речь только об ините, то Вы правы, поиметь большие проблемы наверное невозможно, т.к. возможность исполнять/снимать заявки из инита заблаговременно убрана

Но если до calc()/onHistoryCalculated() может доходить - то я писать код с такой "устойчивостью" писать пока не умею.
Т.е. реальных проблем пока нет, и, наверное, (если речь только об ините!!!), раз у вас это не баг, а особенность работы в рамках текущей архитектуры - можно ограничится описанием этой особенности в документации и больше не париться. Ибо конечно всё, что по ошибочному восприятию инита как функции "запускающейся при запуске скрипта" хочется засунуть в инит, можно засунуть, например, в onHistoryCalculated() или выделить в калке/onNewCandle спецзону "первый после запуска скрипта запуск калке/onNewCandle" и поместить туда. Но если, опять же onHistoryCalculated() может несколько раз подряд вызваться - это уже мегапроблема. (Вдруг я туда какие-либо счетчики с накоплением поставил. Зачем - не знаю - это я фантазирую. Или более реальное - кто-то, использующий сложные системы условных и активных заявок, понимая, что может произойти разрыв с сервером скажем на 1 минуту, очевидно, захочет после запуска скрипта после восстановления соединения понять текущую ситуацию, загрузить таблицу заявок и сделок, понять, что исполнилось, по каким ценам, что нет, что нужно срочно снимать и пр.)