Skip to content

ekkobit/gander

Repository files navigation

Gander

Technical indicators and plotting for stock market analysis

Authors:

For more complete documentation, go to Gander at ReadTheDocs

Installation

pip install gander

Examples

import gander.indicators as gi
import gander.plotting as gp
import matplotlib.pyplot as plt

Using Matplotlib and Gander to create daily stock charts

Let's say we have a Pandas DataFrame of a stocks data and we want to make a chart of a subset of the data. Our DataFrame might look something like this:

image

Adding indicators to the data set
df = gi.calc_ema(df, df["close"], "ema12", window=13)
df = gi.calc_ema(df, df["close"], "ema26", window=27)
df = gi.calc_macd(df, df["ema12"], df["ema26"])

This will give us something like this:

image

To get a subset of the data and positions on the x-axis, we can do:

df_plot = df[-300:-200]
xpos = range(100)
Building figure and subplots
fig = plt.figure(figsize=(12, 6))
ax1 = plt.subplot2grid((3, 1), (0, 0), rowspan=2)
ax2 = plt.subplot2grid((3, 1), (2, 0), rowspan=1)
ticks, labels = gp.daily_labels(df_plot, df_plot.index, step=5)
Customizing x-axis ticks, labels and grid
for ax in [ax1, ax2]:
    ax.set_xlim(xmin=-1, xmax=104)
    ax.set_xticks(ticks)
    ax.grid(alpha=0.3)

ax1.xaxis.set_ticklabels([])
ax1.tick_params(axis='x', length=0)
ax2.set_xticklabels(labels)

for label in ax2.get_xticklabels():
    if len(label.get_text()) == 4:
        label.set_fontsize(14)
        label.set_fontweight("bold")
    elif len(label.get_text()) == 3:
        label.set_fontsize(12)
        label.set_fontweight("bold")
    else:
        label.set_fontsize(10)
Adding plots
gp.candles(df_plot, ax1)
ax1.plot(xpos, df_plot["ema12"], "b-")
ax1.plot(xpos, df_plot["ema26"], "k-")
gp.macds(df_plot, ax2, "fast", "signal", "macd-h")

image

Using Matplotlib and Gander to create weekly stock charts

Let's again say we have a Pandas DataFrame of a stocks data and we want to make a chart of a subset of the data data. Only this time we have weekly data. Our DataFrame might look something like this:

image

Adding indicators to the data set
df = gi.calc_ema(df, df["close"], "ema12", window=13)
df = gi.calc_ema(df, df["close"], "ema26", window=27)
df = gi.calc_macd(df, df["ema12"], df["ema26"])

This will give us something like this:

image

To get a subset of the data and positions on the x-axis, we can again do:

df_plot = df[-230:-130]
xpos = range(100)

The process of building the chart is the same as for daily data, except we might do different customizations to the lables on the x-axis:

Building figure and subplots
fig = plt.figure(figsize=(12, 6))
ax1 = plt.subplot2grid((3, 1), (0, 0), rowspan=2)
ax2 = plt.subplot2grid((3, 1), (2, 0), rowspan=1)
ticks, labels = gp.weekly_labels(df_plot, df_plot.index, step=10)
Customizing x-axis ticks, labels and grid
for ax in [ax1, ax2]:
    ax.set_xlim(xmin=-1, xmax=104)
    ax.set_xticks(ticks)
    ax.grid(alpha=0.3)

ax1.xaxis.set_ticklabels([])
ax1.tick_params(axis='x', length=0)
ax2.set_xticklabels(labels)

for label in ax2.get_xticklabels():
    if len(label.get_text()) == 4:
        label.set_fontsize(14)
        label.set_fontweight("bold")
Adding plots
gp.candles(df_plot, ax1)
ax1.plot(xpos, df_plot["ema12"], "b-")
ax1.plot(xpos, df_plot["ema26"], "k-")
gp.macds(df_plot, ax2, "fast", "signal", "macd-h")

image

Contribute

About

Technical indicators and plotting for stock market analysis

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages