public List<Candle> constroiCandles(List<Negociacao> todasNegociacoes) { List<Candle> candles = new ArrayList<Candle>(); List<Negociacao> negociacaoDoDia = new ArrayList<Negociacao>(); Calendar dataAtual = todasNegociacoes.get(0).getData(); for (Negociacao negociacao : todasNegociacoes) { if (!negociacao.isMesmoDia(dataAtual)) { Candle candleDoDia = constroiCandleParaData(dataAtual, negociacaoDoDia); candles.add(candleDoDia); negociacaoDoDia = new ArrayList<Negociacao>(); dataAtual = negociacao.getData(); } negociacaoDoDia.add(negociacao); } Candle candleDoDia = constroiCandleParaData(dataAtual, negociacaoDoDia); candles.add(candleDoDia); return candles; }
@Test public void mesmoDiaEMesMasAnosDiferentesNaoSaoDoMesmoDia() { Calendar maio2011 = new GregorianCalendar(2011, 4, 20); Calendar maio2012 = new GregorianCalendar(2012, 4, 20); Negociacao negociacao = new Negociacao(40.0, 100, maio2011); Assert.assertFalse(negociacao.isMesmoDia(maio2012)); }
@Test public void mesmoDiaMasMesesDiferentesNaoSaoDoMesmoDia() { Calendar junho = new GregorianCalendar(2011, 5, 20); Calendar setembro = new GregorianCalendar(2011, 8, 20); Negociacao negociacao = new Negociacao(40.0, 100, junho); Assert.assertFalse(negociacao.isMesmoDia(setembro)); }
@Test public void mesmoMilissegundoEhDoMesmoDia() { Calendar agora = Calendar.getInstance(); Calendar mesmoMomento = (Calendar) agora.clone(); Negociacao negociacao = new Negociacao(40.0, 100, agora); Assert.assertTrue(negociacao.isMesmoDia(mesmoMomento)); }
@Test public void comHorariosDiferentesEhNoMesmoDia() { // usando GregorianCalendar(ano, mes, dia, hora, minuto) Calendar manha = new GregorianCalendar(2011, 10, 20, 8, 30); Calendar tarde = new GregorianCalendar(2011, 10, 20, 15, 30); Negociacao negociacao = new Negociacao(40.0, 100, manha); Assert.assertTrue(negociacao.isMesmoDia(tarde)); }
@Test public void dataDaNegociacaoEhImutavel() { Calendar data = Calendar.getInstance(); data.set(Calendar.DAY_OF_MONTH, 15); Negociacao negociacao = new Negociacao(10, 5, data); negociacao.getData().set(Calendar.DAY_OF_MONTH, 20); Assert.assertEquals(15, negociacao.getData().get(Calendar.DAY_OF_MONTH)); }
public List<Candle> constroiCandles(List<Negociacao> todasNegociacoes) { List<Candle> candles = new ArrayList<Candle>(); List<Negociacao> negociacoesDoDia = new ArrayList<Negociacao>(); Calendar dataAtual = todasNegociacoes.get(0).getData(); for (Negociacao negociacao : todasNegociacoes) { if (!negociacao.isMesmoDia(dataAtual)) { criaEGuardaCandle(candles, negociacoesDoDia, dataAtual); negociacoesDoDia = new ArrayList<Negociacao>(); dataAtual = negociacao.getData(); } negociacoesDoDia.add(negociacao); } criaEGuardaCandle(candles, negociacoesDoDia, dataAtual); return candles; }
public List<Candle> constroiCandles(List<Negociacao> todasNegociacoes) { List<Candle> candles = new ArrayList<Candle>(); List<Negociacao> negociacoesDoDia = new ArrayList<Negociacao>(); Calendar dataAtual = todasNegociacoes.get(0).getData(); for (Negociacao negociacao : todasNegociacoes) { // se não for mesmo dia, fecha candle e reinicia variáveis if (!negociacao.isMesmoDia(dataAtual)) { criaEGuardaCandle(candles, negociacoesDoDia, dataAtual); negociacoesDoDia = new ArrayList<Negociacao>(); dataAtual = negociacao.getData(); } negociacoesDoDia.add(negociacao); } // adiciona último candle criaEGuardaCandle(candles, negociacoesDoDia, dataAtual); return candles; }
public Candlestick constroiCandleParaData(Calendar data, List<Negociacao> negociacoes) { double maximo = negociacoes.get(0).getPreco(); double minimo = negociacoes.get(0).getPreco(); double volume = 0; for (Negociacao negociacao : negociacoes) { volume += negociacao.getVolume(); if (negociacao.getPreco() > maximo) { maximo = negociacao.getPreco(); } else if (negociacao.getPreco() < minimo) { minimo = negociacao.getPreco(); } } double abertura = negociacoes.get(0).getPreco(); double fechamento = negociacoes.get(negociacoes.size() - 1).getPreco(); return new Candlestick(abertura, fechamento, minimo, maximo, volume, data); }
public Candle constroiCandleParaData(Calendar data, List<Negociacao> negocios) { double maximo = Double.MIN_VALUE; double minimo = Double.MAX_VALUE; double volume = 0; for (Negociacao negocio : negocios) { volume += negocio.getVolume(); double preco = negocio.getPreco(); if (preco > maximo) { maximo = preco; } if (preco < minimo) { minimo = preco; } } double abertura = negocios.isEmpty() ? 0 : negocios.get(0).getPreco(); double fechamento = negocios.isEmpty() ? 0 : negocios.get(negocios.size() - 1).getPreco(); return new Candle(abertura, fechamento, minimo, maximo, volume, data); }