lib/quant.rb in quant-0.0.0 vs lib/quant.rb in quant-0.0.2
- old
+ new
@@ -1,5 +1,39 @@
require "quant/version"
module Quant
- # Your code goes here...
+
+ def self.sma(values, n)
+ acc = 0
+ values.inject_with_index([]) do |m, e, i|
+ acc += e
+ if i < (n - 1)
+ m << not_a_number
+ elsif i == (n - 1)
+ m << acc / n
+ else
+ acc = acc - values[i - n]
+ m << acc / n
+ end
+ end
+ end
+
+ def self.donchian_channel(ohlc, n)
+ dc = []
+ ohlc.each_with_index do |e, i|
+ if i < (n - 1)
+ dc << [not_a_number, not_a_number]
+ else
+ c = ohlc[(i - n + 1)..(i)].flatten
+ dc << [c.max, c.min]
+ end
+ end
+ dc
+ end
+
+ private
+
+ def self.not_a_number
+ 0 / 0.0
+ end
+
end