Carregando taxas de câmbio...
Carregando preços...
Valor da Carteira
0,00 €
Somatório do valor final apenas das ações não vendidas.
Investimento Inicial
0,00 €
Dinheiro Investido.
Lucro / PrejuÃzo da Carteira
0,00 € (0,00%)
Lucro não realizado das posições que ainda estão abertas.
Saldo em Caixa
EUR: 0,00 €
USD: 0,00 $
Dinheiro disponÃvel para investido.
Resumo por Ação
Variaçao por Ativo
A carregar...
========================================================================================
FICHEIRO: roteiro-amesterdao-belgica-mapa.html
Tamanho: 27968 bytes
========================================================================================
Roteiro Amesterdão e Bélgica
Mapa do roteiro: Amesterdão, PaÃses Baixos e Bélgica
Este HTML junta hotéis, voos e pontos do programa diário entre 3 e 10 de junho de 2026. Podes selecionar vários dias ao mesmo tempo para ver todos os locais combinados no mesmo mapa.
Mapa interativo
Como usar
- Clica em vários dias para combinar locais no mesmo mapa.
- O botão de recentramento ajusta a vista aos dias atualmente selecionados.
- Os hotéis aparecem nos dias em que servem de base.
Hotéis
Amesterdão: Park Inn by Radisson Amsterdam City West, La Guardiaweg 59, Westpoort, 1043 DE Amesterdão, PaÃses Baixos.
Bruxelas: YOOMA Urban Lodge, Square De L'aviation 23-27, Anderlecht, 1070 Bruxelas, Bélgica.
========================================================================================
FICHEIRO: sw.js
Tamanho: 1320 bytes
========================================================================================
const CACHE_VERSION = 'site-financeiro-v1';
const STATIC_ASSETS = [
'/',
'/index.html',
'/resumo.html',
'/estilos-backend.css',
'/icon.png',
'/manifest.webmanifest',
'/pwa-register.js'
];
self.addEventListener('install', (event) => {
event.waitUntil(
caches.open(CACHE_VERSION).then((cache) => cache.addAll(STATIC_ASSETS))
);
self.skipWaiting();
});
self.addEventListener('activate', (event) => {
event.waitUntil(
caches.keys().then((keys) =>
Promise.all(
keys
.filter((key) => key !== CACHE_VERSION)
.map((key) => caches.delete(key))
)
)
);
self.clients.claim();
});
self.addEventListener('fetch', (event) => {
const { request } = event;
if (request.method !== 'GET') {
return;
}
event.respondWith(
caches.match(request).then((cachedResponse) => {
if (cachedResponse) {
return cachedResponse;
}
return fetch(request)
.then((networkResponse) => {
if (request.url.startsWith(self.location.origin) && networkResponse.ok) {
const copy = networkResponse.clone();
caches.open(CACHE_VERSION).then((cache) => cache.put(request, copy));
}
return networkResponse;
})
.catch(() => caches.match('/index.html'));
})
);
});
========================================================================================
FICHEIRO: transacoes-acoes.csv
Tamanho: 45543 bytes
========================================================================================
Ordem,DataCompra,DataVenda,NomeAcao,NumAcoes,ValorInicial,ValorFinal,Comissoes,CustoInicialTotal,CustoFinalTotal,Ganho,Moeda
"1","2019-10-13","2019-11-16","NASDAQ:GOOGL","0.161663","61.86","62.19","0","10.00","10.05","0.05","USD"
"2","2019-10-16","2020-02-10","NASDAQ:AMZN","0.11321","88.77","106.04","0","10.05","12.00","1.96","USD"
"3","2020-01-22","2020-06-10","NASDAQ:AAPL","1.8870298","79.49","87.25","0","150.00","164.64","14.64","USD"
"4","2020-01-27","2020-06-10","NASDAQ:AAPL","1.28949064","77.55","87.25","0","100.00","112.51","12.51","USD"
"5","2020-01-27","2020-06-10","NASDAQ:AAPL","1.28812028","77.63","87.39","0","100.00","112.57","12.57","USD"
"6","2020-02-04","2020-05-29","NASDAQ:ADBE","0.27270991","366.69","381.53","0","100.00","104.05","4.05","USD"
"7","2020-02-06","2020-05-01","NASDAQ:TSLA","1.9305018","51.80","58.37","0","100.00","112.68","12.68","USD"
"8","2020-02-19","2020-02-25","NYSE:MA","0.28609409","346.04","331.37","0","99.00","94.80","-4.20","USD"
"9","2020-02-19","2020-04-15","NASDAQ:TSLA","1.97749185","62.74","67.53","0","124.07","133.54","9.47","USD"
"10","2020-02-25","2020-05-20","NYSE:MA","0.31256977","313.53","296.71","0","98.00","92.74","-5.26","USD"
"11","2020-02-27","2020-04-13","NASDAQ:AMZN","1.028983","97.27","99.55","0","100.09","102.44","2.35","USD"
"12","2020-03-19","2020-04-14","NASDAQ:AMZN","1.0563286","94.67","113.91","0","100.00","120.33","20.32","USD"
"13","2020-03-19","2020-05-05","NASDAQ:AAPL","1.57029008","63.68","74.66","0","100.00","117.24","17.24","USD"
"14","2020-03-25","2020-03-25","NASDAQ:TSLA","2.72737185","36.67","48.96","0","100.01","133.53","33.52","USD"
"15","2020-04-07","2020-05-25","NYSE:MCD","1.11594688","179.22","187.74","0","200.00","209.51","9.51","USD"
"16","2020-04-14","2020-05-12","NASDAQ:NFLX","0.25100401","402.74","438.85","0","101.09","110.15","9.06","USD"
"17","2020-04-14","2020-04-30","NASDAQ:TSLA","2.02850715","49.83","55.55","0","101.08","112.68","11.60","USD"
"18","2020-04-16","2020-06-10","NASDAQ:AMZN","1.6590626","121.20","132.5025","0","201.08","219.83","18.75","USD"
"19","2020-04-16","2020-07-01","NASDAQ:NFLX","0.22745365","444.40","464.20","0","101.08","105.58","4.50","USD"
"20","2020-04-27","2020-05-11","NASDAQ:GOOGL","3.1276144","64.29","69.52","0","201.07","217.43","16.36","USD"
"21","2020-05-01","2020-06-09","NASDAQ:AMZN","0.8724708","115.87","125.95","0","101.09","109.89","8.79","USD"
"22","2020-05-01","2020-05-06","NASDAQ:TSLA","3.1895439","47.37","52.37","0","151.09","167.04","15.95","USD"
"23","2020-05-11","2020-07-09","NASDAQ:AMD","1.80733779","55.93","56.31","0","101.08","101.77","0.69","USD"
"24","2020-05-12","2020-08-19","NYSE:MA","0.36659579","275.73","297.48","0","101.08","109.05","7.97","USD"
"25","2020-05-14","2020-06-03","NASDAQ:GOOGL","2.9816034","67.44","71.77","0","201.08","213.99","12.91","USD"
"26","2020-05-15","2020-05-29","NYSE:SQ","2.54097319","79.14","80.71","0","201.09","205.08","3.99","USD"
"27","2020-05-20","2020-07-01","NASDAQ:NVDA","0.34223706","362.58","382.36","0","124.09","130.86","6.77","USD"
"28","2020-05-21","2020-06-08","NYSE:KO","4.3392935","46.11","49.71","0","200.08","215.71","15.62","USD"
"29","2020-05-27","2020-06-03","NASDAQ:ANSS","0.38406882","263.21","290.44","0","101.09","111.55","10.46","USD"
"30","2020-05-28","2020-06-05","NASDAQ:QCOM","2.4789291","81.12","89.12","0","201.09","220.92","19.83","USD"
"31","2020-05-29","2020-07-19","NASDAQ:MSFT","1.15486141","182.80","198.16","0","211.11","228.85","17.74","USD"
"32","2020-06-01","2020-06-18","NASDAQ:UAL","6.8212824","29.48","39.87","0","201.09","271.96","70.87","USD"
"33","2020-06-03","2020-07-01","NASDAQ:UAL","7.12250712","31.59","37.39","0","225.00","266.31","41.31","USD"
"34","2020-06-03","2020-07-15","NASDAQ:UAL","6.44484412","33.53","34.06","0","216.10","219.51","3.42","USD"
"35","2020-06-04","2020-08-27","NASDAQ:UAL","2.78884462","38.06","37.49","0","106.14","104.55","-1.59","USD"
"36","2020-06-04","2020-08-10","NASDAQ:UAL","2.69444444","36.42","36.55","0","98.13","98.48","0.35","USD"
"37","2020-06-04","2020-08-27","NASDAQ:UAL","5.20231213","38.28","36.73","0","199.14","191.08","-8.06","USD"
"38","2020-06-05","2020-10-06","NASDAQ:UAL","2.4672489","46.25","36.78","0","114.11","90.75","-23.36","USD"
"39","2020-06-05","2020-10-08","NASDAQ:UAL","4.8456164","44.37","37.49","0","215.00","181.66","-33.34","USD"
"40","2020-06-08","2020-10-08","NASDAQ:UAL","4.86896252","46.17","37.41","0","224.80","182.15","-42.65","USD"
"41","2020-06-08","2020-07-30","NASDAQ:ANSS","0.35145678","284.53","309.58","0","100.00","108.80","8.80","USD"
"42","2020-06-09","2020-09-15","NASDAQ:UAL","2.22121486","44.63","37.07","0","99.13","82.34","-16.79","USD"
"43","2020-06-10","2020-08-28","NASDAQ:UAL","2.43486729","41.53","37.02","0","101.12","90.14","-10.98","USD"
"44","2020-06-10","2020-08-03","NASDAQ:ANSS","1.03831377","290.02","315.55","0","301.13","327.64","26.51","USD"
"45","2020-06-11","2020-07-01","NASDAQ:TSLA","4.5053613","66.84","74.59","0","301.14","336.05","34.92","USD"
"46","2020-06-15","2020-07-06","NASDAQ:AAPL","1.78512984","84.65","93.40","0","151.11","166.73","15.62","USD"
"47","2020-06-19","2020-06-20","NASDAQ:GOOGL","4.1551534","72.47","77.65","0","301.12","322.65","21.52","USD"
"48","2020-06-19","2020-07-30","NASDAQ:QCOM","3.3463469","89.98","102.67","0","301.10","343.57","42.47","USD"
"49","2020-06-22","2020-07-13","NASDAQ:AAPL","2.26321148","88.86","97.59","0","201.11","220.87","19.76","USD"
"50","2020-07-01","2020-07-21","NYSE:KO","6.61229887","45.37","47.62","0","300.00","314.88","14.88","USD"
"51","2020-07-07","2020-07-10","NASDAQ:TSLA","5.3756118","93.01","102.30","0","499.99","549.93","49.94","USD"
"52","2020-07-07","2020-07-15","NASDAQ:UAL","6.00781015","33.29","34.21","0","200.00","205.53","5.53","USD"
"53","2020-07-07","2020-08-21","NASDAQ:ZM","0.55248618","271.50","290.26","0","150.00","160.36","10.36","USD"
"54","2020-07-10","2020-09-01","NASDAQ:AMZN","0.6291998","158.93","174.61","0","100.00","109.86","9.87","USD"
"55","2020-07-13","2020-08-18","NASDAQ:TSLA","2.63999295","113.64","125.23","0","300.01","330.61","30.60","USD"
"56","2020-07-13","2020-11-13","NASDAQ:AMZN","1.838162","163.21","155.66","0","300.01","286.13","-13.88","USD"
"57","2020-07-14","2020-07-31","NASDAQ:AAPL","2.63296468","94.95","102.92","0","250.00","270.98","20.98","USD"
"58","2020-07-15","2020-08-03","NASDAQ:AAPL","2.0317988","98.43","111.01","0","199.99","225.55","25.56","USD"
"59","2020-07-15","2020-07-30","NASDAQ:TSLA","1.9946808","100.27","116.40","0","200.01","232.18","32.17","USD"
"60","2020-07-20","2020-10-08","NASDAQ:UAL","9.17150718","32.71","33.58","0","300.00","307.98","7.98","USD"
"61","2020-07-20","2020-08-03","NASDAQ:AAPL","3.05654608","98.15","111.01","0","300.00","339.31","39.31","USD"
"62","2020-07-23","2020-11-13","NASDAQ:AMZN","1.9828548","151.30","165.29","0","300.01","327.75","27.74","USD"
"63","2020-07-24","2020-07-24","NASDAQ:AMD","1.05263157","66.50","68.79","0","70.00","72.41","2.41","USD"
"64","2020-07-24","2020-08-21","NASDAQ:ZM","0.28389503","246.57","290.26","0","70.00","82.40","12.40","USD"
"65","2020-07-27","2020-08-13","NASDAQ:TSLA","1.5705051","95.51","107.16","0","150.00","168.30","18.30","USD"
"66","2020-07-30","2020-09-01","NASDAQ:GOOGL","3.9853868","75.28","82.77","0","300.02","329.87","29.85","USD"
"67","2020-07-30","2020-08-27","NASDAQ:MSFT","0.73800738","203.25","229.06","0","150.00","169.05","19.05","USD"
"68","2020-07-31","2020-08-26","NASDAQ:GOOGL","3.3979624","73.57","80.26","0","249.99","272.72","22.73","USD"
"69","2020-08-01","2020-08-13","NASDAQ:TSLA","3.0459945","98.49","108.82","0","300.00","331.47","31.47","USD"
"70","2020-08-05","2020-09-01","NASDAQ:ANSS","0.95910994","312.79","344.31","0","300.00","330.23","30.23","USD"
"71","2020-08-05","2020-09-29","NASDAQ:AMD","1.18990956","84.04","81.34","0","100.00","96.79","-3.21","USD"
"72","2020-08-06","2020-08-31","NASDAQ:AAPL","0.90019128","111.09","128.25","0","100.00","115.45","15.45","USD"
"73","2020-08-10","2020-08-31","NASDAQ:AMD","1.23701138","80.84","89.86","0","100.00","111.16","11.16","USD"
"74","2020-08-10","2020-08-27","NASDAQ:ANSS","0.32998944","303.04","331.63","0","100.00","109.43","9.43","USD"
"75","2020-08-13","2020-08-18","NASDAQ:ZM","0.40695071","245.73","270.85","0","100.00","110.22","10.22","USD"
"76","2020-08-14","2020-08-20","NYSE:SQ","0.7033338","142.18","156.25","0","100.00","109.90","9.90","USD"
"77","2020-08-17","2020-08-18","NASDAQ:TSLA","0.88541535","112.94","125.5266667","0","100.00","111.14","11.14","USD"
"78","2020-08-17","2020-08-31","NASDAQ:TSLA","0.842091","118.75","116.32","0","100.00","97.95","-2.05","USD"
"79","2020-08-17","2020-09-01","NYSE:SQ","0.66613375","150.12","166.07","0","100.00","110.62","10.62","USD"
"80","2020-08-18","2020-08-24","NASDAQ:UAL","2.9620853","33.76","36.19","0","100.00","107.20","7.20","USD"
"81","2020-08-19","2020-09-02","NASDAQ:NVDA","0.10171698","491.56","577.12","0","50.00","58.70","8.70","USD"
"82","2020-08-20","2020-08-28","NASDAQ:TSLA","0.75513105","132.43","151.46","0","100.00","114.37","14.37","USD"
"83","2020-08-21","2020-12-17","NASDAQ:AAPL","1.6575476","120.66","128.57","0","200.00","213.11","13.11","USD"
"84","2020-08-21","2020-08-31","NASDAQ:TSLA","1.44357075","138.55","154.37","0","200.01","222.84","22.84","USD"
"85","2020-08-21","2020-08-31","NASDAQ:TSLA","1.4394081","138.95","155.05","0","200.01","223.18","23.17","USD"
"86","2020-08-24","2020-08-27","NASDAQ:TSLA","1.46742315","136.29","151.53","0","200.00","222.36","22.36","USD"
"87","2020-08-25","2020-09-28","NYSE:BABA","0.17636684","283.50","275.69","0","50.00","48.62","-1.38","USD"
"88","2020-08-26","2020-09-01","NASDAQ:ZM","0.1661792","300.88","453.63","0","50.00","75.38","25.38","USD"
"89","2020-08-26","2020-09-28","NYSE:BABA","0.17246731","289.91","275.65","0","50.00","47.54","-2.46","USD"
"90","2020-08-27","2020-12-03","NASDAQ:TSLA","1.3170429","151.86","195.74","0","200.01","257.80","57.79","USD"
"91","2020-08-27","2020-11-13","NASDAQ:TSLA","3.29757285","151.63","134.98","0","500.01","445.11","-54.90","USD"
"92","2020-08-27","2020-08-31","NASDAQ:TSLA","3.40293465","146.93","161.25","0","499.99","548.72","48.73","USD"
"93","2020-08-27","2020-12-17","NASDAQ:AAPL","1.60481444","124.63","128.57","0","200.01","206.33","6.32","USD"
"94","2020-08-28","2020-09-02","NASDAQ:NVDA","0.09644131","518.45","577.22","0","50.00","55.67","5.67","USD"
"95","2020-08-15","2020-12-03","NASDAQ:TSLA","3.22587582","155.00","195.77","0","500.01","631.53","131.52","USD"
"96","2020-08-15","2020-12-15","NASDAQ:TSLA","1.23482196","161.97","213.55","0","200.00","263.70","63.69","USD"
"97","2020-08-20","2020-08-31","NASDAQ:TSLA","0.7438962","134.43","165.05","0","100.00","122.78","22.78","USD"
"98","2020-08-15","2020-12-15","NASDAQ:TSLA","3.02858988","165.09","213.55","0","499.99","646.76","146.77","USD"
"99","2020-09-01","2020-09-22","NASDAQ:ZM","0.23466466","426.14","468.95","0","100.00","110.05","10.05","USD"
"100","2020-09-01","2020-12-10","NASDAQ:TSLA","3.0358227","164.70","208.05","0","500.00","631.60","131.60","USD"
"101","2020-09-01","2020-09-22","NASDAQ:ZM","0.44881288","445.62","488.18","0","200.00","219.10","19.10","USD"
"102","2020-09-01","2020-09-23","NASDAQ:ZM","0.42154073","474.45","519.98","0","200.00","219.19","19.19","USD"
"103","2020-09-01","2020-09-30","NYSE:NIO","10.07556675","19.85","22.13","0","200.00","222.97","22.97","USD"
"104","2020-09-02","2020-09-02","NYSE:NIO","10","20.74","24.00","0","207.40","240.00","32.60","USD"
"105","2020-09-02","2020-11-18","NASDAQ:TSLA","2.54919498","149.07","164.16","0","380.01","418.48","38.47","USD"
"106","2020-09-04","2020-12-17","NASDAQ:AAPL","2.01871739","123.04","128.57","0","248.38","259.55","11.16","USD"
"107","2020-09-04","2020-10-01","NASDAQ:TSLA","1.82127246","137.27","149.47","0","250.01","272.23","22.22","USD"
"108","2020-09-10","2020-09-15","NASDAQ:TSLA","1.96494537","127.23","146.07","0","250.00","287.02","37.02","USD"
"109","2020-09-17","2020-10-01","NASDAQ:ANSS","1.19565287","310.55","334.09","0","371.31","399.46","28.15","USD"
"110","2020-09-24","2020-10-01","NASDAQ:TSLA","2.69316786","122.22","130.49","0","329.16","351.43","22.27","USD"
"111","2020-09-24","2020-10-13","NASDAQ:ZM","0.74879082","469.33","510.58","0","351.43","382.32","30.89","USD"
"112","2020-09-25","2020-10-09","NASDAQ:AAPL","2.02064706","108.49","116.31","0","219.22","235.02","15.80","USD"
"113","2020-10-01","2020-10-21","NASDAQ:GOOGL","5.3886366","74.12","79.74","0","399.41","429.69","30.28","USD"
"114","2020-10-02","2020-10-14","NASDAQ:TSLA","2.96907141","141.13","154.06","0","419.03","457.42","38.39","USD"
"115","2020-10-06","2020-10-13","NASDAQ:AAPL","2.41595669","112.68","123.87","0","272.23","299.26","27.03","USD"
"116","2020-10-13","2021-02-02","NASDAQ:Z","1","101.17","114.81","0","101.17","114.81","13.64","USD"
"117","2020-10-15","2020-11-18","NASDAQ:TSLA","3","149.40","164.16","0","448.20","492.48","44.28","USD"
"118","2020-10-15","2021-02-02","NASDAQ:ANSS","1","351.53","375.57","0","351.53","375.57","24.04","USD"
"119","2020-10-20","2020-12-09","NASDAQ:ZM","0.8230289","522.08","410.71","0","429.69","338.03","-91.66","USD"
"120","2020-10-22","2020-10-29","NYSE:NIO","19.00692924","27.42","31.80","0","521.17","604.42","83.25","USD"
"121","2020-10-30","2020-11-03","NYSE:NIO","19","30.59","34.44","0","581.21","654.36","73.15","USD"
"122","2020-10-30","2020-11-05","NASDAQ:AAPL","2.37198781","108.80","119.22","0","258.07","282.79","24.72","USD"
"123","2020-11-04","2020-11-05","NYSE:NIO","17.55848346","37.26","41.45","0","654.23","727.80","73.57","USD"
"124","2020-11-06","2020-11-12","NYSE:NIO","20","41.24","49.00","0","824.80","980.00","155.20","USD"
"125","2020-11-12","2020-11-23","NASDAQ:ZM","1","435.44","428.76","0","435.44","428.76","-6.68","USD"
"126","2020-11-13","2020-11-23","NYSE:NIO","12","45.10","55.00","0","541.20","660.00","118.80","USD"
"127","2020-11-17","2020-11-23","NYSE:NIO","15","47.68","55.00","0","715.20","825.00","109.80","USD"
"128","2020-11-18","2020-12-15","NASDAQ:AAPL","4","119.76","126.65","0","479.04","506.60","27.56","USD"
"129","2020-11-23","2020-11-27","NASDAQ:MRNA","8","101.20","124.85","0","809.60","998.80","189.20","USD"
"130","2020-11-23","2020-12-15","NASDAQ:AAPL","4","114.31","126.34","0","457.24","505.36","48.12","USD"
"131","2020-11-24","2021-01-20","NYSE:NIO","11","53.12","60.00","0","584.32","660.00","75.68","USD"
"132","2020-11-30","2020-12-17","NASDAQ:AAPL","2","117.42","127.88","0","234.84","255.76","20.92","USD"
"133","2020-11-24","2021-01-12","NYSE:NIO","9","53.12","64.02","0","478.08","576.18","98.10","USD"
"134","2020-11-25","2021-01-29","NASDAQ:MRNA","5","146.02","152.58","0","730.10","762.90","32.80","USD"
"135","2020-12-03","2020-12-07","NASDAQ:AAPL","-2.06461594","123.05","120.90","0","-254.05","-249.61","4.44","USD"
"136","2020-12-07","2021-04-15","NASDAQ:AMD","4","95.30","95.30","0","381.20","381.20","0.00","USD"
"137","2020-11-25","2021-01-26","NASDAQ:MRNA","5","146.02","174.00","0","730.10","870.00","139.90","USD"
"138","2020-12-07","2021-02-04","NASDAQ:MRNA","3","155.40","172.00","0","466.20","516.00","49.80","USD"
"139","2020-12-07","2020-12-21","NYSE:NIO","8","44.03","48.98","0","352.24","391.84","39.60","USD"
"140","2020-12-08","2021-02-08","NASDAQ:MRNA","3","167.84","185.00","0","503.52","555.00","51.48","USD"
"141","2020-12-08","2020-12-15","NASDAQ:ANSS","-1","338.47","345.66","0","-338.47","-345.66","-7.19","USD"
"142","2020-12-08","2020-12-10","NASDAQ:AMD","-4","92.49","89.55","0","-369.96","-358.20","11.76","USD"
"143","2020-12-10","2021-01-29","NASDAQ:MRNA","1","155.44","173.97","0","155.44","173.97","18.53","USD"
"144","2020-12-10","2020-12-17","NASDAQ:TSLA","3","191.28","216.66","0","573.84","649.98","76.14","USD"
"145","2020-12-11","2020-12-14","NASDAQ:TSLA","-1.17027156","209.11","205.81","0","-244.72","-240.85","3.86","USD"
"146","2020-12-14","2020-12-30","NASDAQ:TSLA","3","205.81","231.66","0","617.43","694.98","77.55","USD"
"147","2020-12-14","2020-12-21","NYSE:NIO","1","39.90","48.96","0","39.90","48.96","9.06","USD"
"148","2020-12-15","2021-01-26","NASDAQ:MRNA","4","145.00","152.59","0","580.00","610.36","30.36","USD"
"149","2020-12-17","2020-12-31","NASDAQ:AAPL","3","128.98","128.98","0","386.94","386.94","0.00","USD"
"150","2020-12-17","2021-01-07","NASDAQ:TSLA","3","206.67","266.65","0","620.01","799.95","179.94","USD"
"151","2020-12-17","2020-12-31","NASDAQ:AAPL","5","128.63","128.63","0","643.15","643.15","0.00","USD"
"152","2020-12-21","2020-12-31","NASDAQ:AMD","3","92.00","92.00","0","276.00","276.00","0.00","USD"
"153","2020-12-22","2021-01-14","NASDAQ:TSLA","3","215.77","286.66","0","647.31","859.98","212.67","USD"
"154","2020-12-23","2020-12-31","NASDAQ:AAPL","4","132.17","132.17","0","528.68","528.68","0.00","USD"
"155","2020-12-23","2020-12-30","NASDAQ:TSLA","3","210.00","231.66","0","630.00","694.98","64.98","USD"
"156","2020-12-23","2020-12-31","NASDAQ:AMZN","2.691074","159.79","159.79","0","430.01","430.01","0.00","USD"
"157","2020-12-23","2020-12-31","NASDAQ:AMZN","0.4380818","159.79","159.79","0","70.00","70.00","0.00","USD"
"158","2020-12-31","2021-01-06","NYSE:NIO","10","48.50","55.00","0","485.00","550.00","65.00","USD"
"159","2020-12-31","2021-01-07","NASDAQ:TSLA","2.581293","238.83","266.67","0","616.49","688.35","71.86","USD"
"160","2020-12-31","2021-01-07","NASDAQ:TSLA","0.418707","238.83","266.67","0","100.00","111.66","11.66","USD"
"161","2021-01-04","2021-07-09","NASDAQ:AAPL","1","130.00","145.03","0","130.00","145.03","15.03","USD"
"162","2021-01-06","2021-02-02","NASDAQ:TSLA","2.13256299","256.46","290.67","0","546.92","619.87","72.95","USD"
"163","2021-01-07","2021-01-25","NASDAQ:TSLA","3","268.52","299.99","0","805.56","899.97","94.41","USD"
"164","2021-01-08","2021-10-25","NASDAQ:TSLA","0.86743701","282.14","318.67","0","244.74","276.43","31.69","USD"
"165","2021-01-08","2021-10-25","NASDAQ:TSLA","1.68863022","289.77","325.30","0","489.31","549.31","60.00","USD"
"166","2021-01-08","2021-10-25","NASDAQ:TSLA","1.31136978","289.77","325.29","0","380.00","426.58","46.58","USD"
"167","2021-01-13","2021-11-04","NASDAQ:PLUG","8","69.31","64.35","0","554.48","514.80","-39.68","USD"
"168","2021-01-11","2021-01-14","NYSE:NIO","2","64.89","43.54","0","129.78","87.08","-42.70","USD"
"169","2021-01-01","2021-04-15","NASDAQ:AMD","3","92.00","83.06","0","276.00","249.18","-26.82","USD"
"170","2021-01-01","2021-02-03","NASDAQ:AMZN","2.691074","159.79","169.96","0","430.01","457.37","27.37","USD"
"171","2021-01-01","2021-02-03","NASDAQ:AMZN","0.4380818","159.79","169.96","0","70.00","74.46","4.46","USD"
"172","2021-01-01","2021-07-14","NASDAQ:AAPL","4","132.17","149.16","0","528.68","596.64","67.96","USD"
"173","2021-01-01","2021-07-09","NASDAQ:AAPL","3","128.98","145.04","0","386.94","435.12","48.18","USD"
"174","2021-01-01","2021-01-25","NASDAQ:AAPL","5","128.63","144.29","0","643.15","721.45","78.30","USD"
"175","2021-01-01","2021-04-15","NASDAQ:AMD","4","95.30","83.06","0","381.20","332.24","-48.96","USD"
"176","2021-01-14","2021-01-21","NASDAQ:MRNA","4","129.08","134.71","0","516.32","538.84","22.52","USD"
"177","2021-01-15","2021-02-09","NYSE:NIO","15","57.38","62.66","0","860.70","939.90","79.20","USD"
"178","2021-01-22","2021-10-21","NASDAQ:TSLA","2.52425082","277.31","298.49","0","700.00","753.46","53.46","USD"
"179","2021-01-25","2021-10-25","NASDAQ:TSLA","3","290.00","330.94","0","870.00","992.82","122.82","USD"
"180","2021-01-25","2021-09-07","NASDAQ:AAPL","5","140.00","155.05","0","700.00","775.25","75.25","USD"
"181","2021-01-25","2021-11-04","NYSE:NIO","1","59.62","43.54","0","59.62","43.54","-16.08","USD"
"182","2021-01-27","2021-11-18","NASDAQ:AAPL","2","143.31","158.00","0","286.62","316.00","29.38","USD"
"183","2021-01-27","2021-02-04","NASDAQ:MRNA","2","158.09","172.00","0","316.18","344.00","27.82","USD"
"184","2021-01-27","2021-02-08","NASDAQ:MRNA","3","165.86","184.99","0","497.58","554.97","57.39","USD"
"185","2021-01-29","2021-10-25","NASDAQ:TSLA","3","280.33","317.16","0","840.99","951.48","110.49","USD"
"186","2021-01-29","2021-05-03","NASDAQ:MRNA","6","177.35","186.87","0","1064.10","1121.22","57.12","USD"
"187","2021-02-01","2021-02-04","NASDAQ:MRNA","1","156.50","171.99","0","156.50","171.99","15.49","USD"
"188","2021-02-02","2021-08-16","NASDAQ:AAPL","4","135.67","150.00","0","542.68","600.00","57.32","USD"
"189","2021-02-05","2021-02-11","NASDAQ:PYPL","3","267.18","300.00","0","801.54","900.00","98.46","USD"
"190","2021-02-08","2021-07-23","NASDAQ:PYPL","3","280.95","308.81","0","842.85","926.43","83.58","USD"
"191","2021-02-08","2021-02-12","NASDAQ:AMZN","2.5","166.19","162.50","0","415.48","406.25","-9.23","USD"
"192","2021-02-08","2021-02-12","NASDAQ:AMZN","2.5","166.19","162.51","0","415.48","406.27","-9.20","USD"
"193","2021-02-09","2021-05-03","NASDAQ:MRNA","3","178.82","186.87","0","536.46","560.61","24.15","USD"
"194","2021-02-10","2021-10-25","NASDAQ:TSLA","2.08745436","278.58","318.66","0","581.52","665.19","83.67","USD"
"195","2021-02-10","2021-11-22","NASDAQ:PYPL","3","285.00","191.85","0","855.00","575.55","-279.45","USD"
"196","2021-02-12","2022-02-02","NASDAQ:PYPL","1.8","292.47","136.32","0","526.45","245.38","-281.07","USD"
"197","2021-02-12","2022-02-02","NASDAQ:PYPL","1","292.47","136.33","0","292.47","136.33","-156.14","USD"
"198","2021-03-12","2021-06-28","NYSE:NIO","4","44.30","49.00","0","177.20","196.00","18.80","USD"
"199","2021-04-19","2021-09-17","NASDAQ:TSLA","2.35822089","233.23","252.91","0","550.01","596.42","46.41","USD"
"200","2021-05-04","2021-07-06","NASDAQ:GOOGL","1.9646364","114.53","126.05","0","225.01","247.64","22.63","USD"
"201","2021-05-04","2021-05-27","NASDAQ:MRNA","4","175.47","177.05","0","701.88","708.20","6.32","USD"
"202","2021-05-04","2021-10-19","NASDAQ:ANSS","2","350.09","364.67","0","700.18","729.34","29.16","USD"
"203","2021-05-04","2021-07-06","NASDAQ:AMZN","0.5170316","164.40","181.05","0","85.00","93.61","8.61","USD"
"204","2021-05-24","2021-05-27","NYSE:SPCE","2","24.93","28.02","0","49.86","56.04","6.18","USD"
"205","2021-05-27","2021-06-07","NYSE:SPCE","4","28.53","33.85","0","114.12","135.40","21.28","USD"
"206","2021-05-27","2021-06-07","NYSE:SPCE","23","30.62","33.85","0","704.26","778.55","74.29","USD"
"207","2021-06-07","2021-06-28","NYSE:NIO","10","43.72","49.00","0","437.20","490.00","52.80","USD"
"208","2021-06-08","2021-06-25","NYSE:SPCE","12","37.36","47.73","0","448.32","572.76","124.44","USD"
"209","2021-07-01","2021-11-04","NYSE:NIO","5","52.00","43.54","0","260.00","217.70","-42.30","USD"
"210","2021-07-01","2021-11-04","NYSE:NIO","5","52.00","43.54","0","260.00","217.70","-42.30","USD"
"211","2021-07-06","2021-08-09","NASDAQ:GOOGL","2.1915668","125.48","135.84","0","275.00","297.70","22.70","USD"
"212","2021-07-06","2021-08-09","NASDAQ:GOOGL","2.1915668","125.48","135.84","0","275.00","297.70","22.70","USD"
"213","2021-07-07","2021-07-08","NYSE:SPCE","11","45.00","50.00","0","495.00","550.00","55.00","USD"
"214","2021-07-07","2021-07-08","NYSE:SPCE","1","45.00","50.00","0","45.00","50.00","5.00","USD"
"215","2021-07-12","2021-12-03","NYSE:SPCE","12","45.00","14.32","0","540.00","171.84","-368.16","USD"
"216","2021-07-15","2021-07-16","NASDAQ:MRNA","1","255.80","285.00","0","255.80","285.00","29.20","USD"
"217","2021-07-16","2021-11-09","NYSE:SPCE","18","32.56","20.99","0","586.08","377.82","-208.26","USD"
"218","2021-07-16","2021-11-09","NYSE:SPCE","6","32.56","20.99","0","195.36","125.94","-69.42","USD"
"219","2021-07-16","2021-11-29","NASDAQ:AAPL","1","147.32","164.98","0","147.32","164.98","17.66","USD"
"220","2021-07-16","2021-11-29","NASDAQ:AAPL","2","147.30","165.00","0","294.60","330.00","35.40","USD"
"221","2021-07-23","2021-08-03","NASDAQ:MRNA","2","335.27","370.00","0","670.54","740.00","69.46","USD"
"222","2021-08-03","2021-11-19","NASDAQ:AMZN","4.4443522","168.75","186.71","0","749.98","829.80","79.82","USD"
"223","2021-08-09","2021-11-26","NASDAQ:MRNA","0.5","450.93","327.96","0","225.47","163.98","-61.49","USD"
"224","2021-08-09","2021-11-26","NASDAQ:MRNA","0.5","450.93","327.94","0","225.47","163.97","-61.50","USD"
"225","2021-08-19","2021-11-19","NASDAQ:AAPL","5","144.93","160.00","0","724.65","800.00","75.35","USD"
"226","2021-09-10","2021-12-01","NASDAQ:AAPL","5","149.97","170.00","0","749.85","850.00","100.15","USD"
"227","2021-09-17","2021-11-29","NASDAQ:AAPL","4","146.83","165.00","0","587.32","660.00","72.68","USD"
"228","2021-10-15","2022-01-01","NASDAQ:GOOGL","5.137277","142.96","142.96","0","734.43","734.43","0.00","USD"
"229","2021-10-26","2021-11-01","NASDAQ:TSLA","3","348.16","383.33","0","1044.48","1149.99","105.51","USD"
"230","2021-10-26","2021-12-06","NASDAQ:AAPL","4","150.48","167.09","0","601.92","668.36","66.44","USD"
"231","2021-10-27","2021-12-01","NASDAQ:AAPL","7","149.25","170.00","0","1044.75","1190.00","145.25","USD"
"232","2021-10-27","2021-12-01","NASDAQ:AAPL","3","149.25","170.00","0","447.75","510.00","62.25","USD"
"233","2021-11-04","2022-02-17","NYSE:KO","8","56.29","62.00","0","450.32","496.00","45.68","USD"
"234","2021-11-04","2022-01-01","NYSE:BAC","8","47.49","47.49","0","379.92","379.92","0.00","USD"
"235","2021-11-04","2022-02-17","NYSE:KO","2","56.29","62.00","0","112.58","124.00","11.42","USD"
"236","2021-11-04","2022-01-01","NYSE:BAC","2","47.49","47.49","0","94.98","94.98","0.00","USD"
"237","2021-11-09","2022-01-01","NASDAQ:TSLA","3","355.26","355.26","0","1065.78","1065.78","0.00","USD"
"238","2021-11-10","2022-01-01","NASDAQ:TSLA","0.525","357.83","357.83","0","187.86","187.86","0.00","USD"
"239","2021-11-10","2022-01-01","NASDAQ:TSLA","0.975","357.83","357.83","0","348.88","348.88","0.00","USD"
"240","2021-11-22","2022-01-01","NASDAQ:AAPL","8.5","163.08","163.08","0","1386.18","1386.18","0.00","USD"
"241","2021-11-22","2022-01-01","NASDAQ:TSLA","1.5","393.92","393.92","0","590.88","590.88","0.00","USD"
"242","2021-11-22","2022-01-01","NASDAQ:AAPL","1.5","163.08","163.08","0","244.62","244.62","0.00","USD"
"243","2021-11-22","2021-11-26","NASDAQ:MRNA","1","287.97","319.99","0","287.97","319.99","32.02","USD"
"244","2021-11-26","2021-12-10","NASDAQ:AAPL","1","158.17","178.17","0","158.17","178.17","20.00","USD"
"245","2021-11-26","2022-01-01","NASDAQ:AMZN","1.8995262","176.35","176.35","0","334.98","334.98","0.00","USD"
"246","2021-11-26","2021-12-10","NASDAQ:AAPL","1","158.17","178.17","0","158.17","178.17","20.00","USD"
"247","2021-12-02","2021-12-13","NASDAQ:AAPL","7","158.72","181.00","0","1111.04","1267.00","155.96","USD"
"248","2021-12-02","2021-12-10","NASDAQ:AAPL","3","160.89","178.17","0","482.67","534.51","51.84","USD"
"249","2021-12-02","2022-01-01","NASDAQ:AMZN","1.7335028","173.06","173.06","0","300.00","300.00","0.00","USD"
"250","2021-12-02","2022-01-01","NASDAQ:AAPL","7","163.26","163.26","0","1142.82","1142.82","0.00","USD"
"251","2021-12-02","2022-01-01","NASDAQ:AAPL","2","163.26","163.26","0","326.52","326.52","0.00","USD"
"252","2021-12-06","2022-01-03","NASDAQ:TSLA","3","330.97","384.52","0","992.91","1153.56","160.65","USD"
"253","2021-12-13","2022-01-01","NASDAQ:AAPL","2","178.20","178.20","0","356.40","356.40","0.00","USD"
"254","2021-12-13","2022-01-01","NASDAQ:AAPL","2","178.20","178.20","0","356.40","356.40","0.00","USD"
"255","2021-12-14","2022-01-01","NASDAQ:AAPL","3","174.17","174.17","0","522.51","522.51","0.00","USD"
"256","2021-12-14","2021-12-27","NASDAQ:TSLA","1.2","314.56","367.56","0","377.47","441.07","63.60","USD"
"257","2021-12-14","2022-01-01","NASDAQ:AAPL","1","174.17","174.17","0","174.17","174.17","0.00","USD"
"258","2021-12-14","2021-12-27","NASDAQ:TSLA","0.3","314.56","367.57","0","94.37","110.27","15.90","USD"
"259","2021-12-28","2022-01-01","NASDAQ:AMZN","1.1645374","171.74","171.74","0","200.00","200.00","0.00","USD"
"260","2021-11-10","2022-01-03","NASDAQ:TSLA","1.5","357.83","398.28","0","536.75","597.42","60.67","USD"
"261","2022-01-03","2023-01-01","NASDAQ:ANSS","2","393.43","393.43","0","786.86","786.86","0.00","USD"
"262","2022-01-06","2023-01-01","NASDAQ:TSLA","2.7","350","350","0","945.00","945.00","0.00","USD"
"263","2022-01-06","2023-01-01","NASDAQ:TSLA","0.3","350","350","0","105.00","105.00","0.00","USD"
"264","2022-01-11","2023-01-01","NASDAQ:AAPL","6","171","171","0","1026.00","1026.00","0.00","USD"
"265","2022-02-02","2023-01-01","NASDAQ:GOOGL","1.8369098","150.33","150.33","0","276.14","276.14","0.00","USD"
"266","2022-02-02","2023-01-01","NASDAQ:GOOGL","0.9046522","150.33","150.33","0","136.00","136.00","0.00","USD"
"267","2022-02-18","2022-03-22","NASDAQ:TSLA","1.2","287.95","314.05","0","345.54","376.86","31.32","USD"
"268","2022-02-18","2022-03-22","NASDAQ:TSLA","0.3","287.95","314.06","0","86.38","94.22","7.83","USD"
"269","2022-02-18","2022-04-20","NYSE:O","2","67.03","75","0","134.06","150.00","15.94","USD"
"270","2022-02-28","2023-01-01","NYSE:KO","2","61.93","61.93","0","123.86","123.86","0.00","USD"
"271","2022-02-02","2023-01-01","NASDAQ:MSFT","0.62199751","297.67","297.67","0","185.15","185.15","0.00","USD"
"272","2022-01-01","2023-01-01","NASDAQ:GOOGL","5.137277","142.96","142.96","0","734.43","734.43","0.00","USD"
"273","2022-01-01","2023-01-01","NYSE:BAC","8","47.49","47.49","0","379.92","379.92","0.00","USD"
"274","2022-01-01","2023-01-01","NYSE:BAC","2","47.49","47.49","0","94.98","94.98","0.00","USD"
"275","2022-01-01","2023-01-01","NASDAQ:TSLA","3","355.26","355.26","0","1065.78","1065.78","0.00","USD"
"276","2022-01-01","2023-01-01","NASDAQ:TSLA","0.525","357.83","357.83","0","187.86","187.86","0.00","USD"
"277","2022-01-01","2023-01-01","NASDAQ:TSLA","0.975","357.83","357.83","0","348.88","348.88","0.00","USD"
"278","2022-01-01","2023-01-01","NASDAQ:AAPL","8.5","163.08","163.08","0","1386.18","1386.18","0.00","USD"
"279","2022-01-01","2023-01-01","NASDAQ:TSLA","1.5","393.92","393.92","0","590.88","590.88","0.00","USD"
"280","2022-01-01","2023-01-01","NASDAQ:AAPL","1.5","163.08","163.08","0","244.62","244.62","0.00","USD"
"281","2022-01-01","2023-01-01","NASDAQ:AMZN","1.8995262","176.35","176.35","0","334.98","334.98","0.00","USD"
"282","2022-01-01","2023-01-01","NASDAQ:AMZN","1.7335028","173.06","173.06","0","300.00","300.00","0.00","USD"
"283","2022-01-01","2023-01-01","NASDAQ:AAPL","7","163.26","163.26","0","1142.82","1142.82","0.00","USD"
"284","2022-01-01","2023-01-01","NASDAQ:AAPL","2","163.26","163.26","0","326.52","326.52","0.00","USD"
"285","2022-01-01","2023-01-01","NASDAQ:AAPL","2","178.2","178.2","0","356.40","356.40","0.00","USD"
"286","2022-01-01","2023-01-01","NASDAQ:AAPL","2","178.2","178.2","0","356.40","356.40","0.00","USD"
"287","2022-01-01","2023-01-01","NASDAQ:AAPL","3","174.17","174.17","0","522.51","522.51","0.00","USD"
"288","2022-01-01","2023-01-01","NASDAQ:AAPL","1","174.17","174.17","0","174.17","174.17","0.00","USD"
"289","2022-01-01","2023-01-01","NASDAQ:AMZN","1.1645374","171.74","171.74","0","200.00","200.00","0.00","USD"
"290","2022-04-13","2023-01-01","NASDAQ:AAPL","1","170.66","170.66","0","170.66","170.66","0.00","USD"
"291","2022-04-14","2022-10-05","NYSE:TWTR","4","48.42","50.93","0","193.68","203.72","10.04","USD"
"292","2022-04-19","2022-10-05","NYSE:TWTR","1","47.24","50.93","0","47.24","50.93","3.69","USD"
"293","2022-04-22","2023-01-01","NYSE:O","2","74","74","0","148.00","148.00","0.00","USD"
"294","2022-05-20","2022-07-21","NASDAQ:AAPL","1","139.02","155.02","0","139.02","155.02","16.00","USD"
"295","2022-06-07","2023-01-01","NASDAQ:AMZN","0.2024336","122.26","122.26","0","24.75","24.75","0.00","USD"
"296","2022-07-27","2022-07-27","NASDAQ:AAPL","1","162","162","0","162.00","162.00","0.00","USD"
"297","2022-09-14","2023-01-01","NASDAQ:AAPL","2","155.78","155.78","0","311.56","311.56","0.00","USD"
"298","2022-12-20","2023-01-01","NASDAQ:AAPL","2","130","130","0","260.00","260.00","0.00","USD"
"299","2023-01-01","2023-12-27","NASDAQ:ANSS","2","393.43","334.8","0","786.86","669.60","-117.26","USD"
"300","2023-01-01","2024-01-01","NASDAQ:TSLA","2.7","350","350","0","945.00","945.00","0.00","USD"
"301","2023-01-01","2024-01-01","NASDAQ:TSLA","0.3","350","350","0","105.00","105.00","0.00","USD"
"302","2023-01-01","2023-11-16","NASDAQ:AAPL","6","171","190","0","1026.00","1140.00","114.00","USD"
"303","2023-01-01","2024-01-01","NASDAQ:GOOGL","1.8369098","150.33","150.33","0","276.14","276.14","0.00","USD"
"304","2023-01-01","2024-01-01","NASDAQ:GOOGL","0.9046522","150.33","150.33","0","136.00","136.00","0.00","USD"
"305","2023-01-01","2024-01-01","NYSE:KO","2","61.93","61.93","0","123.86","123.86","0.00","USD"
"306","2023-01-01","2023-05-25","NASDAQ:MSFT","0.62199751","297.67","321.63","0","185.15","200.05","14.90","USD"
"307","2023-01-01","2024-01-01","NASDAQ:GOOGL","5.137277","142.96","142.96","0","734.43","734.43","0.00","USD"
"308","2023-01-01","2024-01-01","NYSE:BAC","8","47.49","47.49","0","379.92","379.92","0.00","USD"
"309","2023-01-01","2024-01-01","NYSE:BAC","2","47.49","47.49","0","94.98","94.98","0.00","USD"
"310","2023-01-01","2024-01-01","NASDAQ:TSLA","3","355.26","355.26","0","1065.78","1065.78","0.00","USD"
"311","2023-01-01","2024-01-01","NASDAQ:TSLA","0.525","357.83","357.83","0","187.86","187.86","0.00","USD"
"312","2023-01-01","2024-01-01","NASDAQ:TSLA","0.975","357.83","357.83","0","348.88","348.88","0.00","USD"
"313","2023-01-01","2023-06-15","NASDAQ:AAPL","8.5","163.08","185.02","0","1386.18","1572.67","186.49","USD"
"314","2023-01-01","2024-01-01","NASDAQ:TSLA","1.5","393.92","393.92","0","590.88","590.88","0.00","USD"
"315","2023-01-01","2023-06-15","NASDAQ:AAPL","1.5","163.08","185","0","244.62","277.50","32.88","USD"
"316","2023-01-01","2024-01-01","NASDAQ:AMZN","1.8995262","176.35","176.35","0","334.98","334.98","0.00","USD"
"317","2023-01-01","2024-01-01","NASDAQ:AMZN","1.7335028","173.06","173.06","0","300.00","300.00","0.00","USD"
"318","2023-01-01","2023-06-15","NASDAQ:AAPL","7","163.26","185","0","1142.82","1295.00","152.18","USD"
"319","2023-01-01","2023-06-15","NASDAQ:AAPL","2","163.26","185","0","326.52","370.00","43.48","USD"
"320","2023-01-01","2023-12-13","NASDAQ:AAPL","2","178.2","196","0","356.40","392.00","35.60","USD"
"321","2023-01-01","2023-12-13","NASDAQ:AAPL","2","178.2","195.99","0","356.40","391.98","35.58","USD"
"322","2023-01-01","2023-12-13","NASDAQ:AAPL","3","174.17","196","0","522.51","588.00","65.49","USD"
"323","2023-01-01","2024-01-01","NASDAQ:AAPL","1","174.17","174.17","0","174.17","174.17","0.00","USD"
"324","2023-01-01","2024-01-01","NASDAQ:AMZN","1.1645374","171.74","171.74","0","200.00","200.00","0.00","USD"
"325","2023-01-01","2023-12-14","NASDAQ:AAPL","1","170.66","196","0","170.66","196.00","25.34","USD"
"326","2023-01-01","2024-01-01","NYSE:O","2","74","74","0","148.00","148.00","0.00","USD"
"327","2023-01-01","2024-01-01","NASDAQ:AMZN","0.2024336","122.26","122.26","0","24.75","24.75","0.00","USD"
"328","2023-01-01","2023-05-05","NASDAQ:AAPL","2","155.78","171.99","0","311.56","343.98","32.42","USD"
"329","2023-01-01","2023-01-23","NASDAQ:AAPL","2","130","142.99","0","260.00","285.98","25.98","USD"
"330","2023-01-23","2023-01-26","NASDAQ:TSLA","1","141.48","159.98","0","141.48","159.98","18.50","USD"
"331","2023-01-23","2023-01-26","NASDAQ:TSLA","1","141.48","159.98","0","141.48","159.98","18.50","USD"
"332","2023-01-30","2023-03-22","NASDAQ:AAPL","1","143.94","159.99","0","143.94","159.99","16.05","USD"
"333","2023-01-30","2023-03-22","NASDAQ:AAPL","1","143.94","159.99","0","143.94","159.99","16.05","USD"
"334","2023-03-01","2023-06-14","NYSE:BRK.B","1","303.16","339.98","0","303.16","339.98","36.82","USD"
"335","2023-05-08","2023-05-23","NASDAQ:TSLA","1","171.76","189.98","0","171.76","189.98","18.22","USD"
"336","2023-05-23","2024-01-01","NASDAQ:AAPL","1","172.79","172.79","0","172.79","172.79","0.00","USD"
"337","2023-05-26","2023-06-02","NASDAQ:TSLA","1","190.12","209.98","0","190.12","209.98","19.86","USD"
"338","2023-06-06","2024-01-01","NASDAQ:AAPL","3","178.63","178.63","0","535.89","535.89","0.00","USD"
"339","2023-06-06","2024-01-01","NASDAQ:AAPL","1","178.63","178.63","0","178.63","178.63","0.00","USD"
"340","2023-06-14","2024-01-01","NASDAQ:TSLA","1","258","258","0","258.00","258.00","0.00","USD"
"341","2023-06-15","2024-01-01","NYSE:BRK.B","3","338.24","338.24","0","1014.72","1014.72","0.00","USD"
"342","2023-06-15","2024-01-01","NYSE:BRK.B","1","338.24","338.24","0","338.24","338.24","0.00","USD"
"343","2023-06-20","2024-01-01","NASDAQ:TSLA","2","271.03","271.03","0","542.06","542.06","0.00","USD"
"344","2023-06-30","2024-01-01","NASDAQ:AAPL","4","192.45","192.45","0","769.80","769.80","0.00","USD"
"345","2023-07-19","2024-01-01","NASDAQ:TSLA","2","296.58","296.58","0","593.16","593.16","0.00","USD"
"346","2023-07-19","2024-01-01","NASDAQ:TSLA","1","296.58","296.58","0","296.58","296.58","0.00","USD"
"347","2023-09-13","2024-01-01","NASDAQ:AAPL","3","175.02","175.02","0","525.06","525.06","0.00","USD"
"348","2023-12-14","2024-01-01","NASDAQ:AAPL","1","196","196","0","196.00","196.00","0.00","USD"
"349","2023-12-14","2024-01-01","AMS:IWDA","6","81.89","81.89","0","491.34","491.34","0.00","EUR"
"350","2023-12-18","2024-01-01","NASDAQ:AAPL","2","195","195","0","390.00","390.00","0.00","USD"
"351","2023-12-22","2024-01-01","NASDAQ:AAPL","3","195.24","195.24","0","585.72","585.72","0.00","USD"
"352","2024-01-01","2024-01-25","NASDAQ:TSLA","2.7","350","187.75","0","945.00","506.93","-438.08","USD"
"353","2024-01-01","2024-01-25","NASDAQ:TSLA","0.3","350","187.74","0","105.00","56.32","-48.68","USD"
"354","2024-01-01","2024-04-26","NASDAQ:GOOGL","1.8369098","150.33","174.33","0","276.14","320.23","44.09","USD"
"355","2024-01-01","2024-04-26","NASDAQ:GOOGL","0.9046522","150.33","174.31","0","136.00","157.69","21.69","USD"
"356","2024-01-01","2024-06-05","NYSE:KO","2","61.93","63.92","0","123.86","127.84","3.98","USD"
"357","2024-01-01","2024-04-12","NASDAQ:GOOGL","5","142.96","299.66","0","714.80","1498.30","783.50","USD"
"358","2024-01-01","2024-07-11","NYSE:BAC","8","47.49","42","0","379.92","336.00","-43.92","USD"
"359","2024-01-01","2024-04-26","NYSE:BAC","2","47.49","38.13","0","94.98","76.26","-18.72","USD"
"360","2024-01-01","2024-03-01","NASDAQ:TSLA","2","355.26","201.22","0","710.52","402.44","-308.08","USD"
"361","2024-01-01","2024-02-09","NASDAQ:TSLA","1","355.26","192.78","0","355.26","192.78","-162.48","USD"
"362","2024-01-01","2024-02-09","NASDAQ:TSLA","0.525","357.83","192.78","0","187.86","101.21","-86.65","USD"
"363","2024-01-01","2024-02-09","NASDAQ:TSLA","0.975","357.83","192.77","0","348.88","187.95","-160.93","USD"
"364","2024-01-01","2024-02-09","NASDAQ:TSLA","1.5","393.92","192.78","0","590.88","289.17","-301.71","USD"
"365","2024-01-01","2024-02-02","NASDAQ:AMZN","1.8995262","176.35","171.96","0","334.98","326.64","-8.34","USD"
"366","2024-01-01","2024-02-02","NASDAQ:AMZN","1.7335028","173.06","171.96","0","300.00","298.09","-1.91","USD"
"367","2024-01-01","2024-04-26","NASDAQ:AAPL","1","174.17","170","0","174.17","170.00","-4.17","USD"
"368","2024-01-01","2024-02-02","NASDAQ:AMZN","1.1645374","171.74","171.95","0","200.00","200.24","0.24","USD"
"369","2024-01-01","2024-04-26","NYSE:O","2","74","53.92","0","148.00","107.84","-40.16","USD"
"370","2024-01-01","2024-02-02","NASDAQ:AMZN","0.2024336","122.26","171.96","0","24.75","34.81","10.06","USD"
"371","2024-01-01","2024-06-11","NASDAQ:AAPL","1","172.79","199.96","0","172.79","199.96","27.17","USD"
"372","2024-01-01","2024-07-02","NASDAQ:AAPL","3","178.63","220","0","535.89","660.00","124.11","USD"
"373","2024-01-01","2024-04-26","NASDAQ:AAPL","1","178.63","170","0","178.63","170.00","-8.63","USD"
"374","2024-01-01","2024-01-31","NASDAQ:TSLA","1","258","189.98","0","258.00","189.98","-68.02","USD"
"375","2024-01-01","2024-01-25","NYSE:BRK.B","3","338.24","380","0","1014.72","1140.00","125.28","USD"
"376","2024-01-01","2024-01-25","NYSE:BRK.B","1","338.24","379.98","0","338.24","379.98","41.74","USD"
"377","2024-01-01","2024-01-31","NASDAQ:TSLA","2","271.03","190","0","542.06","380.00","-162.06","USD"
"378","2024-01-01","2024-08-28","NASDAQ:AAPL","4","192.45","229.99","0","769.80","919.96","150.16","USD"
"379","2024-01-01","2024-02-07","NASDAQ:TSLA","2","296.58","181.48","0","593.16","362.96","-230.20","USD"
"380","2024-01-01","2024-02-07","NASDAQ:TSLA","1","296.58","181.47","0","296.58","181.47","-115.11","USD"
"381","2024-01-01","2024-07-02","NASDAQ:AAPL","3","175.02","220","0","525.06","660.00","134.94","USD"
"382","2024-01-01","2024-08-28","NASDAQ:AAPL","1","196","230","0","196.00","230.00","34.00","USD"
"383","2024-01-01","2025-01-01","AMS:IWDA","6","81.89","81.89","0","491.34","491.34","0.00","EUR"
"384","2024-01-01","2024-11-26","NASDAQ:AAPL","2","195","235","0","390.00","470.00","80.00","USD"
"385","2024-01-01","2024-11-26","NASDAQ:AAPL","3","195.24","235","0","585.72","705.00","119.28","USD"
"386","2024-01-01","2024-11-26","NASDAQ:AAPL","3","192.32","235","0","576.96","705.00","128.04","USD"
"387","2024-01-08","2024-07-02","NASDAQ:AAPL","3","180","219.977","0","540.00","659.93","119.93","USD"
"388","2024-01-25","2024-02-09","NASDAQ:NVDA","30","62.17833333","72","0","1865.35","2160.00","294.65","USD"
"389","2024-01-31","2024-06-17","NASDAQ:MSFT","1","402.58","449.98","0","402.58","449.98","47.40","USD"
"390","2024-02-02","2024-05-20","NASDAQ:NVDA","10","65.978","95","0","659.78","950.00","290.22","USD"
"391","2024-02-02","2024-11-26","NASDAQ:AAPL","1","186.01","234.93","0","186.01","234.93","48.92","USD"
"392","2024-02-05","2024-05-22","NASDAQ:NVDA","10","68.887","99.985","0","688.87","999.85","310.98","USD"
"393","2024-02-21","2024-05-22","NASDAQ:NVDA","30","67.9","100","0","2037.00","3000.00","963.00","USD"
"394","2024-03-05","2024-07-30","NYSE:BRK.B","1","400","439.98","0","400.00","439.98","39.98","USD"
"395","2024-03-11","2024-05-22","NASDAQ:NVDA","10","88.933","100","0","889.33","1000.00","110.67","USD"
"396","2024-04-01","2024-06-11","NASDAQ:AAPL","2","170","200","0","340.00","400.00","60.00","USD"
"397","2024-01-01","2024-04-26","NASDAQ:GOOGL","0.137277","142.96","174.33","0","19.63","23.93","4.31","USD"
"398","2024-04-22","2025-01-01","AMS:IWDA","7","88.42","88.42","0","618.94","618.94","0.00","EUR"
"399","2024-04-26","2024-06-11","NASDAQ:AAPL","3","170","200","0","510.00","600.00","90.00","USD"
"400","2024-04-26","2024-07-11","NYSE:BAC","2","38.13","41.99","0","76.26","83.98","7.72","USD"
"401","2024-04-26","2024-07-17","NYSE:O","2","53.92","57.16","0","107.84","114.32","6.48","USD"
"402","2024-05-28","2025-01-01","NASDAQ:NVDA","20","112.06","112.06","0","2241.20","2241.20","0.00","USD"
"403","2024-06-06","2025-01-01","NASDAQ:NVDA","20","124.92","124.92","0","2498.40","2498.40","0.00","USD"
"404","2024-06-12","2025-01-01","NASDAQ:AAPL","7","213.95","213.95","0","1497.65","1497.65","0.00","USD"
"405","2024-06-20","2025-01-01","NASDAQ:AAPL","2","210","210","0","420.00","420.00","0.00","USD"
"406","2024-07-03","2024-09-05","NASDAQ:TSLA","2","247.93","225.22","0","495.86","450.44","-45.42","USD"
"407","2024-07-11","2024-11-10","NYSE:TSM","10","193.86","189.8","0","1938.60","1898.00","-40.60","USD"
"408","2024-07-23","2025-01-01","INDEXNASDAQ:NDX","4.84403203","177.28","177.28","0","858.75","858.75","0.00","EUR"
"409","2024-08-01","2025-01-01","NASDAQ:AAPL","5","218.85","218.85","0","1094.25","1094.25","0.00","USD"
"410","2024-08-05","2025-01-01","NASDAQ:AAPL","1","204.9","204.9","0","204.90","204.90","0.00","USD"
"411","2024-08-05","2025-01-01","NASDAQ:AAPL","2","204.9","204.9","0","409.80","409.80","0.00","USD"
"412","2024-05-28","2024-10-17","NASDAQ:NVDA","10","112.06","140","0","1120.60","1400.00","279.40","USD"
"413","2024-11-06","2025-01-01","NASDAQ:AAPL","21","225.81","225.81","0","4742.01","4742.01","0.00","USD"
"414","2024-11-25","2025-01-01","NASDAQ:NVDA","8","137.7","137.7","0","1101.60","1101.60","0.00","USD"
"415","2024-11-18","2025-01-01","INDEXNASDAQ:NDX","10","203.8","203.8","0","2038.00","2038.00","0.00","EUR"
"416","2025-01-01","","AMS:IWDA","6","81.88","","0.05","491.33","","","EUR"
"417","2025-01-01","","AMS:IWDA","7","88.41","","0.06","618.93","","","EUR"
"418","2025-01-01","2025-01-06","NASDAQ:NVDA","20","112.06","150","0","2241.20","3000.00","758.80","USD"
"419","2025-01-01","2025-05-28","NASDAQ:NVDA","20","124.92","140","0","2498.40","2800.00","301.60","USD"
"420","2025-01-01","","NASDAQ:AAPL","7","213.95","","0","1497.65","","","USD"
"421","2025-01-01","","NASDAQ:AAPL","2","210","","0","420.00","","","USD"
"422","2025-01-01","","INDEXNASDAQ:NDX","4.84403203","177.28","","0","858.75","","","EUR"
"423","2025-01-01","2025-11-11","NASDAQ:AAPL","5","218.85","273.9","0","1094.25","1369.50","275.25","USD"
"424","2025-01-01","2025-08-08","NASDAQ:AAPL","1","204.9","225","0","204.90","225.00","20.10","USD"
"425","2025-01-01","2025-08-08","NASDAQ:AAPL","2","204.9","224.99","0","409.80","449.98","40.18","USD"
"426","2025-01-01","","NASDAQ:AAPL","21","225.81","","0","4742.01","","","USD"
"427","2025-01-01","","NASDAQ:NVDA","8","137.7","","0","1101.60","","","USD"
"428","2025-01-01","","INDEXNASDAQ:NDX","10","203.8","","0","2038.00","","","EUR"
"429","2025-01-06","","NASDAQ:NVDA","21","142.77","","0","2998.17","","","USD"
"430","2025-01-27","","NASDAQ:NVDA","2","123.59","","0","247.18","","","USD"
"431","2025-07-03","","NASDAQ:NVDA","12","159.89","","0","1918.68","","","USD"
"432","2025-10-16","","NASDAQ:NVDA","8","181.79","","0","1454.32","","","USD"
"433","2025-11-11","","NASDAQ:NVDA","9","193.60","","0","1742.40","","","USD"
========================================================================================
FICHEIRO: transacoes.html
Tamanho: 25559 bytes
========================================================================================
Base de dados de compras e vendas
========================================================================================
FICHEIRO: verificar-revolut.html
Tamanho: 28043 bytes
========================================================================================
Verificar Diferenças Revolut
🔠Verificar Diferenças Revolut
📋 Detalhes das Diferenças
🔧 w Completo (Debug)
Clique em "Verificar" para ver os dados...
========================================================================================
FICHEIRO: verificar_diferencas_revolut.php
Tamanho: 23201 bytes
========================================================================================
require_once __DIR__ . '/api/utilizador.php';
// getUserId() e userFilePath() vêm de api/utilizador.php
function vistosLoad(): array {
$path = userFilePath('transacoes-vistos.json');
if (!is_file($path)) return ['vistos' => []];
$raw = @file_get_contents($path);
$j = json_decode((string)$raw, true);
if (!is_array($j)) $j = [];
$vistos = $j['vistos'] ?? [];
if (!is_array($vistos)) $vistos = [];
foreach (['alterarlinha', 'adicionartransacao', 'removertransacao'] as $t) {
if (!isset($vistos[$t]) || !is_array($vistos[$t])) $vistos[$t] = [];
}
return ['vistos' => $vistos];
}
function vistoCheck(array $vistos, string $tipo, string $id): bool {
return isset($vistos['vistos'][$tipo]) && is_array($vistos['vistos'][$tipo]) && !empty($vistos['vistos'][$tipo][$id]);
}
function vistoIdLinha($linha): string {
return 'L:' . trim((string)$linha);
}
// Ficheiros especÃficos do utilizador atual
$ficheiroRevolut = userFilePath('extrato-revolut.csv');
$ficheiroTransacoes = userFilePath('transacoes-acoes.csv');
$ficheiroCaixa = userFilePath('movimentos-caixa.csv');
// Filtro opcional por ano (?ano=2020, 2021, ...)
$anoFiltro = isset($_GET['ano']) && preg_match('/^\d{4}$/', $_GET['ano']) ? $_GET['ano'] : null;
// Verificações iniciais
if (!file_exists($ficheiroRevolut)) {
echo json_encode([
'ok' => false,
'error' => 'Extrato Revolut não encontrado para este utilizador. Importe primeiro o ficheiro (extrato-revolut.csv).',
'user' => getUserId()
], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
exit;
}
if (!file_exists($ficheiroTransacoes)) {
echo json_encode([
'ok' => false,
'error' => 'Ficheiro de transações (transacoes-acoes.csv) não encontrado para este utilizador.',
'user' => getUserId()
], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
exit;
}
// FILTRO POR ANO
function filtrarPorAno($items, $ano) {
if (!$ano || empty($items)) return $items;
return array_filter($items, function($item) use ($ano) {
$camposData = ['data', 'dataCompra', 'dataVenda'];
foreach ($camposData as $campo) {
if (isset($item[$campo]) && !empty($item[$campo])) {
if (preg_match('/^' . $ano . '[-\/]/', $item[$campo])) {
return true;
}
}
}
return false;
});
}
// ✅ NORMALIZAR TICKER - VERSÃO COMPLETA COM TODOS OS MAPEAMENTOS
function normalizarTicker($nomeAcao) {
$n = strtoupper(trim($nomeAcao));
// ✅ MAPEAMENTO EXPLÃCITO DE ETFs
if (strpos($n, 'IWDA') !== false || strpos($n, 'EUNL') !== false) {
return 'IWDA';
}
if (strpos($n, 'NDX') !== false ||
strpos($n, 'EXXT') !== false ||
strpos($n, 'EQQQ') !== false) {
return 'EQQQ';
}
// ✅ MAPEAMENTO DE AÇÕES ESPECÃFICAS
$mapa = [
'SQ' => 'SQ', // Block (Square)
'Z' => 'Z', // Zillow
'BRK.B' => 'BRKB', // Berkshire Hathaway
'BRKB' => 'BRKB', // Já normalizado
'AAPL' => 'AAPL',
'NVDA' => 'NVDA',
'TSLA' => 'TSLA',
'GOOGL' => 'GOOGL',
'AMZN' => 'AMZN',
'MSFT' => 'MSFT',
'TSM' => 'TSM',
'BAC' => 'BAC',
'O' => 'O',
'KO' => 'KO',
];
// Remove prefixos de bolsa
$n = preg_replace('/^(NASDAQ|NYSE|INDEXNASDAQ|AMS):?/', '', $n);
// Remove caracteres especiais e pontos
$n = preg_replace('/[^A-Z0-9]/', '', $n);
// Verifica se está no mapa
if (isset($mapa[$n])) {
return $mapa[$n];
}
return $n;
}
// LER REVOLUT (extrato)
function lerRevolut($ficheiro) {
if (!file_exists($ficheiro)) {
return ['error' => 'Ficheiro não encontrado: ' . basename($ficheiro)];
}
$fh = fopen($ficheiro, 'r');
if (!$fh) {
return ['error' => 'Erro ao abrir: ' . basename($ficheiro)];
}
// Cabeçalho:
// Date,Ticker,Type,Quantity,Price per share,Total Amount,Currency,FX Rate
fgetcsv($fh, 0, ',');
$movimentos = [];
while (($row = fgetcsv($fh, 0, ',')) !== false) {
if (count($row) < 8) continue;
$dataCompleta = trim($row[0]);
$data = substr($dataCompleta, 0, 10); // YYYY-MM-DD
$ticker = trim($row[1]);
$tipo = trim($row[2]);
$quantidade = trim($row[3]);
$preco = trim($row[4]);
$totalAmount = trim($row[5]);
$moeda = trim($row[6]);
$fxRaw = trim($row[7]);
// Limpeza de valor total
$valorLimpo = preg_replace('/[A-Z]{3}\s*/', '', $totalAmount);
$valorLimpo = str_replace(',', '.', $valorLimpo);
$valorNum = floatval($valorLimpo);
// Limpeza de preço
$precoLimpo = preg_replace('/[A-Z]{3}\s*/', '', $preco);
$precoLimpo = str_replace(',', '.', $precoLimpo);
$precoNum = floatval($precoLimpo);
// FX rate
$fxNum = $fxRaw !== '' ? floatval(str_replace(',', '.', $fxRaw)) : null;
$movimentos[] = [
'data' => $data,
'ticker' => strtoupper($ticker),
'tipo' => $tipo,
'quantidade' => floatval(str_replace(',', '.', $quantidade)),
'preco' => $precoNum,
'valor' => $valorNum,
'moeda' => $moeda,
'fx' => $fxNum,
];
}
fclose($fh);
return $movimentos;
}
// LER TRANSAÇÕES (formato novo: 11 colunas)
function lerTransacoesAtuais($ficheiro) {
if (!file_exists($ficheiro)) return [];
$fh = fopen($ficheiro, 'r');
if (!$fh) return [];
// Cabeçalho: Ordem,DataCompra,DataVenda,NomeAcao,NumAcoes,Comissoes,
// CustoInicial,CustoFinal,TaxaCompra,TaxaVenda,Moeda
fgetcsv($fh, 0, ',');
$transacoes = [];
while (($row = fgetcsv($fh, 0, ',')) !== false) {
if (count($row) < 11) continue;
$transacoes[] = [
'ordem' => trim($row[0]),
'dataCompra' => trim($row[1]),
'dataVenda' => trim($row[2]),
'nomeAcao' => trim($row[3]),
'numAcoes' => floatval(str_replace(',', '.', $row[4])),
'comissoes' => floatval(str_replace(',', '.', $row[5])),
'custoInicial' => floatval(str_replace(',', '.', $row[6])),
'custoFinal' => floatval(str_replace(',', '.', $row[7])),
'taxaCompra' => isset($row[8]) ? floatval(str_replace(',', '.', $row[8])) : 0.0,
'taxaVenda' => isset($row[9]) ? floatval(str_replace(',', '.', $row[9])) : 0.0,
'moeda' => trim($row[10]),
];
}
fclose($fh);
return $transacoes;
}
// COMPARAR COM LÓGICA RESTRITIVA
function compararDados($revolut, $transacoesAtuais, $vistos) {
$diferencas = [
'duplicatasexatas' => [],
'alterarlinha' => [],
'adicionartransacao' => [],
'removertransacao' => [],
'totais' => [
'revolutcompras' => 0,
'revolutvendas' => 0,
'transacoestotal' => count($transacoesAtuais)
]
];
// Agrupar Revolut por ticker
$revolutPorTicker = [];
foreach ($revolut as $mov) {
$ticker = strtoupper($mov['ticker']);
if (!isset($revolutPorTicker[$ticker])) {
$revolutPorTicker[$ticker] = ['compras' => [], 'vendas' => []];
}
if (stripos($mov['tipo'], 'BUY') !== false) {
$revolutPorTicker[$ticker]['compras'][] = $mov;
$diferencas['totais']['revolutcompras']++;
} elseif (stripos($mov['tipo'], 'SELL') !== false) {
$revolutPorTicker[$ticker]['vendas'][] = $mov;
$diferencas['totais']['revolutvendas']++;
}
}
// Verificar cada transação do CSV
foreach ($transacoesAtuais as $t) {
$linhaId = vistoIdLinha($t['ordem']);
$tickerNormalizado = normalizarTicker($t['nomeAcao']);
if (!isset($revolutPorTicker[$tickerNormalizado])) {
// Se esta linha já foi marcada como "Visto", passa a OK e não aparece como pendente
if (vistoCheck($vistos, 'removertransacao', $linhaId)) {
$diferencas['duplicatasexatas'][] = [
'id' => $linhaId,
'linha' => $t['ordem'],
'acao' => $t['nomeAcao'],
'data' => $t['dataCompra'] ?? '',
'status' => 'OK'
];
continue;
}
$diferencas['removertransacao'][] = [
'id' => $linhaId,
'linha' => $t['ordem'],
'acao' => $t['nomeAcao'],
'motivo' => 'Ticker não encontrado no Revolut (normalizado: ' . $tickerNormalizado . ')'
];
continue;
}
$comprasTicker = $revolutPorTicker[$tickerNormalizado]['compras'];
$vendasTicker = $revolutPorTicker[$tickerNormalizado]['vendas'];
// ✅ PROCURAR COMPRA (tolerância: 0 dias, 1€)
$compraEncontrada = null;
foreach ($comprasTicker as $compra) {
$diasDiff = abs(strtotime($compra['data']) - strtotime($t['dataCompra'])) / 86400;
$custoDiff = abs($compra['valor'] - $t['custoInicial']);
if ($diasDiff <= 0 && $custoDiff <= 1) {
$compraEncontrada = $compra;
break;
}
}
// ✅ PROCURAR VENDA (tolerância: 0 dias, 1€)
$vendaEncontrada = null;
$temDataVendaCSV = !empty($t['dataVenda']);
if ($temDataVendaCSV) {
foreach ($vendasTicker as $venda) {
$diasDiff = abs(strtotime($venda['data']) - strtotime($t['dataVenda'])) / 86400;
$custoDiff = abs($venda['valor'] - $t['custoFinal']);
if ($diasDiff <= 0 && $custoDiff <= 1) {
$vendaEncontrada = $venda;
break;
}
}
}
// Se não existe compra no Revolut e (não há venda no CSV ou também não existe venda no Revolut),
// então esta linha do CSV muito provavelmente não corresponde a nada no extrato => remover.
$naoExisteCompra = ($compraEncontrada === null);
$naoExisteVenda = ($temDataVendaCSV && $vendaEncontrada === null);
if ($naoExisteCompra && (!$temDataVendaCSV || $naoExisteVenda)) {
$diferencas['removertransacao'][] = [
'linha' => $t['ordem'],
'acao' => $t['nomeAcao'],
'motivo' => 'Compra e venda não encontradas no Revolut. Provável linha extra no CSV.'
];
continue;
}
// ✅ ANÃLISE DE DIFERENÇAS (DETALHADA)
$diferencasCount = 0;
$detalhes = [];
if ($compraEncontrada) {
// Data compra
if ($compraEncontrada['data'] !== $t['dataCompra']) {
$diferencasCount++;
$detalhes[] = "Data Compra: {$t['dataCompra']} → {$compraEncontrada['data']}";
}
// Quantidade
if (abs($compraEncontrada['quantidade'] - $t['numAcoes']) > 0.00001) {
$diferencasCount++;
$detalhes[] = "Qtd: {$t['numAcoes']} → {$compraEncontrada['quantidade']}";
}
// Custo compra
if (abs($compraEncontrada['valor'] - $t['custoInicial']) > 0.01) {
$diferencasCount++;
$detalhes[] = "Custo Compra: {$t['custoInicial']} € → {$compraEncontrada['valor']} €";
}
} else {
$diferencasCount++;
$detalhes[] = "COMPRA não encontrada no Revolut";
}
if ($temDataVendaCSV) {
if ($vendaEncontrada) {
// Data venda
if ($vendaEncontrada['data'] !== $t['dataVenda']) {
$diferencasCount++;
$detalhes[] = "Data Venda: {$t['dataVenda']} → {$vendaEncontrada['data']}";
}
// Custo venda
if (abs($vendaEncontrada['valor'] - $t['custoFinal']) > 0.01) {
$diferencasCount++;
$detalhes[] = "Custo Venda: {$t['custoFinal']} € → {$vendaEncontrada['valor']} €";
}
} else {
$diferencasCount++;
$detalhes[] = "VENDA não encontrada no Revolut";
}
}
// ✅ RESULTADO POR LINHA
if ($diferencasCount === 0) {
// Match perfeito
$diferencas['duplicatasexatas'][] = [
'id' => $linhaId,
'linha' => $t['ordem'],
'acao' => $t['nomeAcao'],
'data' => $t['dataCompra'],
'status' => 'OK'
];
} else {
$item = [
'id' => $linhaId,
'linha' => $t['ordem'],
'acao' => $t['nomeAcao'],
'dataCompra' => $t['dataCompra'],
'dataVenda' => $t['dataVenda'],
'diferencas' => $diferencasCount,
'detalhes' => implode(' | ', $detalhes),
'valoratualcompra' => $t['custoInicial'],
'valoratualvenda' => $t['custoFinal'],
'sugestaocompra' => null,
'sugestaovenda' => null
];
// Se esta linha já foi marcada como "Visto", passa a OK e não aparece como pendente
if (vistoCheck($vistos, 'alterarlinha', $linhaId)) {
$diferencas['duplicatasexatas'][] = [
'id' => $linhaId,
'linha' => $t['ordem'],
'acao' => $t['nomeAcao'],
'data' => $t['dataCompra'],
'status' => 'OK'
];
} else {
$diferencas['alterarlinha'][] = $item;
}
} // <-- ESTA chaveta é a que te falta (fecha o else do diferencasCount)
} // fecha foreach ($transacoesAtuais as $t)
return $diferencas;
}
// ==========================
// NOVO: COMPARAR CAIXA
// movimentos-caixa.csv <-> extrato-revolut.csv (CASH TOP-UP / CASH WITHDRAWAL / DIVIDEND / FEES)
// ==========================
function fnum_local($v): float {
if ($v === null) return 0.0;
$s = trim((string)$v);
if ($s === '') return 0.0;
$s = str_replace([' ', "\t"], '', $s);
// Se vier "USD -1.25" ou "EUR 493.36"
$s = preg_replace('/^[A-Z]{3}/', '', $s);
$s = trim($s);
// vÃrgulas para ponto
$s = str_replace(',', '.', $s);
$n = (float)$s;
return is_finite($n) ? $n : 0.0;
}
function normCaixaTipo($tipo): string {
$t = mb_strtolower(trim((string)$tipo), 'UTF-8');
// Fallback manual (caso iconv falhe ou não exista translit completo)
$t = strtr($t, [
'á'=>'a','à '=>'a','â'=>'a','ã'=>'a',
'é'=>'e','ê'=>'e',
'Ã'=>'i',
'ó'=>'o','ô'=>'o','õ'=>'o',
'ú'=>'u',
'ç'=>'c'
]);
// Tentar translit (se funcionar, melhora ainda mais)
$tt = @iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $t);
if ($tt !== false && $tt !== null && $tt !== '') {
$t = $tt;
}
$t = preg_replace('/[^a-z0-9]+/', ' ', (string)$t);
// Depósito (apanha "deposito", "deposit", "top up", "cash top-up", etc.)
if (strpos($t, 'depos') !== false || strpos($t, 'deposit') !== false || strpos($t, 'top up') !== false || strpos($t, 'topup') !== false || strpos($t, 'cash top up') !== false || strpos($t, 'cash topup') !== false) {
return 'Depósito';
}
if (strpos($t, 'levant') !== false || strpos($t, 'withdraw') !== false) return 'Levantamento';
if (strpos($t, 'divid') !== false || strpos($t, 'dividend') !== false) return 'Dividendo';
return 'Outros';
}
function mapRevolutCashTypeToCaixaTipo(string $type): ?string {
$t = strtoupper(trim($type));
if ($t === '') return null;
// Tipos tÃpicos vistos no extrato
if (strpos($t, 'CASH TOP-UP') !== false) return 'Depósito';
if (strpos($t, 'CASH WITHDRAWAL') !== false) return 'Levantamento';
if (strpos($t, 'DIVIDEND') !== false) return 'Dividendo';
// Fees e afins
if (strpos($t, 'FEE') !== false || strpos($t, 'TAX') !== false || strpos($t, 'COMMISSION') !== false) return 'Outros';
if (strpos($t, 'CUSTODY FEE') !== false) return 'Outros';
return null; // não é movimento de caixa que nos interesse aqui
}
function filtrarRevolutCaixa(array $revolutMovs): array {
$out = [];
foreach ($revolutMovs as $m) {
$type = (string)($m['tipo'] ?? '');
$tipoCaixa = mapRevolutCashTypeToCaixaTipo($type);
if ($tipoCaixa === null) continue;
$data = (string)($m['data'] ?? '');
$moeda = strtoupper(trim((string)($m['moeda'] ?? '')));
$valor = (float)($m['valor'] ?? 0.0);
$ticker = trim((string)($m['ticker'] ?? ''));
$descricao = strtoupper(trim($type));
if ($ticker !== '' && strpos($descricao, 'DIVIDEND') !== false) {
$descricao = $ticker . ' DIVIDEND';
}
$out[] = [
'data' => $data,
'tipo' => $tipoCaixa,
'valor' => $valor,
'moeda' => $moeda,
'descricao' => $descricao,
];
}
return $out;
}
function lerMovimentosCaixaCSV(string $ficheiroCaixa): array {
if (!file_exists($ficheiroCaixa)) return ['_erro' => 'movimentos-caixa.csv não encontrado.'];
$fh = fopen($ficheiroCaixa, 'r');
if (!$fh) return ['_erro' => 'Não foi possÃvel abrir movimentos-caixa.csv.'];
$cab = fgetcsv($fh, 0, ','); // Ordem,Data,Tipo,Valor,Moeda,Descricao
$rows = [];
while (($r = fgetcsv($fh, 0, ',')) !== false) {
if (count($r) < 6) continue;
$ordem = trim((string)$r[0]);
$data = substr(trim((string)$r[1]), 0, 10);
$tipo = normCaixaTipo($r[2] ?? '');
$valor = fnum_local($r[3] ?? 0);
$moeda = strtoupper(trim((string)($r[4] ?? '')));
$desc = trim((string)($r[5] ?? ''));
if ($data === '' || strlen($data) < 10) continue;
$rows[] = [
'ordem' => $ordem,
'data' => $data,
'tipo' => $tipo,
'valor' => $valor,
'moeda' => $moeda,
'descricao' => $desc,
];
}
fclose($fh);
return $rows;
}
function compararCaixaComRevolut(array $revolutMovs, string $ficheiroCaixa): array {
$revCaixa = filtrarRevolutCaixa($revolutMovs);
$caixaCsv = lerMovimentosCaixaCSV($ficheiroCaixa);
if (isset($caixaCsv['_erro'])) {
return [
'resumo' => ['duplicatas' => 0, 'alterar' => 0, 'adicionar' => 0, 'remover' => 0],
'detalhes' => ['duplicatasexatas' => [], 'alterarlinha' => [], 'adicionar' => [], 'remover' => []],
'aviso' => $caixaCsv['_erro'],
];
}
// Vamos “consumir†linhas do CSV à medida que casam, para evitar reuso.
$usado = array_fill(0, count($caixaCsv), false);
$duplicatas = [];
$alterar = [];
$adicionar = [];
$remover = [];
// 1) Revolut -> procurar no movimentos-caixa.csv
foreach ($revCaixa as $rc) {
$matchIdx = null;
$match = null;
// Tentativa A: data + moeda + valor (tolerância)
for ($i = 0; $i < count($caixaCsv); $i++) {
if ($usado[$i]) continue;
$c = $caixaCsv[$i];
if ($c['moeda'] !== $rc['moeda']) continue;
$dias = abs(strtotime($c['data']) - strtotime($rc['data'])) / 86400;
if ($dias > 0) continue;
if (abs(((float)$c['valor']) - ((float)$rc['valor'])) > 0.01) continue;
$matchIdx = $i;
$match = $c;
break;
}
if ($matchIdx === null) {
$adicionar[] = [
'origem' => 'Revolut',
'motivo' => 'Movimento de caixa não encontrado em movimentos-caixa.csv',
'sugestao' => $rc,
];
continue;
}
$usado[$matchIdx] = true;
// Comparar tipo (e opcionalmente descrição)
$diffs = [];
if ($match['tipo'] !== $rc['tipo']) {
$diffs[] = "Tipo: CSV={$match['tipo']} vs Revolut={$rc['tipo']}";
}
if (count($diffs) === 0) {
$duplicatas[] = [
'data' => $rc['data'],
'tipo' => $rc['tipo'],
'valor' => $rc['valor'],
'moeda' => $rc['moeda'],
'status' => 'OK',
];
} else {
$alterar[] = [
'linha' => $match['ordem'],
'data' => $rc['data'],
'diferencas' => count($diffs),
'detalhes' => implode(' | ', $diffs),
'csv' => $match,
'revolut' => $rc,
];
}
}
// 2) Tudo o que ficou no CSV sem match -> remover/rever
for ($i = 0; $i < count($caixaCsv); $i++) {
if ($usado[$i]) continue;
$remover[] = [
'origem' => 'CSV',
'linha' => $caixaCsv[$i]['ordem'],
'motivo' => 'Movimento existe em movimentos-caixa.csv mas não aparece no extrato Revolut (tipos de caixa)',
'csv' => $caixaCsv[$i],
];
}
return [
'resumo' => [
'duplicatas' => count($duplicatas),
'alterar' => count($alterar),
'adicionar' => count($adicionar),
'remover' => count($remover),
],
'detalhes' => [
'duplicatasexatas' => $duplicatas,
'alterarlinha' => $alterar,
'adicionar' => $adicionar,
'remover' => $remover,
],
];
}
$revolut = lerRevolut($ficheiroRevolut);
if (isset($revolut['error'])) {
echo json_encode(['ok' => false, 'error' => $revolut['error'], 'user' => getUserId()], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
exit;
}
// Normalizar tickers do Revolut para casar com normalizarTicker()
foreach ($revolut as &$m) {
if (isset($m['ticker']) && $m['ticker'] !== '') {
$m['ticker'] = normalizarTicker($m['ticker']);
}
}
unset($m);
$revolut = filtrarPorAno($revolut, $anoFiltro);
$transacoesAtuais = lerTransacoesAtuais($ficheiroTransacoes);
$transacoesAtuais = filtrarPorAno($transacoesAtuais, $anoFiltro);
$vistos = vistosLoad();
$diferencas = compararDados($revolut, $transacoesAtuais, $vistos);
// --- NOVO: comparar CAIXA (movimentos-caixa.csv) com extrato-revolut.csv ---
$caixaDiff = compararCaixaComRevolut($revolut, $ficheiroCaixa);
echo json_encode([
'ok' => true,
'ficheirorevolut' => basename($ficheiroRevolut),
'utilizador' => getUserId(),
'anofiltro' => $anoFiltro ? $anoFiltro : 'TODOS',
'dataverificacao' => date('Y-m-d H:i:s'),
// (mantém o resumo/detalhes das AÇÕES como está no teu ficheiro)
'resumo' => [
'duplicatas' => count($diferencas['duplicatasexatas'] ?? []),
'alterar' => count($diferencas['alterarlinha'] ?? []),
'adicionar' => count($diferencas['adicionartransacao'] ?? []),
'remover' => count($diferencas['removertransacao'] ?? []),
],
'detalhes' => $diferencas,
// --- NOVO: resultados de CAIXA ---
'caixa' => $caixaDiff,
], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
exit;
========================================================================================
🎉 EXPORTAÇÃO CONCLUÃDA!
========================================================================================