Ir para o conteúdo
  • FORMAS DE POUPAR

  • TiagoF

    Folha de cálculo para controlo de fundos

    Recommended Posts

    Duracellpt

    Espero não ser confuso...

    Cada função tem as suas variáveis e as funções não conhecem as variáveis umas das outras, a não ser que as variaveis sejam definidas como Globais. Mas eu não gosto de usar isso porque normalmente perco-me.

    As variáveis "ISIN" e "Data" fazem parte da função "Atualizar" e as variáveis "strTicker" e "dtDate" fazem parte da função "QuoteBest".

    Uma função é criada com a expressão "Function" mais o nome que queremos dar à função e depois, entre parenteses, as diversas variáveis de entrada que queremos para a função e o tipo de dados de cada uma. A função não funciona sem os valores que são reqeridos entre parenteses. Neste caso, "Function QuoteBest(strTicker as string, dtDate as Variant)" é criada a função QuoteBest em que são requeridos dois valores iniciais.

    Não é obrigatório haver variáveis de entrada para criar uma função, deixando-se os parenteses vazios. Por exemplo a função "Atualizar()".

    Uma função é chamada pelo nome dela e com os valores de entrada (se requeridos).

    Durante a função "Atualizar" é chamada a função "QuoteBest" que requer dois valores de entrada. Estes valores que eu quero utilizar estão guardados nas variáveis "ISIN" e "Data". Por isso é que chamo a função como "QuoteBest(ISIN, Data)".

    A função "QuoteBest", ao iniciar, guarda na variável "strTicker" o primeiro valor e na variável "dtDate" e segundo valor, isto porque a função "QuoteBest" não conhece as variáveis ISIN e Data porque fazem parte de outra função, mas sabe os valores que são colocados dentro de parenteses quando é chamada.

    A função "QuoteBest" é uma adaptação de uma função que encontrei na internet para ir buscar dados à propria internet.

    O que a função faz é ir buscar dados à Morninstar como se fosse o banco Best a aceder (utilizando o ID do Best) e por isso é que só funciona com ISINs de fundos presentes no banco Best.

    Tem também a função "QuoteInvest" que faz exatamente o mesmo, mas dizendo à Morningstar que é o banco Invest a aceder e por isso só tem acesso aos fundos do banco Invest.

    Explicando agora o código, as quatro primeiras linhas é para guardar o resultado do endereço guardado em "strURL", do tipo XML na variável "strXML".

    Junto com o resultado vem algum texto que não interessa. Por exemplo, o ISIN = LU0347184318 com a data 25/03/2015 resulta na variável "strXML" igual a:

    <TimeSeries><Security Id="F000002FBY"><HistoryDetail><EndDate>2015-03-25</EndDate><Value>170.78</Value></HistoryDetail></Security></TimeSeries>
    Daqui só quero o valor "170.78" e por isso utilizo as outras quatro funções que indicas para filtrar e retirar aquele valor, guardando-o na variável "dbClose". A função "Split" (já do Excel) divide um texto sempre que encontra o caractere definido por nós. Assim. a função "Split(strXML,">")" vai dividir o que temos em strXML em várias linhas sempre que encontra o caractere ">". Usando o exemplo anterior, esta função resultará na variável "strVQ1" igual a:
    <TimeSeries
    <Security Id="F000002FBY"
    <HistoryDetail
    <EndDate
    2015-03-25</EndDate
    <Value
    170.78</Value
    </HistoryDetail
    </Security
    </TimeSeries
    De notar que esta variável é um array e por isso tem as linhas separadas. Tenho uma linha que para o caso desta função dar erro (normalmente por a variável "strXML" não dar em nada) sair da função "QuoteBest". Depois é chamada novamente a função "Split", agora indo buscar o que está na sétima linha da variável "strVQ1" e separando pelo caractere "<". Utilizo o valor 6 porque a primeira linha é o número zero. strVQ1(0) - primeira linha strVQ1(6) - sétima linha A segunda função split resulta na variável "strVQ2" igual a:
    170.78
    /Value

    No final é guardada na variável "dbClose" é convertido num valor que possa ser usado para cálculo, utilizando a função "Val", o que está na primeira linha "strVQ(0)".

    Partilhar esta publicação


    Link para a publicação
    Partilhar noutros sites
    Visitante Sniper

    Muito bem explicado, percebi perfeitamente tudo o que escreveste. Para ir buscar o valor pretendido poderias ter usado a função LEN (núm.catacteres) conjugada com FIND e Right ou Left, mas assim também já aprendi uma nova maneira  ;)

    Agora pronto se quiser fazer histórico é só adaptar o código às datas que quero ir buscar e guardo-os.

    Não dá é para aceder por site a essa base de dados, pois não?

    Partilhar esta publicação


    Link para a publicação
    Partilhar noutros sites
    Colmarino

    Olá pessoal e parabéns pelos esforços altruístas aqui demonstrados.

    Eu se momento utilizo apenas o OpenOffice e já tentei abrir as vossas folhas e não funcionou. Apenas tentei 1 vez verdade seja dita.

    Será mais simples adquirir o MS Office?

    Partilhar esta publicação


    Link para a publicação
    Partilhar noutros sites
    rmesq

    Gabriel Pinto se tiveres conta na gmail. O excel incluido lá deve conseguir aceder às funções básicas.

    É óbvio que o MS Office é mais completo e é uma ferramenta muito utilizada, mas tudo depende do uso que vais dar.

    Partilhar esta publicação


    Link para a publicação
    Partilhar noutros sites
    pauloaguia

    Olá pessoal e parabéns pelos esforços altruístas aqui demonstrados.

    Eu se momento utilizo apenas o OpenOffice e já tentei abrir as vossas folhas e não funcionou. Apenas tentei 1 vez verdade seja dita.

    Será mais simples adquirir o MS Office?

    As várias plataformas de folhas de cálculo (Microsoft Office, OpenOffice, GoogleCalc, etc) têm apenas uma compatibilidade muito limitada - regra geral as macros e as fórmulas mais complexas não são portáveis entre as diferentes plataformas.

    Se souberes um pouco de programação é provável que consigas converter entre elas.

    As duas opções mais simples são convencer o autor a tentar programar de forma a manter a compatibilidade entre elas (normalmente dá mais trabalho do que aquele que se está disposto a dar) ou então resignares-te a usar o MSOffice, sim...

    Partilhar esta publicação


    Link para a publicação
    Partilhar noutros sites
    SergioG

    Bom dia,

    se alguém precisar, tenho a folha de excel partilhada neste tópico a funcionar no Google Sheets, basta enviarem-me PM com o e-mail (é obrigatório possuir conta Gmail) que eu partilho, após isso, basta fazerem uma cópia para vocês mesmos (Ficheiro -> Fazer Cópia).

    Não está exactamente igual pois está adaptada às minhas necessidades (removi umas coisas e adicionei outras), mas pelo menos a formula para consultar as cotações dos fundos está a funcionar, o que penso ser o mais importante.

    Já agora, agradeço a quem criou inicialmente a folha de excel, foi de grande ajuda, muito obrigado ;)

    Cumprimentos.

    Partilhar esta publicação


    Link para a publicação
    Partilhar noutros sites
    pauloaguia
    se alguém precisar, tenho a folha de excel partilhada neste tópico a funcionar no Google Sheets, basta enviarem-me PM com o e-mail (é obrigatório possuir conta Gmail) que eu partilho, após isso, basta fazerem uma cópia para vocês mesmos (Ficheiro -> Fazer Cópia).
    Se clicares em Partilhar, sobre o documento, e pedires um link de partilha, dá-te um link que podes colocar aqui e a que qualquer pessoa pode aceder para copiar para si, creio eu. Nesse caso já não seria preciso uma conta do GMail nem tu terias de andar a gerir partilhas...

    A menos que queiras controlo, claro, ou poder ir informando as pessoas de eventuais atualizações...

    Partilhar esta publicação


    Link para a publicação
    Partilhar noutros sites
    SergioG
    Se clicares em Partilhar, sobre o documento, e pedires um link de partilha, dá-te um link que podes colocar aqui e a que qualquer pessoa pode aceder para copiar para si, creio eu. Nesse caso já não seria preciso uma conta do GMail nem tu terias de andar a gerir partilhas...

    A menos que queiras controlo, claro, ou poder ir informando as pessoas de eventuais atualizações...

    Boas,

    tens razão pauloaguia, não me lembrei disso.

    Fica então o link: https://docs.google.com/spreadsheets/d/1wDTvwds7OWOi3zDfpkIK54upR3n9rJbH-QEoApaG7h4/edit?usp=sharing

    Se tiverem sugestões ou dificuldades em entender algo, estou disponível para ajudar.

    Cumps.

    Partilhar esta publicação


    Link para a publicação
    Partilhar noutros sites
    rmesq

    Tens a folha em excel normal? Porque deves ter as permissões bloqueadas e não tem lógica todos os users acederem à tua folha pessoal. BTW a folha está mt porreira.

    Partilhar esta publicação


    Link para a publicação
    Partilhar noutros sites
    SergioG

    Tens a folha em excel normal? Porque deves ter as permissões bloqueadas e não tem lógica todos os users acederem à tua folha pessoal. BTW a folha está mt porreira.

    Boas,

    não, só tenho esta.

    As permissões estão corretas, só é possível visualizar, se queres usar a folha tens que ir a (Ficheiro -> Fazer cópia), desta forma é criada uma cópia no teu Google Drive e depois esse sim já podes alterar a gosto.

    Esta não é a minha folha pessoal, apesar desses fundos fazerem parte da minha carteira, não estão aí todos e tanto os valores (€) como pesos estão trocados, foi só para servir de exemplo.

    Cumps.

    Partilhar esta publicação


    Link para a publicação
    Partilhar noutros sites
    nfs

    A parte da realocação esta muito boa, pena eu perceber pouco de excel, se não acrescentava esse campo na folha original

    Partilhar esta publicação


    Link para a publicação
    Partilhar noutros sites
    SergioG

    A parte da realocação esta muito boa, pena eu perceber pouco de excel, se não acrescentava esse campo na folha original

    Boas,

    aqui tens: https://www.dropbox.com/s/ywnycjppkvpfj97/Fundos%20Investimento_vs1.1.xlsm?dl=0

    Basta preencheres a célula R1 com o valor a reforçar e ter claro a alocação pretendida previamente definida na coluna R.

    Cumps.

    Partilhar esta publicação


    Link para a publicação
    Partilhar noutros sites
    SergioG

    SergioG para atualizar basta inserir o ISIN do novo fundo?

    Na minha folha? Basta adicionar o ISIN na folha Cotações.

    Partilhar esta publicação


    Link para a publicação
    Partilhar noutros sites
    antoniobento

    Na folha anterior tinha um célula onde se actualizava. Fiz uma cópia desta folha para o meu computador mas cotação "nome" e valor actual "nome" e não sei como actualizar. Agradeço desde já a vossa ajuda.

    Partilhar esta publicação


    Link para a publicação
    Partilhar noutros sites
    nfs

    Na folha anterior tinha um célula onde se actualizava. Fiz uma cópia desta folha para o meu computador mas cotação "nome" e valor actual "nome" e não sei como actualizar. Agradeço desde já a vossa ajuda.

    Basta meteres o isin que a folha trata do resto, tens que ativar os macros para atualizar

    Partilhar esta publicação


    Link para a publicação
    Partilhar noutros sites
    SergioG

    Na folha anterior tinha um célula onde se actualizava. Fiz uma cópia desta folha para o meu computador mas cotação "nome" e valor actual "nome" e não sei como actualizar. Agradeço desde já a vossa ajuda.

    Não podes guardar o documento para o computador, a folha que disponibilizei é para ser usada Online, no Google Drive. Se fizeres "Ficheiro -> Fazer Cópia" é criada uma cópia no teu Google Drive e é essa cópia que vais usar no Google Drive, não a podes transferir para o computador.

    Partilhar esta publicação


    Link para a publicação
    Partilhar noutros sites
    nfs

    Boas,

    aqui tens: https://www.dropbox.com/s/ywnycjppkvpfj97/Fundos%20Investimento_vs1.1.xlsm?dl=0

    Basta preencheres a célula R1 com o valor a reforçar e ter claro a alocação pretendida previamente definida na coluna R.

    Cumps.

    Sérgio já experimentei está excelente obg, quanto a tua folha tb  me parece muito boa, mas por exemplo eu se quiser meter lá a minha carteira tenho que meter os isin nas cotações, depois tenho que fazer as subscrições na pagina do meio, e depois na página principal tenho que meter novamente os isin e nome dos fundos e categorias?

    Partilhar esta publicação


    Link para a publicação
    Partilhar noutros sites
    SergioG

    Sérgio já experimentei está excelente obg, quanto a tua folha tb  me parece muito boa, mas por exemplo eu se quiser meter lá a minha carteira tenho que meter os isin nas cotações, depois tenho que fazer as subscrições na pagina do meio, e depois na página principal tenho que meter novamente os isin e nome dos fundos e categorias?

    Não necessariamente.

    Em relação ao ISIN, sim, tens que colocar na página "Cotações". Porquê que fiz assim? Uso essa folha para controlar 3 carteiras diferentes onde somam um total de pouco mais de 20 fundos com alguns em comum. Para a página não ficar tão pesada ao abrir devido à consulta de cotações nas 3 carteiras, decidi colocar tudo numa página e as carteiras vão buscar o valor a essa página (Cotações) através do ISIN, ou seja, é mais eficiente.

    As subscrições na página do meio (Subscrições\Resgates), podes abdicar dela e colocar diretamente o valor nas colunas "UPs" e "Valor (€)".

    Na página principal, pelo menos o ISIN tem que lá estar, o nome e categoria é facultativo :D

    Fica aqui a mesma página mas simplificada (Abdica da página Cotações e do nome da carteira nos movimentos da página Subscrições\Resgates): https://docs.google.com/spreadsheets/d/13aX4aavSguDNVSP_9XiyXOqcACiSHPw94wTH9eG1Hys/edit?usp=sharing

    É difícil simplificar muito mais. O que não entenderem perguntem.

    Partilhar esta publicação


    Link para a publicação
    Partilhar noutros sites
    Colmarino

    Fica aqui a mesma página mas simplificada (Abdica da página Cotações e do nome da carteira nos movimentos da página Subscrições\Resgates): https://docs.google.com/spreadsheets/d/13aX4aavSguDNVSP_9XiyXOqcACiSHPw94wTH9eG1Hys/edit?usp=sharing

    É difícil simplificar muito mais. O que não entenderem perguntem.

    Obrigado pela folha simplificada SergioG, e pelo trabalho altruísta :)

    Tenho um ISIN que está no Best mas que me dá erro: LU0093504115

    Os outros da minha carteira funcionaram logo.

    Partilhar esta publicação


    Link para a publicação
    Partilhar noutros sites
    SergioG

    Obrigado pela folha simplificada SergioG, e pelo trabalho altruísta :)

    Tenho um ISIN que está no Best mas que me dá erro: LU0093504115

    Os outros da minha carteira funcionaram logo.

    Obrigado Gabriel.

    Estive a verificar e está a funcionar. Verifica se tens a fórmula na coluna "F" na linha onde tens esse ISIN.

    Partilhar esta publicação


    Link para a publicação
    Partilhar noutros sites
    Colmarino

    LU0093504115

    Estive a verificar e está a funcionar. Verifica se tens a fórmula na coluna "F" na linha onde tens esse ISIN.

    Sim, todas as colunas F com FI têm a função mas com o ISIN LU0093504115 dá-me erro:

    Erro

    Argumento inválido: https://lt.morningstar.com/api/rest.svc/timeseries_price/8ll7icpcf4?id=LU0093504115

    &currencyId=BAS&idtype=isin&frequency=daily&timePeriod=1&outputType=XML (linha 11).

    Verifico uma quebra de url nesta mensagem de erro, será a causa? EDIT*: Vi agora no script que é mesmo assim.

    Já agora, qual é a função do campo F1?

    PS. Mesmo quando coloco este ISIN numa das linhas que funcionam, continua com o mesmo erro.

    Partilhar esta publicação


    Link para a publicação
    Partilhar noutros sites
    SergioG

    LU0093504115

    Sim, todas as colunas F com FI têm a função mas com o ISIN LU0093504115 dá-me erro:

    Verifico uma quebra de url nesta mensagem de erro, será a causa? EDIT*: Vi agora no script que é mesmo assim.

    Já agora, qual é a função do campo F1?

    PS. Mesmo quando coloco este ISIN numa das linhas que funcionam, continua com o mesmo erro.

    O campo F1 é para atualizar a coluna F (Cotação) e K (Saldo calculado em função da segunda página), por vezes acontece dar erro na consulta da cotação e\ou não calcular o saldo, se mudares o valor na célula F1, essas colunas são forçadas a recalcular, pode ser só mudares esse valor.

    Se mesmo assim, não resultar, não estou a ver o que possa ser, se abrires o link que partilhei, podes ver que está lá o ISIN que mencionas e com a devida cotação, não deu erro nenhum.

    Experimenta mudar o valor da célula F1 ;)

    Partilhar esta publicação


    Link para a publicação
    Partilhar noutros sites

    Este conteúdo terá de ser aprovador por um moderador

    Visitante
    Está a comentar como Visitante. Se já se registou, por favor entre com o seu Nome de Utilizador.
    Responder a este tópico

    ×   Colou conteúdo com formatação.   Paste as plain text instead

      Only 75 emoji are allowed.

    ×   Foi criada uma pré-visualização automática a partir da ligação que colocou.   Mostrar apenas como ligação

    ×   Your previous content has been restored.   Clear editor

    ×   You cannot paste images directly. Upload or insert images from URL.


    ×
    FinancasPessoais.pt

    Subscreva a newsletter e tenha acesso a todas as novidades do grupo de sites FinancasPessoais.pt e a conteúdos exclusivos.

    Os sites FinancasPessoais.pt respeitam a sua privacidade e vontade:

    Não mostrar mais esta caixa