Untitled
unknown
javascript
2 years ago
2.2 kB
6
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...