Ruby technical analysis toolkit for stocks, commodities, and other time series.
Codebase derived from Steven B. Achelis' Technical Analysis from A to Z (2nd Edition).
Specs use examples from the book to verify accuracy.
- Statistical Methods
- Mean
- Standard Deviation
- Variance
- Moving Averages
- Simple Moving Average
- Exponential Moving Average
- Weighted Moving Average
- Indicators
- Bollinger Bands
- Chaikin Money Flow
- Chande Momentum Oscillator
- Envelopes EMA
- Intraday Momentum Index
- MACD
- Mass Index
- Pivot Points
- Price Channel
- QStick
- Rate of Change
- Relative Momentum Index
- Relative Strength Index
- Stochastic Oscillator
- Volume Oscillator
- Wilders Smoothing
- Williams %R
Add this line to your Gemfile
gem 'ruby-technical-analysis'
Then run bundle install
.
gem install ruby-technical-analysis
from the command line.
Examples:
# Bollinger Bands
# Closing prices
series = [31.875, 32.125, 32.3125, 32.125, 31.875]
bb = RubyTechnicalAnalysis::BollingerBands.new(series: series, period: 5)
bb.valid?
# => true
bb.call
# => [32.397, 32.062, 31.727]
# Intraday Momentum Index
# [Open, Close]
oc_series = [[18.4833, 18.5], [18.5417, 18.4167], [18.4167, 18.1667], [18.1667, 18.125], [18.1667, 17.9583], [18.0417, 18], [18, 17.9583], [17.9167, 17.8333], [17.7917, 17.9583]]
imi = RubyTechnicalAnalysis::IntradayMomentumIndex.new(series: oc_series, period: 7)
imi.valid?
# => true
imi.call
# => 19.988
All indicators have the #valid?
instance method to validate the indicator prior to calling #call
.
Yard documentation available.
Specs are run in Github workflows. You can run them yourself with:
rspec spec
The gem is available open source under the terms of the MIT License.