if (IsLong && bar.Low <= price)
{
if (bar.Open < price)
{
price = bar.Open;
}
Close(signalName, barNum, price, OrderType.Fall);
}

Вот как идет расчет. Т.е закрываем по заданной цене, если минимум был достигнут. Если же открытие было ниже предложенной цены, то закрываем по открытию. С шортами все наоборот.