public boolean realizarTransacoesPossiveis() {
        for (int indiceCompra = 0; indiceCompra < compras.getTamanhoLista(); indiceCompra++) {
            for (int indiceVenda = 0; indiceVenda < vendas.getTamanhoLista(); indiceVenda++) {
                Interesse compra = compras.getInteresse(indiceCompra);
                Interesse venda = vendas.getInteresse(indiceVenda);

                if (!compra.getCliente().equals(venda.getCliente())) {
                    if (compra.getAcao().getEmpresa().equals(venda.getAcao().getEmpresa())
                            && compra.getPreco() >= venda.getPreco()) {

                        double precoFinal = (compra.getPreco() + venda.getPreco()) / 2;

                        try {
                            if (compra.getAcao().getQuantidade() < venda.getAcao().getQuantidade()) {
                                venda.getAcao().setQuantidade(venda.getAcao().getQuantidade() - compra.getAcao().getQuantidade());
                                compras.remover(compra);

                                compra.getCliente().comunicarCompraEfetuada(compra.getAcao().getEmpresa(), compra.getAcao().getQuantidade(), precoFinal);
                                venda.getCliente().comunicarVendaEfetuada(compra.getAcao().getEmpresa(), compra.getAcao().getQuantidade(), precoFinal);
                                return true;

                            } else if (compra.getAcao().getQuantidade() > venda.getAcao().getQuantidade()) {
                                compra.getAcao().setQuantidade(compra.getAcao().getQuantidade() - venda.getAcao().getQuantidade());
                                vendas.remover(venda);

                                compra.getCliente().comunicarCompraEfetuada(compra.getAcao().getEmpresa(), venda.getAcao().getQuantidade(), precoFinal);
                                venda.getCliente().comunicarVendaEfetuada(compra.getAcao().getEmpresa(), venda.getAcao().getQuantidade(), precoFinal);
                                return true;

                            } else {
                                compras.remover(compra);
                                vendas.remover(venda);

                                compra.getCliente().comunicarCompraEfetuada(compra.getAcao().getEmpresa(), compra.getAcao().getQuantidade(), precoFinal);
                                venda.getCliente().comunicarVendaEfetuada(compra.getAcao().getEmpresa(), venda.getAcao().getQuantidade(), precoFinal);
                                return true;
                            }
                        } catch (RemoteException ex) {
                            Logger.getLogger(SalaTransacoes.class.getName()).log(Level.SEVERE, null, ex);
                        }
                    }
                }
            }
        }
        return false;
    }