Blame |
Last modification |
View Log
| Download
| RSS feed
package br.com.kronus.web;
import org.primefaces.model.chart.Axis;
import org.primefaces.model.chart.AxisType;
import org.primefaces.model.chart.LineChartModel;
import org.primefaces.model.chart.LineChartSeries;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
@ManagedBean
(name =
"kronusDashboardBean")
@ViewScoped
public class KronusDashboardBean
implements Serializable {
private double plDia
;
private int numeroTrades
;
private double taxaAcerto
;
private List<TradeDTO
> tradesDoDia
;
private LineChartModel plDiaChart
;
private final DateTimeFormatter HORA_FORMATTER = DateTimeFormatter.
ofPattern("HH:mm");
public KronusDashboardBean
() {
}
@PostConstruct
public void init
() {
atualizarDashboard
();
}
public void atualizarDashboard
() {
tradesDoDia =
new ArrayList<>();
tradesDoDia.
add(new TradeDTO
(
LocalDateTime.
now().
minusMinutes(25),
"WINZ25",
"COMPRA",
1,
125000.0,
125150.0,
150.0
));
tradesDoDia.
add(new TradeDTO
(
LocalDateTime.
now().
minusMinutes(10),
"WINZ25",
"VENDA",
1,
125180.0,
125130.0,
-
50.0
));
calcularResumo
();
montarGraficoPL
();
}
private void calcularResumo
() {
if (tradesDoDia ==
null || tradesDoDia.
isEmpty()) {
plDia =
0.0;
numeroTrades =
0;
taxaAcerto =
0.0;
return;
}
numeroTrades = tradesDoDia.
size();
double somaPL =
0.0;
int vencedores =
0;
for (TradeDTO t : tradesDoDia
) {
somaPL += t.
getPl();
if (t.
getPl() > 0) {
vencedores++
;
}
}
plDia = somaPL
;
taxaAcerto =
(vencedores
* 100.0) / numeroTrades
;
}
private void montarGraficoPL
() {
plDiaChart =
new LineChartModel
();
LineChartSeries serie =
new LineChartSeries
();
serie.
setLabel("P/L acumulado");
double acumulado =
0.0;
if (tradesDoDia
!=
null) {
for (TradeDTO t : tradesDoDia
) {
acumulado += t.
getPl();
String hora = t.
getDataHora().
format(HORA_FORMATTER
);
serie.
set(hora, acumulado
);
}
}
plDiaChart.
addSeries(serie
);
plDiaChart.
setTitle("P/L Acumulado no Dia");
plDiaChart.
setLegendPosition("e");
plDiaChart.
setAnimate(true);
Axis xAxis = plDiaChart.
getAxis(AxisType.
X);
xAxis.
setLabel("Hora");
Axis yAxis = plDiaChart.
getAxis(AxisType.
Y);
yAxis.
setLabel("P/L");
}
public double getPlDia
() {
return plDia
;
}
public int getNumeroTrades
() {
return numeroTrades
;
}
public double getTaxaAcerto
() {
return taxaAcerto
;
}
public List<TradeDTO
> getTradesDoDia
() {
return tradesDoDia
;
}
public LineChartModel getPlDiaChart
() {
return plDiaChart
;
}
}