Subversion Repositories Integrator Subversion

Rev

Blame | Last modification | View Log | Download | RSS feed

package br.com.sl.domain.dto;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;

import br.com.ec.core.util.VerificadorUtil;
import br.com.kronus.core.PadraoGatilho;
import br.com.kronus.core.PadraoGatilho.TipoPadrao;
import br.com.kronus.strategy.ResultadoEstrategiaGatilho3;
import br.com.sl.domain.dto.robo.SinalTradeGatilho3;
import br.com.sl.domain.model.Ativo;
import br.com.sl.domain.model.Candle;
import br.com.sl.domain.model.tipos.TipoFonteDadosProfit;

public class SinaisResultadoDTO {
       
        private TipoFonteDadosProfit tipoFonteSelecionada;
       
        private List<String> logs;
        private List<Ativo> ativosAnalisados;
        private List<Candle> candlesAnalisados;
       
        private List<PadraoGatilho> padroes;
        private List<PadraoGatilho> padroesAteG2;
        private List<PadraoGatilho> padroesComG3;
        private List<SinalTradeGatilho3> sinaisTradeGatilho3;
        private List<ResultadoEstrategiaGatilho3> resultados;
       
        private String observacoes;

        public SinaisResultadoDTO() {
                this.ativosAnalisados = new ArrayList<Ativo>();
                this.candlesAnalisados = new ArrayList<Candle>();
                this.padroes = new ArrayList<PadraoGatilho>();
                this.sinaisTradeGatilho3 = new ArrayList<SinalTradeGatilho3>();
                this.resultados = new ArrayList<ResultadoEstrategiaGatilho3>();
                this.logs = new ArrayList<String>();
                this.tipoFonteSelecionada = TipoFonteDadosProfit.ARQUIVOS_CSV;
        }
       
        public TipoFonteDadosProfit getTipoFonteSelecionada() {
                return tipoFonteSelecionada;
        }
        public void setTipoFonteSelecionada(TipoFonteDadosProfit tipoFonteSelecionada) {
                this.tipoFonteSelecionada = tipoFonteSelecionada;
        }
       
        public List<String> getLogs() {
                return logs;
        }
        public void setLogs(List<String> logs) {
                this.logs = logs;
        }
        public String getLogsBacktestAsText() {
            if (logs == null || logs.isEmpty()) return "";
            return String.join("\n", logs);
        }
       
        public List<Ativo> getAtivosAnalisados() {
                return ativosAnalisados;
        }
        public void setAtivosAnalisados(List<Ativo> ativosAnalisados) {
                this.ativosAnalisados = ativosAnalisados;
        }
       
        public List<Candle> getCandlesAnalisados() {
                return candlesAnalisados;
        }
        public void setCandlesAnalisados(List<Candle> candlesAnalisados) {
                this.candlesAnalisados = candlesAnalisados;
        }
       
        public void adicionarAtivoNaLista(Ativo ativo) {
                if (VerificadorUtil.naoEstaNulo(ativo)) {
                        if (getAtivosAnalisados().indexOf(ativo) <= 0) {
                                getAtivosAnalisados().add(ativo);
                        }
                }
        }
       
        public List<PadraoGatilho> getPadroes() {
                return padroes;
        }
        public void setPadroes(List<PadraoGatilho> padroes) {
                this.padroes = padroes;
        }
       
        public List<PadraoGatilho> getPadroesAteG2() {
                return padroesAteG2;
        }
        public void setPadroesAteG2(List<PadraoGatilho> padroesAteG2) {
                this.padroesAteG2 = padroesAteG2;
        }
       
        public List<PadraoGatilho> getPadroesComG3() {
                return padroesComG3;
        }
        public void setPadroesComG3(List<PadraoGatilho> padroesComG3) {
                this.padroesComG3 = padroesComG3;
        }
       
        public List<SinalTradeGatilho3> getSinaisTradeGatilho3() {
                return sinaisTradeGatilho3;
        }
        public void setSinaisTradeGatilho3(List<SinalTradeGatilho3> sinaisTradeGatilho3) {
                this.sinaisTradeGatilho3 = sinaisTradeGatilho3;
        }
       
        public List<ResultadoEstrategiaGatilho3> getResultados() {
                return resultados;
        }
        public void setResultados(List<ResultadoEstrategiaGatilho3> resultados) {
                this.resultados = resultados;
        }
       
        public String getObservacoes() {
                return observacoes;
        }
        public void setObservacoes(String observacoes) {
                this.observacoes = observacoes;
        }
       
        public Boolean verificarSeAtivoConstaNaLista(String nomeAtivo) {
                for (Ativo ativo: getAtivosAnalisados()) {
                        if (ativo.getNome().equals(nomeAtivo)) {
                                return true;
                        }
                }
                return false;
        }

        public void adicionarCandleNaLista(Candle candle) {
                getCandlesAnalisados().add(candle);
        }
       
        public void preencherOutrosPadroes() {
        padroesComG3 = padroes.stream()
                .filter(p -> p.getTipoPadrao() == TipoPadrao.COMPLETO_G3)
                .collect(Collectors.toList());
        padroesComG3 = inverterLista(padroesComG3);

        padroesAteG2 = padroes.stream()
                        .filter(p -> p.getTipoPadrao() == TipoPadrao.PARCIAL_G2)
                .collect(Collectors.toList());
        padroesAteG2 = inverterLista(padroesAteG2);
        }
       
        public static List<PadraoGatilho> inverterLista(List<PadraoGatilho> candles) {
        List<PadraoGatilho> invertida = new ArrayList<>(candles);
        Collections.reverse(invertida);
        return invertida;
    }
       
}