talib-ruby

Ruby Wrapper for ta-lib

This project has been started by Timur Adigamov on Rubyforge, but since it didn’t build on my machine and wasn’t complete i modified it slightly, et voila.

Install and build instructions

Install ta-lib from MacPorts:

sudo port install ta-lib

Or install ta-lib from Homebrew:

sudo brew install ta-lib

Install the ruby wrapper talib_ruby:

sudo env ARCHFLAGS="-arch PLATFORM" gem install talib_ruby -- --with-talib-include=ABSOLUTE_PATH_TO_TALIB_HEADERS  --with-talib-lib=ABSOLUTE_PATH_TO_TALIB_LIBS
  • PLATFORM = [i386 | x86_64 | …]
  • ABSOLUTE_PATH_TO_TALIB_HEADERS = The path to the ta-lib header files
    • e.g. for Port: /opt/local/var/macports/software/ta-lib/0.4.0_0/opt/local/include/ta-lib
    • e.g. for Homebrew: /usr/local/Cellar/ta-lib/0.4.0/include/ta-lib
  • ABSOLUTE_PATH_TO_TALIB_LIBS = The path to the ta-lib lib files
    • e.g. fo Port: /opt/local/var/macports/software/ta-lib/0.4.0_0/opt/local/lib)
    • e.g. fo Homebrew: /usr/local/Cellar/ta-lib/0.4.0/lib

Now ta-lib can be used by using require ‘talib_ruby’ Needs at least Mac OSX 10.5. Has not been tested on Windows, but works there too what i’ve heard.

Example

Calculation of Moving Average (MA):

require 'rubygems'
require 'talib_ruby'</code>

<code># init input data
a = Array.new
10.times { |i| a.push i.to_f }</code>

<code>10.times do |k|
    b = Array.new(10)
    l = TaLib::Function.new("MA")
    # setup input parameter
    l.in_real(0,a)
    # setup optional parameter
    l.opt_int(0,k+2)
    # setup output parameter
    l.out_real(0,b)
    lookback = l.lookback
    l.call(0,9)
    p "k=#{k+2}"
    p b
end

Useful links