bovespa 0.5.5 → 0.5.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +4 -4
- data/bovespa.gemspec +2 -2
- data/lib/bovespa/cotacao.rb +5 -5
- data/lib/bovespa/historico.rb +30 -29
- data/tests/historico_spec.rb +17 -14
- metadata +22 -23
data/README.rdoc
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
== BOVESPA
|
2
2
|
É uma biblioteca ruby para lidar com a bolsa de valores Bovespa. Ela está dividade em duas classes:
|
3
|
-
* Cotacao - Para obter a cotação de papéis pelo serviço gratuito da bolsa de valores (com
|
3
|
+
* Cotacao - Para obter a cotação de papéis pelo serviço gratuito da bolsa de valores (com delay de 15 min)
|
4
4
|
* Historico - Para ler os arquivos de posição da Série Histórica da Bovespa.
|
5
5
|
|
6
6
|
Ainda não testado no Ruby 1.9
|
7
7
|
|
8
8
|
=== Bovespa::Cotacao
|
9
|
-
Para usar, faça uma classe que herde de Bovespa::Cotacao. Ao instanciar
|
9
|
+
Para usar, faça uma classe que herde de Bovespa::Cotacao. Ao instanciar um objeto, ele automaticamente ganhará os atributos correspondentes ao papel. Veja o exemplo de uso.
|
10
10
|
|
11
11
|
class MinhaClasse < Bovespa::Cotacao
|
12
12
|
end
|
@@ -35,7 +35,7 @@ http://marcofnogueira.wordpress.com/2010/12/01/cotacoes-das-acoes-na-bolsa-de-va
|
|
35
35
|
|
36
36
|
===Bovespa::Historico
|
37
37
|
|
38
|
-
Para ler os arquivos de posição da Série Histórica, faça sua classe herdar de Bovespa::Historico, e acesse os valores de cada papel, como no exemplo. Cada arquivo representa um dia com informações
|
38
|
+
Para ler os arquivos de posição da Série Histórica, faça sua classe herdar de Bovespa::Historico, e acesse os valores de cada papel, como no exemplo. Cada arquivo representa um dia com informações sobre todos os papéis.
|
39
39
|
|
40
40
|
class OutraClasse < Bovespa::Historico
|
41
41
|
end
|
@@ -46,7 +46,7 @@ Para ler os arquivos de posição da Série Histórica, faça sua classe herdar
|
|
46
46
|
dia.petr4["codneg"]
|
47
47
|
dia.petr4["preabre"]
|
48
48
|
|
49
|
-
Para um lista com
|
49
|
+
Para um lista com todos as opções de informação disponivel, consulte o código:
|
50
50
|
https://github.com/marcofognog/bovespa/blob/master/lib/bovespa/historico.rb
|
51
51
|
|
52
52
|
E não deixe de ler o leiaute dos arquivos:
|
data/bovespa.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'bovespa'
|
3
|
-
s.version = '0.5.
|
3
|
+
s.version = '0.5.6'
|
4
4
|
s.summary = 'Biblioteca Ruby para ler arquivos da Série Histórica da Bovespa e obter cotção direto na Bovespa.'
|
5
5
|
s.description = 'Biblioteca Ruby para ler arquivos da Série Histórica da Bovespa e obter cotção direto na Bovespa usando o serviço gratuito.'
|
6
6
|
s.files = `git ls-files`.split("\n")
|
@@ -9,7 +9,7 @@ Gem::Specification.new do |s|
|
|
9
9
|
s.authors = ["Marco Antonio Fogaça Nogueira"]
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.3.7")
|
11
11
|
s.add_dependency('nokogiri', '>= 1.4.4')
|
12
|
-
s.add_dependency('posifile', '>=0.2.
|
12
|
+
s.add_dependency('posifile', '>=0.2.5')
|
13
13
|
s.email = ["marcofognog@gmail.com"]
|
14
14
|
s.require_paths = ["lib"]
|
15
15
|
end
|
data/lib/bovespa/cotacao.rb
CHANGED
@@ -6,26 +6,25 @@ module Bovespa
|
|
6
6
|
attr_accessor :raw_attributes
|
7
7
|
|
8
8
|
def initialize(nome_do_ativo)
|
9
|
-
uri = URI.parse("http://www.bmfbovespa.com.br/cotacoes2000/formCotacoesMobile.asp?codsocemi="+nome_do_ativo)
|
9
|
+
uri = URI.parse("http://www.bmfbovespa.com.br/cotacoes2000/formCotacoesMobile.asp?codsocemi=" + nome_do_ativo)
|
10
10
|
res = Net::HTTP.start(uri.host, uri.port) do |http|
|
11
|
-
http.get("/cotacoes2000/formCotacoesMobile.asp?codsocemi="+nome_do_ativo)
|
11
|
+
http.get("/cotacoes2000/formCotacoesMobile.asp?codsocemi=" + nome_do_ativo)
|
12
12
|
end
|
13
13
|
xml = Nokogiri::XML(res.body)
|
14
14
|
raw_attr = {}
|
15
15
|
xml.css("PAPEL").each do |node|
|
16
|
-
|
16
|
+
@raw_attributes = node
|
17
17
|
end
|
18
18
|
create_attributes
|
19
19
|
end
|
20
20
|
|
21
21
|
def create_attributes
|
22
|
-
attr_list = ["codigo", "delay", "data", "hora", "oscilacao", "valor_ultimo", "quant_neg", "mercado","descricao"]
|
22
|
+
attr_list = ["codigo", "delay", "data", "hora", "oscilacao", "valor_ultimo", "quant_neg", "mercado", "descricao"]
|
23
23
|
attr_list.each do |method_name|
|
24
24
|
self.instance_eval("def #{method_name}; @raw_attributes['#{method_name.upcase}']; end")
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
|
-
# more attributes
|
29
28
|
def ultimo_valor
|
30
29
|
valor_ultimo
|
31
30
|
end
|
@@ -37,5 +36,6 @@ module Bovespa
|
|
37
36
|
return false
|
38
37
|
end
|
39
38
|
end
|
39
|
+
|
40
40
|
end
|
41
41
|
end
|
data/lib/bovespa/historico.rb
CHANGED
@@ -2,46 +2,47 @@
|
|
2
2
|
|
3
3
|
require 'rubygems'
|
4
4
|
require 'posifile'
|
5
|
+
|
5
6
|
module Bovespa
|
6
|
-
class Historico< Posifile
|
7
|
+
class Historico < Posifile
|
7
8
|
|
8
|
-
lines_where(0..1,"00") do # header
|
9
|
-
set_specification("nome_do_arquivo"=>2..14,"codigo_de_origem"=>15..22,"data_de_geracao_do_arquivo"=>23..30)
|
9
|
+
lines_where(0..1, "00") do # header
|
10
|
+
set_specification("nome_do_arquivo" => 2..14, "codigo_de_origem" => 15..22, "data_de_geracao_do_arquivo" => 23..30)
|
10
11
|
end
|
11
12
|
|
12
13
|
lines_where(0..1,"01") do # Atriutos dos ativos
|
13
14
|
set_specification( "codneg" => 12..23,
|
14
|
-
"data_do_pregao"=>2..9,
|
15
|
+
"data_do_pregao" => 2..9,
|
15
16
|
"coddbi" => 10..11,
|
16
|
-
"tpmerc"=>24..26,
|
17
|
-
"nomres"=>27..38,
|
18
|
-
"especi"=>39..48,
|
19
|
-
"prazot"=>49..51,
|
20
|
-
"modref"=>52..55,
|
21
|
-
"preabre"=>56..68,
|
22
|
-
"premax"=>69..81,
|
23
|
-
"premin"=>82..94,
|
24
|
-
"premed"=>95..107,
|
25
|
-
"preult"=>108..120,
|
26
|
-
"preofc"=>121..133,
|
27
|
-
"preofv"=>134..146,
|
28
|
-
"totneg"=>147..151,
|
29
|
-
"quatot"=>152..169,
|
30
|
-
"voltot"=>170..187,
|
31
|
-
"preexe"=>188..200,
|
32
|
-
"indopc"=>201..201,
|
33
|
-
"datven"=>202..209, # AAAAMMDD
|
34
|
-
"fatcot"=>210..216,
|
35
|
-
"ptoexe"=>217..229,
|
36
|
-
"codisi"=>230..241,
|
37
|
-
"dismes"=>242..244
|
17
|
+
"tpmerc" => 24..26,
|
18
|
+
"nomres" => 27..38,
|
19
|
+
"especi" => 39..48,
|
20
|
+
"prazot" => 49..51,
|
21
|
+
"modref" => 52..55,
|
22
|
+
"preabre" => 56..68,
|
23
|
+
"premax" => 69..81,
|
24
|
+
"premin" => 82..94,
|
25
|
+
"premed" => 95..107,
|
26
|
+
"preult" => 108..120,
|
27
|
+
"preofc" => 121..133,
|
28
|
+
"preofv" => 134..146,
|
29
|
+
"totneg" => 147..151,
|
30
|
+
"quatot" => 152..169,
|
31
|
+
"voltot" => 170..187,
|
32
|
+
"preexe" => 188..200,
|
33
|
+
"indopc" => 201..201,
|
34
|
+
"datven" => 202..209, # AAAAMMDD
|
35
|
+
"fatcot" => 210..216,
|
36
|
+
"ptoexe" => 217..229,
|
37
|
+
"codisi" => 230..241,
|
38
|
+
"dismes" => 242..244
|
38
39
|
)
|
39
40
|
set_attr_name :codneg
|
40
41
|
end
|
41
42
|
|
42
|
-
lines_where(0..1,"99") do # trailer
|
43
|
-
set_specification("nome_do_arquivo_trailer"=>2..14,"codigo_de_origem_trailer"=>15..22,
|
44
|
-
"data_de_geracao_do_arquivo_trailer"=>23..30,"total_de_registros"=>31..42)
|
43
|
+
lines_where(0..1, "99") do # trailer
|
44
|
+
set_specification("nome_do_arquivo_trailer" => 2..14, "codigo_de_origem_trailer" => 15..22,
|
45
|
+
"data_de_geracao_do_arquivo_trailer" => 23..30, "total_de_registros" => 31..42)
|
45
46
|
end
|
46
47
|
|
47
48
|
end
|
data/tests/historico_spec.rb
CHANGED
@@ -5,22 +5,25 @@ class MyClass < Bovespa::Historico
|
|
5
5
|
end
|
6
6
|
|
7
7
|
describe MyClass do
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
historico.data_de_geracao_do_arquivo.should eq("20040531")
|
13
|
-
end
|
8
|
+
context "given a position file" do
|
9
|
+
before do
|
10
|
+
@historico = MyClass.new("DemoCotacoesHistoricas12022003.txt")
|
11
|
+
end
|
14
12
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
13
|
+
it "should give information about the header" do
|
14
|
+
@historico.nome_do_arquivo.should eq("COTAHIST.2003")
|
15
|
+
@historico.codigo_de_origem.should eq("BOVESPA")
|
16
|
+
@historico.data_de_geracao_do_arquivo.should eq("20040531")
|
17
|
+
end
|
19
18
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
19
|
+
it "should get the code of the asset" do
|
20
|
+
@historico.vale5["codneg"].should eq("VALE5")
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should return a list of every asset turned into attribute" do
|
24
|
+
@historico.pos_attributes.length.should be > 478
|
25
|
+
end
|
26
|
+
end
|
24
27
|
|
25
28
|
it "should have valid specified fields" do
|
26
29
|
MyClass.valid_specification?.should be true
|
metadata
CHANGED
@@ -1,40 +1,39 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bovespa
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
4
|
+
prerelease:
|
5
|
+
version: 0.5.6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Marco Antonio Fogaça Nogueira
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-02-
|
12
|
+
date: 2012-02-26 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: nokogiri
|
16
|
-
|
17
|
-
none: false
|
16
|
+
version_requirements: &2056 !ruby/object:Gem::Requirement
|
18
17
|
requirements:
|
19
18
|
- - ! '>='
|
20
19
|
- !ruby/object:Gem::Version
|
21
20
|
version: 1.4.4
|
22
|
-
|
21
|
+
none: false
|
22
|
+
requirement: *2056
|
23
23
|
prerelease: false
|
24
|
-
|
24
|
+
type: :runtime
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: posifile
|
27
|
-
|
28
|
-
none: false
|
27
|
+
version_requirements: &2074 !ruby/object:Gem::Requirement
|
29
28
|
requirements:
|
30
29
|
- - ! '>='
|
31
30
|
- !ruby/object:Gem::Version
|
32
|
-
version: 0.2.
|
33
|
-
|
31
|
+
version: 0.2.5
|
32
|
+
none: false
|
33
|
+
requirement: *2074
|
34
34
|
prerelease: false
|
35
|
-
|
36
|
-
description: Biblioteca Ruby para ler arquivos da Série Histórica da Bovespa e obter
|
37
|
-
cotção direto na Bovespa usando o serviço gratuito.
|
35
|
+
type: :runtime
|
36
|
+
description: Biblioteca Ruby para ler arquivos da Série Histórica da Bovespa e obter cotção direto na Bovespa usando o serviço gratuito.
|
38
37
|
email:
|
39
38
|
- marcofognog@gmail.com
|
40
39
|
executables: []
|
@@ -53,27 +52,27 @@ files:
|
|
53
52
|
- tests/historico_spec.rb
|
54
53
|
homepage: http://github.com/marcofognog/bovespa
|
55
54
|
licenses: []
|
56
|
-
post_install_message:
|
55
|
+
post_install_message:
|
57
56
|
rdoc_options: []
|
58
57
|
require_paths:
|
59
58
|
- lib
|
60
59
|
required_ruby_version: !ruby/object:Gem::Requirement
|
61
|
-
none: false
|
62
60
|
requirements:
|
63
61
|
- - ! '>='
|
64
62
|
- !ruby/object:Gem::Version
|
65
63
|
version: '0'
|
66
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
67
64
|
none: false
|
65
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
68
66
|
requirements:
|
69
67
|
- - ! '>='
|
70
68
|
- !ruby/object:Gem::Version
|
71
69
|
version: 1.3.7
|
70
|
+
none: false
|
72
71
|
requirements: []
|
73
|
-
rubyforge_project:
|
74
|
-
rubygems_version: 1.8.
|
75
|
-
signing_key:
|
72
|
+
rubyforge_project:
|
73
|
+
rubygems_version: 1.8.15
|
74
|
+
signing_key:
|
76
75
|
specification_version: 3
|
77
|
-
summary: Biblioteca Ruby para ler arquivos da Série Histórica da Bovespa e obter cotção
|
78
|
-
direto na Bovespa.
|
76
|
+
summary: Biblioteca Ruby para ler arquivos da Série Histórica da Bovespa e obter cotção direto na Bovespa.
|
79
77
|
test_files: []
|
78
|
+
...
|