Subversion Repositories Integrator Subversion

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
778 blopes 1
package br.com.kronus.core;
2
 
3
import java.util.ArrayList;
4
import java.util.List;
5
 
6
public class BacktestSummary {
7
 
8
    private List<BacktestTradeResult> trades = new ArrayList<>();
9
 
10
    private double totalPnl;
11
    private int numTradesExecutados;
12
    private int numTradesVencedores;
13
    private int numTradesPerdedores;
14
    private double winRate;
15
    private double maxDrawdown;
16
 
17
    public void addTrade(BacktestTradeResult tradeResult) {
18
        trades.add(tradeResult);
19
    }
20
 
21
    public void calcularResumo() {
22
        totalPnl = 0.0;
23
        numTradesExecutados = 0;
24
        numTradesVencedores = 0;
25
        numTradesPerdedores = 0;
26
        maxDrawdown = 0.0;
27
 
28
        double equity = 0.0;
29
        double picoEquity = 0.0;
30
 
31
        for (BacktestTradeResult tr : trades) {
32
            if (!tr.isExecutado()) {
33
                continue;
34
            }
35
 
36
            numTradesExecutados++;
37
            totalPnl += tr.getPnl();
38
 
39
            if (tr.getPnl() > 0) {
40
                numTradesVencedores++;
41
            } else if (tr.getPnl() < 0) {
42
                numTradesPerdedores++;
43
            }
44
 
45
            equity += tr.getPnl();
46
            if (equity > picoEquity) {
47
                picoEquity = equity;
48
            }
49
            double drawdownAtual = picoEquity - equity;
50
            if (drawdownAtual > maxDrawdown) {
51
                maxDrawdown = drawdownAtual;
52
            }
53
        }
54
 
55
        if (numTradesExecutados > 0) {
56
            winRate = (numTradesVencedores * 100.0) / numTradesExecutados;
57
        } else {
58
            winRate = 0.0;
59
        }
60
    }
61
 
62
    public List<BacktestTradeResult> getTrades() {
63
        return trades;
64
    }
65
 
66
    public double getTotalPnl() {
67
        return totalPnl;
68
    }
69
 
70
    public int getNumTradesExecutados() {
71
        return numTradesExecutados;
72
    }
73
 
74
    public int getNumTradesVencedores() {
75
        return numTradesVencedores;
76
    }
77
 
78
    public int getNumTradesPerdedores() {
79
        return numTradesPerdedores;
80
    }
81
 
82
    public double getWinRate() {
83
        return winRate;
84
    }
85
 
86
    public double getMaxDrawdown() {
87
        return maxDrawdown;
88
    }
89
 
90
}