Ну вам уже было рекомендовано разобраться с приказами. Упомянутый вами SellIfLess еще раз разберу для вас, если одного раза было недостаточно.
Это условный приказ. Он находится на брокере. Он не выводится на биржу. Работает он следующим образом: когда вы производите
SellIfLess(bar + 1, Количество лотов, СтопЦена, "Sh_ReversEnter")
то ваша СтопЦена это цена активации приказа. Как только цена на рынке станет равна или меньше, приказ активируется. После активации брокер выводит на рынок лимитный приказ на продажу с ценой равной СтопЦена - проскальзывание, которое у вас равно 0. Следовательно, будет лимитный приказ по цене СтопЦена.
Далее, данный приказ может быть исполнен биржей ТОЛЬКО если цена инструмента равна СтопЦена или выше ее. Почему? Вопросы к бирже.
Отсюда, если цена пошла резко вниз, то ваш приказ не будет исполнен. Потому что цена ушла ниже СтопЦена и не может быть исполнена ваша лимитная заявка. А это ситуация вполне естественная. Пошел прорыв и без отката. У вас, следовательно, должен быть пропущенный вход и сообщение об этом. Если сообщения нет, то значит условия if как то не сработали и вообще не было даже сигнала на условный ордер. Если вы хотите знать точно, сработали или нет, используйте элементарные логи в виде ctx.Log(). Тогда вы сможете аргументированно утверждать что косяк в программе. Пока же это не очевидно.
Надеюсь, это поможет вам обратить внимание на свой код и разобраться в проблеме.
_________________________
__