class Enterprice::IO::CandleStream
Attributes
period[RW]
Public Class Methods
new(period, block)
click to toggle source
# File lib/enterprice/io/candle_stream.rb, line 10 def initialize(period, block) @pivot= nil @open= nil @period= period @prev_close= 0.0 @block= block reset_state end
start(period, &block)
click to toggle source
# File lib/enterprice/io/candle_stream.rb, line 6 def self.start(period, &block) CandleStream.new(period, block) end
Public Instance Methods
<<(row)
click to toggle source
# File lib/enterprice/io/candle_stream.rb, line 19 def << (row) ts, price, amount= row @pivot||= ts @open||= price if ts> @pivot+ @period- 1 call @prev_close= @close reset_state @pivot+= @period end while ts> @pivot+ @period- 1 call_blank @pivot+= @period end if ts< @pivot+ @period @open= @prev_close if @prev_close!= 0.0 @high= price if price> @high @low= price if price< @low @close= price @volume+= amount end end
call()
click to toggle source
# File lib/enterprice/io/candle_stream.rb, line 45 def call @block.call [@pivot, @open, @high, @low, @close, @volume] end
Private Instance Methods
call_blank()
click to toggle source
# File lib/enterprice/io/candle_stream.rb, line 50 def call_blank @block.call [@pivot, @prev_close, @prev_close, @prev_close, @prev_close, 0] end
reset_state()
click to toggle source
# File lib/enterprice/io/candle_stream.rb, line 54 def reset_state @high= -Float::INFINITY @low= Float::INFINITY @close= -Float::INFINITY @volume= 0 end