Created
July 14, 2016 18:43
-
-
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
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* 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