# stock_chart_tools

Python module for calculating stock charts using yfinance and pandas.

## NAME

``````stock_chart_tools
``````

## DESCRIPTION

``````Functions to create data series for some technical indicators,
which could be charted using various charting tools

SMA  - Simple moving average
EMA  - Exponential moving average
MACD - Moving average convergence divergence
OBV  - On balance volume
SSO  - Slow stochastic Oscillator
``````

## FUNCTIONS

``````EMA(data_series, periods)
Calculate the exponential moving average

data_series -> pandas Series
periods     -> the number of periods used to calculate

Example:
stock_data = get_historical_data(symbol)
three_day_ema = EMA(stock_data['Close'],3)

MACD(data_series, long_period=26, short_period=12, signal=9)
Calculates the MACD (Moving Average Convergence Divergence)

long_period  -> the number of periods for the long window
short_period -> the number of periods for the short window
signal       -> the number of periods to use for the signal line

Example:
stock_data = get_historical_data(symbol)
macd = MACD(stock_data['Adj Close'])

OBV(close_series, volume_series, days=60)
Calculates the On Balance Volume

close_series  -> pandas Series with the closing price data
volume_series -> pandas Series with the volume data
days          -> number of days to use to calculate

Example:
stock_data = get_historical_data(symbol)
obv_data = OBV(stock_data['Adj Close'],stock_data['Volume'])

SMA(data_series, periods)
Calculate the simple moving average

data_series -> pandas Series
periods     -> the number of periods used to calculate

Example:
stock_data = get_historical_data(symbol)
three_day_sma = SMA(stock_data['Volume'],3)

SSO(close_series, high_series, low_series, period=14, k=3, d=3)
Calculates the Slow Stochastic Oscillator

period -> the number of periods for fast %K
k      -> the number of periods for %K
d      -> the number of periods for %D

Example:
stock_data = get_historical_data(symbol)
slow_stochastics = SSO(stock_data['Close'])

get_historical_data(symbol, days=365)
Get historical stock data using the yfinance module

symbol -> ticker symbol
days   -> number of *calendar* days of data to fetch

The end date is the current date.

Example:
stock_data = get_historical_data(symbol)
quarter_data = get_historical_data(symbol,90)

get_historical_data_range(symbol, start_date, end_date)
Get historical stock data using the yfinance module

symbol     -> ticker symbol
start_date -> python datetime object for the start of the series
end_date   -> python datetime object for the end of the series

Example:
stock_data = get_historical_data_range(symbol,start_date,end_date)
``````