Skip to content

Instantly share code, notes, and snippets.

@rmgimenez
Created July 14, 2016 18:43
Show Gist options
  • Save rmgimenez/19f8fa792fc97e96f7f091ddfd67cd8f to your computer and use it in GitHub Desktop.
Save rmgimenez/19f8fa792fc97e96f7f091ddfd67cd8f to your computer and use it in GitHub Desktop.
Le o arquivo de cotação da bovespa e exporta para o metastock
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package bovespa;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
*
* @author rgimenez
*/
public final class Cotacao
{
private String simbolo;
private Date dataPregao;
private double precoAbertura;
private double precoMaximo;
private double precoMinimo;
private double precoFechamento;
private double volume;
public Cotacao()
{
}
public Cotacao(String simbolo, Date dataPregao, double precoAbertura, double precoMaximo, double precoMinimo, double precoFechamento, double volume)
{
this.setSimbolo(simbolo);
this.setDataPregao(dataPregao);
this.setPrecoAbertura(precoAbertura);
this.setPrecoFechamento(precoFechamento);
this.setPrecoMaximo(precoMaximo);
this.setPrecoMinimo(precoMinimo);
this.setVolume(volume);
}
/*
Recebe como parâmetro a linha do arquivo de cotações da Bovespa
Exemplo: 012016010402AAPL34 010APPLE DRN R$ 000000000415000000000042200000000004150000000000421300000000042080000000003950000000000435000005000000000000012500000000000052664400000000000000009999123100000010000000000000BRAAPLBDR004115
*/
public Cotacao(String linha) throws ParseException
{
this.setSimbolo(linha.substring(12, 24).trim());
this.setDataPregao(formataData(linha.substring(2, 10)));
this.setPrecoAbertura(formataNumero(linha.substring(56, 69), 2));
this.setPrecoMaximo(formataNumero(linha.substring(69, 82), 2));
this.setPrecoMinimo(formataNumero(linha.substring(82, 95), 2));
this.setPrecoFechamento(formataNumero(linha.substring(108, 121), 2));
this.setVolume(formataNumero(linha.substring(152, 170), 0));
}
public String toMetaStock()
{
// <ticker>, <per>, <date>, <time>, <open>, <high>, <low>, <close>, <vol>, <o/i>
return this.getSimbolo() + "," + "D" + "," + this.getDataPregaoMetaStrock() + "," + "00:00"
+ "," + this.getPrecoAbertura() + "," + this.getPrecoMaximo()
+ "," + this.getPrecoMinimo() + "," + this.getPrecoFechamento()
+ "," + (int) this.getVolume() + "," + "0";
}
private double formataNumero(String numero, int casasDecimais)
{
int divisor = (int) Math.pow(10, casasDecimais);
return Double.parseDouble(numero) / divisor;
}
private String getDataPregaoMetaStrock()
{
SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
return df.format(this.getDataPregao());
}
@Override
public String toString()
{
return "Símbolo = " + this.getSimbolo() + "\n"
+ "Data = " + this.getDataPregao() + "\n"
+ "Data Metastock = " + this.getDataPregaoMetaStrock() + "\n"
+ "Preço de abertura = " + this.getPrecoAbertura() + "\n"
+ "Preço Máximo = " + this.getPrecoMaximo() + "\n"
+ "Preço Mínimo = " + this.getPrecoMinimo() + "\n"
+ "Preço Fechamento = " + this.getPrecoFechamento() + "\n"
+ "Volume = " + (int) this.getVolume();
}
private Date formataData(String data) throws ParseException
{
try
{
DateFormat formatter = new SimpleDateFormat("yyyyMMdd");
Date date = (Date) formatter.parse(data);
return date;
} catch (ParseException e)
{
throw e;
}
}
/**
* @return the simbolo
*/
public String getSimbolo()
{
return simbolo;
}
/**
* @param simbolo the simbolo to set
*/
public void setSimbolo(String simbolo)
{
this.simbolo = simbolo;
}
/**
* @return the dataPregao
*/
public Date getDataPregao()
{
return dataPregao;
}
/**
* @param dataPregao the dataPregao to set
*/
public void setDataPregao(Date dataPregao)
{
this.dataPregao = dataPregao;
}
/**
* @return the precoAbertura
*/
public double getPrecoAbertura()
{
return precoAbertura;
}
/**
* @param precoAbertura the precoAbertura to set
*/
public void setPrecoAbertura(double precoAbertura)
{
this.precoAbertura = precoAbertura;
}
/**
* @return the precoMaximo
*/
public double getPrecoMaximo()
{
return precoMaximo;
}
/**
* @param precoMaximo the precoMaximo to set
*/
public void setPrecoMaximo(double precoMaximo)
{
this.precoMaximo = precoMaximo;
}
/**
* @return the precoMinimo
*/
public double getPrecoMinimo()
{
return precoMinimo;
}
/**
* @param precoMinimo the precoMinimo to set
*/
public void setPrecoMinimo(double precoMinimo)
{
this.precoMinimo = precoMinimo;
}
/**
* @return the precoFechamento
*/
public double getPrecoFechamento()
{
return precoFechamento;
}
/**
* @param precoFechamento the precoFechamento to set
*/
public void setPrecoFechamento(double precoFechamento)
{
this.precoFechamento = precoFechamento;
}
/**
* @return the volume
*/
public double getVolume()
{
return volume;
}
/**
* @param volume the volume to set
*/
public void setVolume(double volume)
{
this.volume = volume;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment