CalcTechnicalIndicators

CalcTechnicalIndicators is calculate technical indicators for stock trading. This library read stock price movement. And it outputs indicators.

Installation

Add this line to your application's Gemfile:

gem 'calc_technical_indicators'

And then execute:

$ bundle

Or install it yourself as:

$ gem install calc_technical_indicators

Usage

TestData.fetch
#=>
# [
#   {:opening_price=>6551, :closing_price=>6991, :low_price=>5103, :high_price=>7655},
#   {:opening_price=>7259, :closing_price=>5208, :low_price=>5040, :high_price=>7560},
#   {:opening_price=>5766, :closing_price=>5860, :low_price=>5598, :high_price=>8396},
#   {:opening_price=>5817, :closing_price=>6434, :low_price=>5135, :high_price=>7703},
#   {:opening_price=>5510, :closing_price=>6060, :low_price=>4312, :high_price=>6468},
#   {:opening_price=>7424, :closing_price=>6404, :low_price=>5149, :high_price=>7723},
#   {:opening_price=>6093, :closing_price=>7050, :low_price=>5890, :high_price=>8836},
#   {:opening_price=>7715, :closing_price=>8785, :low_price=>6695, :high_price=>10043},
#   {:opening_price=>7019, :closing_price=>6874, :low_price=>6453, :high_price=>9679},
#   {:opening_price=>6773, :closing_price=>6596, :low_price=>5330, :high_price=>7994},
#   {:opening_price=>6412, :closing_price=>6222, :low_price=>4603, :high_price=>6905},
#   {:opening_price=>5053, :closing_price=>5006, :low_price=>4015, :high_price=>6023},
#   {:opening_price=>6149, :closing_price=>5304, :low_price=>4432, :high_price=>6648},
#   {:opening_price=>6430, :closing_price=>5830, :low_price=>4550, :high_price=>6826},
#   {:opening_price=>5277, :closing_price=>5703, :low_price=>4514, :high_price=>6772},
#   ....
# ]

require 'calc_technical_indicators'

CalcTechnicalIndicators::Calculator.new(TestData.fetch).execute
#=>
# [
#   {:opening_price=>6551, :closing_price=>6991, :low_price=>5103, :high_price=>7655, :closing_price_sma5=>nil, :closing_price_sma10=>nil, :closing_price_sma25=>nil},
#   {:opening_price=>7259, :closing_price=>5208, :low_price=>5040, :high_price=>7560, :closing_price_sma5=>nil, :closing_price_sma10=>nil, :closing_price_sma25=>nil},
#   {:opening_price=>5766, :closing_price=>5860, :low_price=>5598, :high_price=>8396, :closing_price_sma5=>nil, :closing_price_sma10=>nil, :closing_price_sma25=>nil},
#   {:opening_price=>5817, :closing_price=>6434, :low_price=>5135, :high_price=>7703, :closing_price_sma5=>nil, :closing_price_sma10=>nil, :closing_price_sma25=>nil},
#   {:opening_price=>5510, :closing_price=>6060, :low_price=>4312, :high_price=>6468, :closing_price_sma5=>6110.6, :closing_price_sma10=>nil, :closing_price_sma25=>nil},
#   {:opening_price=>7424, :closing_price=>6404, :low_price=>5149, :high_price=>7723, :closing_price_sma5=>5993.2, :closing_price_sma10=>nil, :closing_price_sma25=>nil},
#   {:opening_price=>6093, :closing_price=>7050, :low_price=>5890, :high_price=>8836, :closing_price_sma5=>6361.6, :closing_price_sma10=>nil, :closing_price_sma25=>nil},
#   {:opening_price=>7715, :closing_price=>8785, :low_price=>6695, :high_price=>10043, :closing_price_sma5=>6946.6, :closing_price_sma10=>nil, :closing_price_sma25=>nil},
#   {:opening_price=>7019, :closing_price=>6874, :low_price=>6453, :high_price=>9679, :closing_price_sma5=>7034.6, :closing_price_sma10=>nil, :closing_price_sma25=>nil},
#   {:opening_price=>6773, :closing_price=>6596, :low_price=>5330, :high_price=>7994, :closing_price_sma5=>7141.8, :closing_price_sma10=>6626.2, :closing_price_sma25=>nil},
#   {:opening_price=>6412, :closing_price=>6222, :low_price=>4603, :high_price=>6905, :closing_price_sma5=>7105.4, :closing_price_sma10=>6549.3, :closing_price_sma25=>nil},
#   {:opening_price=>5053, :closing_price=>5006, :low_price=>4015, :high_price=>6023, :closing_price_sma5=>6696.6, :closing_price_sma10=>6529.1, :closing_price_sma25=>nil},
#   {:opening_price=>6149, :closing_price=>5304, :low_price=>4432, :high_price=>6648, :closing_price_sma5=>6000.4, :closing_price_sma10=>6473.5, :closing_price_sma25=>nil},
#   {:opening_price=>6430, :closing_price=>5830, :low_price=>4550, :high_price=>6826, :closing_price_sma5=>5791.6, :closing_price_sma10=>6413.1, :closing_price_sma25=>nil},
#   {:opening_price=>5277, :closing_price=>5703, :low_price=>4514, :high_price=>6772, :closing_price_sma5=>5613.0, :closing_price_sma10=>6377.4, :closing_price_sma25=>nil}
#   ...
# ]

Contributing

  1. Fork it ( https://github.com/[my-github-username]/calc_technical_indicators/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request