cotcube-helpers 0.1.2 → 0.1.3
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -0
- data/VERSION +1 -1
- data/lib/cotcube-helpers.rb +2 -0
- data/lib/cotcube-helpers/reduce.rb +44 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cec4f9d660486e17a4ff9ef38f53ffd1a5089de00ecbcdadb016b80dbc4231f9
|
4
|
+
data.tar.gz: 90943be69de4e059082d49070741b9689cd714a5a88a4b8ead2dea74ab4f3017
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bf6306e1baaadfe9fa6f6b4533d2bfb0c31fc464ffa288368d3e47a22f76c1db7a1c48470aa83970e52752b4a911a7b60f759ee75495df43f093661274c13f0c
|
7
|
+
data.tar.gz: 6ea7ccc812fd160479f9519532669db81fbf4311fcb6335b841d738bcd81c86e922c994bb005e56c543b4cf0cd3f1d7a4a92db1ad7b52e5ac4d770c6932139cb
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
## 0.1.3 (December 22, 2020)
|
2
|
+
- added .reduce(bars: , to: ,*args, &block) to reduce a series of bars to a higher timeframe (though only 1hour and 1day are supported yet)
|
3
|
+
|
1
4
|
## 0.1.2 (December 21, 2020)
|
2
5
|
- minor changes
|
3
6
|
- minor fix to parallelize and application of positional arguments
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.3
|
data/lib/cotcube-helpers.rb
CHANGED
@@ -14,6 +14,7 @@ require_relative 'cotcube-helpers/subpattern.rb'
|
|
14
14
|
require_relative 'cotcube-helpers/parallelize'
|
15
15
|
require_relative 'cotcube-helpers/simple_output'
|
16
16
|
require_relative 'cotcube-helpers/input'
|
17
|
+
require_relative 'cotcube-helpers/reduce'
|
17
18
|
|
18
19
|
|
19
20
|
module Cotcube
|
@@ -21,6 +22,7 @@ module Cotcube
|
|
21
22
|
|
22
23
|
module_function :sub,
|
23
24
|
:parallelize,
|
25
|
+
:reduce,
|
24
26
|
:keystroke
|
25
27
|
|
26
28
|
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module Cotcube
|
2
|
+
module Helpers
|
3
|
+
def reduce(bars: , to: nil, datelike: :datetime, &block)
|
4
|
+
terminators = case to
|
5
|
+
when 1.day
|
6
|
+
[:last, :beginning_of_day]
|
7
|
+
when 1.hour
|
8
|
+
[:first, :beginning_of_hour]
|
9
|
+
else
|
10
|
+
raise ArgumentError, "Currently supported are reductions to '1.hour' and '1.day'"
|
11
|
+
end
|
12
|
+
determine_datelike = lambda {|ary| ary.send(terminators.first)[datelike].send(terminators.last) }
|
13
|
+
make_new_bar = lambda do |ary, date = nil|
|
14
|
+
result = {
|
15
|
+
symbol: ary.first[:symbol],
|
16
|
+
datetime: determine_datelike.call(ary),
|
17
|
+
day: ary.first[:day],
|
18
|
+
open: ary.first[:open],
|
19
|
+
high: ary.map{|x| x[:high]}.max,
|
20
|
+
low: ary.map{|x| x[:low]}.min,
|
21
|
+
close: ary.last[:close],
|
22
|
+
volume: ary.map{|x| x[:volume]}.reduce(:+)
|
23
|
+
}
|
24
|
+
result.map{|k,v| result.delete(k) if v.nil?}
|
25
|
+
result
|
26
|
+
end
|
27
|
+
collector = [ ]
|
28
|
+
final = [ ]
|
29
|
+
bars.each do |bar|
|
30
|
+
if collector.empty? or block.call(collector.last, bar)
|
31
|
+
collector << bar
|
32
|
+
else
|
33
|
+
new_bar = make_new_bar.call(collector)
|
34
|
+
final << new_bar
|
35
|
+
collector = [ bar ]
|
36
|
+
end
|
37
|
+
end
|
38
|
+
new_bar = make_new_bar.call(collector)
|
39
|
+
final << new_bar
|
40
|
+
final
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cotcube-helpers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Benjamin L. Tischendorf
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-12-
|
11
|
+
date: 2020-12-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -87,6 +87,7 @@ files:
|
|
87
87
|
- lib/cotcube-helpers/input.rb
|
88
88
|
- lib/cotcube-helpers/parallelize.rb
|
89
89
|
- lib/cotcube-helpers/range_ext.rb
|
90
|
+
- lib/cotcube-helpers/reduce.rb
|
90
91
|
- lib/cotcube-helpers/simple_output.rb
|
91
92
|
- lib/cotcube-helpers/string_ext.rb
|
92
93
|
- lib/cotcube-helpers/subpattern.rb
|