finexclub 0.5.1 → 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.1
1
+ 0.5.2
data/finexclub.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{finexclub}
8
- s.version = "0.5.1"
8
+ s.version = "0.5.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Alex Levin"]
@@ -27,12 +27,19 @@ module Finexclub
27
27
  def self.build_new(core, symbol, tf, time)
28
28
  time = time.is_a?(Time) ? time : Time.at(time).utc
29
29
 
30
+ delta = self.timeframe_delta(tf)
31
+ starts = Time.utc(time.year, time.month, time.day, (time.hour/delta)*delta, 0)
32
+ expires = Chronic.parse("#{delta} hours from now", :now => starts)
33
+
34
+ #c.starts = Time.utc(time.year, time.month, time.day, time.hour, 0).to_i
35
+ #c.expires = c.starts + 1*60*60
36
+
30
37
  c = Chart.new(core)
31
38
  c.updated= time.to_i
32
39
  c.symbol= symbol
33
40
  c.timeframe = tf
34
- c.starts = Time.utc(time.year, time.month, time.day, time.hour, 0).to_i
35
- c.expires = c.starts + 1*60*60
41
+ c.starts = starts.to_i
42
+ c.expires = expires.to_i
36
43
  c
37
44
  end
38
45
 
@@ -66,5 +73,14 @@ module Finexclub
66
73
  indicator_handler :zeta, Finexclub::Signals::Zeta
67
74
  indicator_handler :octopus, Finexclub::Signals::Octopus
68
75
  indicator_handler :prognosis, Finexclub::Signals::Prognosis
76
+
77
+ def self.timeframe_delta(tf)
78
+ case tf
79
+ when 'h1', :h1 then 1
80
+ when 'h4', :h4 then 4
81
+ when 'd1', :d1 then 24
82
+ end
83
+ end
84
+
69
85
  end
70
86
  end
@@ -88,22 +88,59 @@ describe 'Finexclub::Chart' do
88
88
  end
89
89
 
90
90
  describe 'Chart.build_new(symbol, tf, time)' do
91
- before do
92
- @chart = Finexclub::Chart.build_new(@core, 'eurusd', 'h1', Time.utc(2010, 12, 27, 11, 30).to_i)
93
- end
91
+ describe 'h1 timeframe' do
92
+ it 'should return valid new (unsaved) chart instance' do
93
+ chart = Finexclub::Chart.build_new(@core, 'eurusd', 'h1', Time.utc(2010, 12, 27, 11, 30).to_i)
94
+ chart._id.should == nil
95
+ chart.symbol.should == 'eurusd'
96
+ chart.timeframe.should == 'h1'
97
+ chart.starts.should == Time.utc(2010, 12, 27, 11, 0).to_i
98
+ chart.expires.should == Time.utc(2010, 12, 27, 12, 0).to_i
99
+ chart.updated.should == Time.utc(2010, 12, 27, 11, 30).to_i
100
+ chart.indicators.should == {}
101
+ end
94
102
 
95
- it 'should return valid new (unsaved) chart instance' do
96
- @chart._id.should == nil
97
- @chart.symbol.should == 'eurusd'
98
- @chart.timeframe.should == 'h1'
99
- @chart.starts.should == Time.utc(2010, 12, 27, 11, 0).to_i
100
- @chart.expires.should == Time.utc(2010, 12, 27, 12, 0).to_i
101
- @chart.updated.should == Time.utc(2010, 12, 27, 11, 30).to_i
102
- @chart.indicators.should == {}
103
+ it 'should build valid chart given time as Time object' do
104
+ Finexclub::Chart.build_new(@core, 'eurusd', 'h1', Time.utc(2010, 12, 27, 11, 30)).starts.should == Time.utc(2010, 12, 27, 11, 0).to_i
105
+ end
103
106
  end
104
107
 
105
- it 'should build valid chart given time as Time object' do
106
- Finexclub::Chart.build_new(@core, 'eurusd', 'h1', Time.utc(2010, 12, 27, 11, 30)).starts.should == Time.utc(2010, 12, 27, 11, 0).to_i
108
+ {
109
+ :h1 => {
110
+ [2010, 12, 27, 00, 00] => [[2010, 12, 27, 00, 00], [2010, 12, 27, 01, 00]],
111
+ [2010, 12, 27, 03, 07] => [[2010, 12, 27, 03, 00], [2010, 12, 27, 04, 00]],
112
+ [2010, 12, 27, 16, 37] => [[2010, 12, 27, 16, 00], [2010, 12, 27, 17, 00]],
113
+ [2010, 12, 27, 23, 59] => [[2010, 12, 27, 23, 00], [2010, 12, 28, 00, 00]]
114
+ },
115
+ :h4 => {
116
+ [2010, 12, 27, 00, 00] => [[2010, 12, 27, 00, 00], [2010, 12, 27, 04, 00]],
117
+ [2010, 12, 27, 03, 07] => [[2010, 12, 27, 00, 00], [2010, 12, 27, 04, 00]],
118
+ [2010, 12, 27, 16, 37] => [[2010, 12, 27, 16, 00], [2010, 12, 27, 20, 00]],
119
+ [2010, 12, 27, 23, 59] => [[2010, 12, 27, 20, 00], [2010, 12, 28, 00, 00]]
120
+ },
121
+ :d1 => {
122
+ [2010, 12, 27, 00, 00] => [[2010, 12, 27, 00, 00], [2010, 12, 28, 00, 00]],
123
+ [2010, 12, 27, 03, 07] => [[2010, 12, 27, 00, 00], [2010, 12, 28, 00, 00]],
124
+ [2010, 12, 27, 16, 37] => [[2010, 12, 27, 00, 00], [2010, 12, 28, 00, 00]],
125
+ [2010, 12, 27, 23, 59] => [[2010, 12, 27, 00, 00], [2010, 12, 28, 00, 00]]
126
+ }
127
+ }.each do |tf, time_table|
128
+ describe "#{tf} timeframe" do
129
+ time_table.each do |initial_time, tf_boundary|
130
+ time = Time.utc(*initial_time)
131
+ starts = Time.utc(*tf_boundary.first)
132
+ expires = Time.utc(*tf_boundary.last)
133
+
134
+ describe "chart at #{time}" do
135
+ it "should start at #{starts}, expire at #{expires}" do
136
+ chart = Finexclub::Chart.build_new(@core, 'eurusd', tf, time)
137
+ chart.starts.should == starts.to_i
138
+ chart.expires.should == expires.to_i
139
+ end
140
+ end
141
+ end
142
+
143
+ end
107
144
  end
108
145
 
109
146
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 5
8
- - 1
9
- version: 0.5.1
8
+ - 2
9
+ version: 0.5.2
10
10
  platform: ruby
11
11
  authors:
12
12
  - Alex Levin