Authors:
- Ole Olaussen: ole.olaussen@ekkobit.com
- Xuan Ling: xuan.ling@ekkobit.com
For more complete documentation, go to Gander at ReadTheDocs
pip install gander
import gander.indicators as gi
import gander.plotting as gp
import matplotlib.pyplot as plt
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:
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:
To get a subset of the data and positions on the x-axis, we can do:
df_plot = df[-300:-200]
xpos = range(100)
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)
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)
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")
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:
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:
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:
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)
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")
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")
- Tips on contributing: https://github.com/ekkobit/gander/blob/master/CONTRIBUTING.md
- Issue Tracker: https://github.com/ekkobit/gander/issues
- Source Code: https://github.com/ekkobit/gander
- Documentation: https://gander.readthedocs.io