Untitled
unknown
javascript
3 years ago
2.2 kB
9
Indexable
const fs = require("fs");
fs.readFile("data.csv", "utf8", function (err, data) {
if (err) throw err;
let fileContent = data.split("\n");
fileContent.shift();
let parsedData = [];
fileContent.forEach((transaction) => {
transaction = transaction.replace(/,/g, ".");
const transactionDetails = transaction.split(";");
const parsedTransaction = {
date: new Date(`${transactionDetails[0]}`),
transactionType: transactionDetails[2],
stock: transactionDetails[3],
amount: +(transactionDetails[4] >= 0
? transactionDetails[4]
: transactionDetails[4] * -1),
stockprice: +(transactionDetails[5] !== "-" ? transactionDetails[5] : 0),
courtage: +(transactionDetails[7] !== "-" ? transactionDetails[7] : 0),
currency: "SEK",
isin: transactionDetails[9],
};
if (!!parsedTransaction) {
parsedData.push(parsedTransaction);
}
});
let stocks = {};
let totalTrades = 0;
let successfulTrades = 0;
let totalProfitOrLoss = 0;
parsedData.forEach((parsedTransaction) => {
let { stock, transactionType, amount, stockprice } = parsedTransaction;
if (!stocks[stock]) {
stocks[stock] = {
amount: 0,
trades: [],
profitOrLoss: 0,
};
}
let change = transactionType === "Köp" ? amount : -amount;
stocks[stock].amount += change;
stocks[stock].profitOrLoss -= change * stockprice;
stocks[stock].trades.push(parsedTransaction);
if (stocks[stock].amount === 0) {
console.log(`Trade for ${stock}:`, stocks[stock].trades);
console.log(
`Profit or loss for this trade: ${stocks[stock].profitOrLoss}`
);
totalProfitOrLoss += stocks[stock].profitOrLoss;
if (stocks[stock].profitOrLoss > 0) {
successfulTrades++;
}
stocks[stock].trades = [];
stocks[stock].profitOrLoss = 0;
totalTrades++;
}
});
console.log(`Total number of trades: ${totalTrades}`);
console.log(`Total profit or loss: ${totalProfitOrLoss}`);
console.log(
`Win rate: ${((successfulTrades / totalTrades) * 100).toFixed(2)}%`
);
});
Editor is loading...