Так не бывает, чтобы не было условия. Всегда открытие лимиткой имеет вид
if (Условие) sec.Positions.BuyAtPrice(i+1, Количество, Цена, Имя сигнала);
Если количество не меняется, то все управления заявками можно полностью описать значения Условие и Цена. А цену, разумеется,нужно предварительно приводить к шагу цены, тогда и считаться все будет правильно и левых транзакций +/- шаг цены каждый пересчет, из-за того то там в третьем знаке после запятой что-то поменялось.