grafix.graficos.eixos.EixoCandles.java Source code

Java tutorial

Introduction

Here is the source code for grafix.graficos.eixos.EixoCandles.java

Source

/*
  Copyright (C) 2001-2012, Joao Medeiros, Paulo Vilela (grafix2.com)
      
  Este arquivo  parte do programa Grafix2.com
      
  Grafix2.com  um software livre; voc pode redistribui-lo e/ou 
  modifica-lo dentro dos termos da Licena Pblica Geral GNU como 
  publicada pela Fundao do Software Livre (FSF); na verso 2 da 
  Licena.
    
  Este programa  distribuido na esperana que possa ser til, 
  mas SEM NENHUMA GARANTIA; sem uma garantia implicita de ADEQUAO a qualquer
  MERCADO ou APLICAO EM PARTICULAR. Veja a
  Licena Pblica Geral GNU para maiores detalhes.
    
  Voc deve ter recebido uma cpia da Licena Pblica Geral GNU
  junto com este programa, se no, veja uma cpia em
  <http://www.gnu.org/licenses/>
      
 */

package grafix.graficos.eixos;

import grafix.graficos.*;
import grafix.graficos.indices.*;
import grafix.principal.*;
import grafix.telas.*;
import java.awt.*;
import org.jfree.chart.axis.*;
import org.jfree.chart.plot.*;
import org.jfree.chart.renderer.xy.*;
import org.jfree.data.time.ohlc.*;
import org.jfree.data.xy.*;

public class EixoCandles extends Eixo {

    public EixoCandles() {
        this.setTamanho(3);
        this.setNomeEixo("candles");
        this.setGradeHorizontal(false);
    }

    protected void completarPlot(final XYPlot plot, final JanelaGraficos janela) {
        OHLCDataset dataCandles = criarOHLCDataset(janela);
        CandlestickRenderer candRenderer = new CandlestickRenderer();
        candRenderer.setUpPaint(Controle.getConfiguracoesUsuario().getCorCandlesAlta());
        candRenderer.setDownPaint(Controle.getConfiguracoesUsuario().getCorCandlesBaixa());
        candRenderer.setSeriesPaint(0, Color.black);
        candRenderer.setStroke(new BasicStroke(.75f));
        candRenderer.setToolTipGenerator(new CandlesToolTipGenerator(janela));
        plot.setDataset(indices.size(), dataCandles);
        plot.setRenderer(indices.size(), candRenderer);
        incluirMarcaIntraday(plot, janela);
    }

    @Override
    protected NumberAxis definirEixoVertical() {
        if (!Controle.getConfiguracoesVolateis().isLog()) {
            return new NumberAxis();
        } else {
            NumberAxis n = new LogarithmicAxis("Eixo logartmico");
            return n;
        }
    }

    private OHLCDataset criarOHLCDataset(JanelaGraficos janela) {
        //*debug*/ System.out.println("[CHAMADA] criarOHLCDataset()");
        OHLCSeries serie = new OHLCSeries(janela.getAcao().getCodAcao());
        IntervaloExibicao intervalo = janela.getIntervaloExibicao();
        for (int i = intervalo.getInicio(); i < intervalo.getFim(); i++) {
            RegistroDiario reg = janela.getAcao().getRegistro(i);
            serie.add(reg.getData(Controle.getConfiguracoesUsuario().isExibeSomenteDiasUteis()), reg.getOpen(),
                    reg.getHigh(), reg.getLow(), reg.getClose());
        }
        OHLCSeriesCollection dataset = new OHLCSeriesCollection();
        dataset.addSeries(serie);
        return dataset;
    }

    //    private void incluirMarcaIntraday(final XYPlot plot, final JanelaGraficos janela) {
    //        if (Controle.getConfiguracoesVolateis().isIntraday()) {
    //            MarcaGrafica m = new MarcaGrafica("", "INTRADAY",
    //                    janela.getAcao().getRegistro(janela.getAcao().getNumeroRegistros() - 1).getData(), Color.BLUE);
    //            if (m.isRangeMarker()) {
    //                if (getNomeEixo().equals(m.getNomeEixo())) {
    //                    plot.addRangeMarker(gerarRangeMarker(m));
    //                }
    //            } else {
    //                plot.addDomainMarker(gerarIntervalMarker(m, janela));
    //            }
    //        }
    //    }
}