Я могу ошибаться, т.к. не проверял, но кажется вам стоит быть осторожным с Convert.ToString(ADX[i])
На момент заключения сделки, у вас оно принимает одно значение, к примеру 115, и в комментарии к сделке у вас будет соответственно "ShE 115", а на момент считывания по GetLastActiveForSignal значение Convert.ToString(ADX[i]) будет уже другим, поэтому скрипт может не увидеть вашу сделку.
Возможно стоит использовать GetLastShortPositionActive.