Sha256: a08a7b4f0db905a117577605f68153f1dc8f823dcabfdfe98de8567ebcacc65d

Contents?: true

Size: 876 Bytes

Versions: 1

Compression:

Stored size: 876 Bytes

Contents

# lib/sqa/strategy.rb

class SQA::Strategy
  attr_accessor :strategies

  def initialize
    @strategies = []
  end

  def add(a_proc=nil, &block)
    @strategies << a_proc unless a_proc.nil?
    @strategies << block  if a_proc.nil? && block_given?
  end

  def execute(v)
    result = []
    # TODO: Can do this in parallel ...
    @strategies.each { |signal| result << signal.call(v) }
    result
  end
end

__END__

Example Usage
=============

ss = SQA::Strategy.new

ss.add do |vector|
  case rand(10)
  when (8..)
    :buy
  when (..3)
    :sell
  else
    :hold
  end
end


ss.add do |vector|
  case rand(10)
  when (8..)
    :sell
  when (..3)
    :buy
  else
    :keep
  end
end

def magic(vector)
  0 == rand(2) ? :spend : :save
end

ss.add method(:magic)

class MyClass
  def self.my_method(vector)
    vector.rsi[:rsi]
  end
end

ss.add MyClass.method(:my_method)

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sqa-0.0.3 lib/sqa/strategy.rb