back-mark-plotter
Version:
Equity Curve plotting lib for Back Mark trades
50 lines • 1.66 kB
JavaScript
import * as fs from 'fs';
import * as path from 'path';
export class TradePlotter {
constructor(trades) {
this.trades = trades;
}
plot(outputFilePath = 'trades_plot.html') {
const timestamps = this.trades.map((trade) => trade.createdAt.toISOString());
const balances = this.trades.map((trade) => trade.balanceAfterTrade || 0);
const trace = {
x: timestamps,
y: balances,
mode: 'lines+markers',
name: 'Equity Curve',
line: { color: 'blue' },
marker: { size: 6, color: 'red' },
};
const layout = {
title: 'Equity Curve',
xaxis: {
title: 'Timestamp',
showgrid: true,
zeroline: false,
},
yaxis: {
title: 'Balance',
showline: false,
},
};
const data = [trace];
const plotHtml = `
<html>
<head>
<script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
</head>
<body>
<div id="plot"></div>
<script>
const data = ${JSON.stringify(data)};
const layout = ${JSON.stringify(layout)};
Plotly.newPlot('plot', data, layout);
</script>
</body>
</html>
`;
fs.writeFileSync(path.resolve(outputFilePath), plotHtml);
console.log(`Plot saved to ${outputFilePath}`);
}
}
//# sourceMappingURL=TradePlotter.js.map