-
-
Save jozsefs/092795dc81fbe15ef494b6d3b12c6459 to your computer and use it in GitHub Desktop.
const data = [...document.querySelectorAll('.ui-table-row')].map(row => ({ | |
market: row.querySelector('.table-first-name').innerText, | |
units: +row.querySelector('[data-etoro-automation-id=portfolio-overview-table-cell-container-units]').innerText.split('\n')[0].replace(/,/g, ''), | |
avgOpen: +row.querySelector('[data-etoro-automation-id=portfolio-overview-table-cell-container-open-rate]').innerText, | |
invested: +row.querySelector('[data-etoro-automation-id=portfolio-overview-table-cell-container-invested]').innerText.slice(1).replace(/,/g, ''), | |
pl$: +row.querySelector('[data-etoro-automation-id=portfolio-overview-table-cell-container-container-profit]').innerText.replace(/[<,$]/g, ''), | |
plPercent: +row.querySelector('[data-etoro-automation-id=portfolio-overview-table-cell-container-gain]').innerText.replace(/[<,%]/g, ''), | |
value: +row.querySelector('[data-etoro-automation-id=portfolio-overview-table-cell-container-equity]').innerText.replace(/[<,$]/g, '') | |
})); | |
JSON.stringify(data, null, 2); |
Hi
thank you for creating this and sharing it!
I am getting this error:
"
const data = [...document.querySelectorAll('.ui-table-row')].map(row => ({
^
ReferenceError: document is not defined
at Object. (C:\Program Files\nodejs\test.js:1:14)
�[90m at Module._compile (internal/modules/cjs/loader.js:1063:30)�[39m
�[90m at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)�[39m
�[90m at Module.load (internal/modules/cjs/loader.js:928:32)�[39m
�[90m at Function.Module._load (internal/modules/cjs/loader.js:769:14)�[39m
�[90m at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)�[39m
�[90m at internal/main/run_main_module.js:17:47�[39m
"
Can you please help me out here? :)
Hey, this is intended to run from the browser (console), if you'd like to run this from node use something like puppeteer
Hey, thanks for sharing.
I've tried running it from the the browser but can`t make it work.
I get the following message:
VM54136:2 Uncaught TypeError: Cannot read property 'innerText' of null
at :2:49
at Array.map ()
at :1:62
Sorry if I'm not seeing anything obvious but I'm totally new at this.
Thanks!
You should run this on the /portfolio page while being logged in and having at least 1 portfolio row.
(for example I tried running it on the /portfolio/history page and I had the same error as you)
I'll give it a try! thanks for your feedback!
Export current portfolio history
Not optimized one-liner, only includes Buy/Sell actions, but no deposits, interest, withdrawels:
JSON.stringify($("div[automation-id='table-list']").children().map((index, el) => { const buy_sell_span = $(el).find('span.name').children()[0]; if(buy_sell_span) { return {'ticker': $(el).find('span.name').children()[1].innerHTML.trim(), 'action': buy_sell_span.innerHTML.trim(), 'is_cfd': $(el).find('span.cfd-tag').length > 0, 'invested': $(el).find("span[automation-id='cd-private-history-flat-item-invested']")[0].innerHTML, 'units': $(el).find("span[automation-id='cd-private-history-flat-item-units']")[0].innerHTML, 'open': $(el).find("span[automation-id='cd-private-history-flat-item-open-rate']")[0].innerHTML, 'close': $(el).find("span[automation-id='cd-private-history-flat-item-close-rate']")[0].innerHTML, 'open_date': $(el).find("div[automation-id='cd-private-history-flat-item-open-date']").children()[0].innerHTML, 'open_time': $(el).find("div[automation-id='cd-private-history-flat-item-open-date']").children()[1].innerHTML, 'close_date': $(el).find("div[automation-id='cd-private-history-flat-item-close-date']").children()[0].innerHTML, 'close_time': $(el).find("div[automation-id='cd-private-history-flat-item-close-date']").children()[1].innerHTML, 'profit_loss_amount': $(el).find("span[automation-id='cd-private-history-flat-item-profit']")[0].innerHTML, 'profit_loss_percentage': $(el).find("span[automation-id='cd-private-history-flat-item-gain']")[0].innerHTML}; } else { return null; }}).toArray());
Make sure to click "SHOW MORE" at the end of the history page to really export all trades in selected time frame!
Most recent version (make sure to replace € sign with $ or whatever currency you are using):
const data = [...document.querySelectorAll('.et-table-row')].map(row => ({
market: row.querySelector('[automation-id=portfolio-overview-table-body-cell-market-name]').innerText,
units: +row.querySelector('[automation-id=portfolio-overview-table-body-cell-units-value]').innerText.split('\n')[0].replace(/,/g, ''),
avgOpen: +row.querySelector('[automation-id=portfolio-overview-table-body-cell-avg-open-rate]').innerText,
invested: +row.querySelector('[automation-id=portfolio-overview-table-body-cell-invested-value]').innerText.slice(1).replace(/,/g, ''),
pl$: +row.querySelector('[automation-id=portfolio-overview-table-body-cell-profit]').innerText.replace(/[<,€]/g, ''),
plPercent: +row.querySelector('[automation-id=portfolio-overview-table-body-cell-gain]').innerText.replace(/[<,%]/g, ''),
value: +row.querySelector('[automation-id=portfolio-overview-table-body-cell-equity]').innerText.slice(1).replace(/,/g, '')
}));
JSON.stringify(data, null, 2);
This is awesome! Thanks for creating it :)