class SignalTools::Stock

Constants

DEFAULT_PERIOD

Attributes

dates[R]
stock_data[R]
ticker[RW]

Public Class Methods

new(ticker, from_date=Date.today-DEFAULT_PERIOD, to_date=Date.today) click to toggle source
# File lib/signal_tools/stock.rb, line 12
def initialize(ticker, from_date=Date.today-DEFAULT_PERIOD, to_date=Date.today)
  from_date = Date.parse(from_date) unless from_date.is_a?(Date)
  to_date = Date.parse(to_date) unless to_date.is_a?(Date)
  @ticker = ticker
  @stock_data = SignalTools::StockData.new(ticker, from_date, to_date)
  @dates = stock_data.dates
end

Public Instance Methods

average_directional_index(period=14) click to toggle source
# File lib/signal_tools/stock.rb, line 45
def average_directional_index(period=14)
  adx_data = SignalTools::Technicals::AverageDirectionalIndex.new(stock_data, period).calculate
  trim_data_to_range(adx_data, dates.size)
end
average_true_range(period=14) click to toggle source
# File lib/signal_tools/stock.rb, line 40
def average_true_range(period=14)
  atr_data = SignalTools::Technicals::AverageTrueRange.new(stock_data, period).calculate
  trim_data_to_range(atr_data, dates.size)
end
ema(period=10, type=:default) click to toggle source
# File lib/signal_tools/stock.rb, line 20
def ema(period=10, type=:default)
  ema_data = SignalTools::Technicals::EMA.new(stock_data.close_prices, period, type).calculate
  trim_data_to_range(ema_data, dates.size)
end
fast_stochastic(k_period=14, d_period=5) click to toggle source
# File lib/signal_tools/stock.rb, line 30
def fast_stochastic(k_period=14, d_period=5)
  stochastic_data = SignalTools::Technicals::FastStochastic.new(stock_data, k_period, d_period).calculate
  trim_data_to_range(stochastic_data, dates.size)
end
macd(fast=8, slow=17, signal=9) click to toggle source
# File lib/signal_tools/stock.rb, line 25
def macd(fast=8, slow=17, signal=9)
  macd_data = SignalTools::Technicals::MACD.new(stock_data.close_prices, fast, slow, signal).calculate
  trim_data_to_range(macd_data, dates.size)
end
slow_stochastic(k_period=14, d_period=5) click to toggle source
# File lib/signal_tools/stock.rb, line 35
def slow_stochastic(k_period=14, d_period=5)
  stochastic_data = SignalTools::Technicals::SlowStochastic.new(stock_data, k_period, d_period).calculate
  trim_data_to_range(stochastic_data, dates.size)
end