Blame |
Last modification |
View Log
| Download
| RSS feed
package br.com.kronus.core;
import java.util.ArrayList;
import java.util.List;
public class BacktestSummary
{
private List<BacktestTradeResult
> trades =
new ArrayList<>();
private double totalPnl
;
private int numTradesExecutados
;
private int numTradesVencedores
;
private int numTradesPerdedores
;
private double winRate
;
private double maxDrawdown
;
public void addTrade
(BacktestTradeResult tradeResult
) {
trades.
add(tradeResult
);
}
public void calcularResumo
() {
totalPnl =
0.0;
numTradesExecutados =
0;
numTradesVencedores =
0;
numTradesPerdedores =
0;
maxDrawdown =
0.0;
double equity =
0.0;
double picoEquity =
0.0;
for (BacktestTradeResult tr : trades
) {
if (!tr.
isExecutado()) {
continue;
}
numTradesExecutados++
;
totalPnl += tr.
getPnl();
if (tr.
getPnl() > 0) {
numTradesVencedores++
;
} else if (tr.
getPnl() < 0) {
numTradesPerdedores++
;
}
equity += tr.
getPnl();
if (equity
> picoEquity
) {
picoEquity = equity
;
}
double drawdownAtual = picoEquity - equity
;
if (drawdownAtual
> maxDrawdown
) {
maxDrawdown = drawdownAtual
;
}
}
if (numTradesExecutados
> 0) {
winRate =
(numTradesVencedores
* 100.0) / numTradesExecutados
;
} else {
winRate =
0.0;
}
}
public List<BacktestTradeResult
> getTrades
() {
return trades
;
}
public double getTotalPnl
() {
return totalPnl
;
}
public int getNumTradesExecutados
() {
return numTradesExecutados
;
}
public int getNumTradesVencedores
() {
return numTradesVencedores
;
}
public int getNumTradesPerdedores
() {
return numTradesPerdedores
;
}
public double getWinRate
() {
return winRate
;
}
public double getMaxDrawdown
() {
return maxDrawdown
;
}
}