Skip to main content

Technical indicators for the stock market

Project description

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:

docs/source/usage/df_raw.png

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:

docs/source/usage/df_indicators.png

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")
docs/source/usage/daily_plot.png

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:

docs/source/usage/df_raw_weekly.png

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:

docs/source/usage/df_indicators_weekly.png

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")
docs/source/usage/weekly_plot.png

Contribute

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gander-0.0.4.tar.gz (10.8 kB view details)

Uploaded Source

Built Distribution

gander-0.0.4-py3-none-any.whl (25.0 kB view details)

Uploaded Python 3

File details

Details for the file gander-0.0.4.tar.gz.

File metadata

  • Download URL: gander-0.0.4.tar.gz
  • Upload date:
  • Size: 10.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.4.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for gander-0.0.4.tar.gz
Algorithm Hash digest
SHA256 2ecdfdd10bafbbeb467635a435d3c68038074baac69845ad59433c5e18b9c6d0
MD5 4d6225d9bb06181f0ecc36b06bfe427f
BLAKE2b-256 7e81557a8ba6883381d322e3fbd65454e6a7f6e6bc3e3722d0060b0259640229

See more details on using hashes here.

File details

Details for the file gander-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: gander-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 25.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.4.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for gander-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 da2309b4a4187ff6c97bfa90f19ea9094c13a12eed3e392c1741a984b56002a3
MD5 fad2a0ce48a1b7c9216ecd34d569a096
BLAKE2b-256 7173fb0e0295caf2f67e99dd0c5cbfa822753ea8c6779d3d024f5811e29e5f80

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page