4

I would like to track consecutive highs as shown in this picture in a timeseries with pandas. See the image below:

enter image description here

How can this be done with Pandas?

In case you would like to play with a real life example you can download the prices of a stock, say 'MSFT' and use the "close" for your example . There are multiple ways to download the stock price but here is one:

import yahooquery

ticker = Ticker('MSFT', asynchronous=True)

df = ticker.history()
halfer
  • 19,824
  • 17
  • 99
  • 186
user8270077
  • 4,621
  • 17
  • 75
  • 140

1 Answers1

1

Not enough data is returned to perform what you want. Using SO find min/max technique would work by analysing max column if data set did have consecutive local maximums.

import yahooquery
import matplotlib.pyplot as plt
import pandas as pd, numpy as np
from scipy.signal import argrelextrema

ticker = yahooquery.Ticker('MSFT', asynchronous=True)

df = ticker.history()
df = df.reset_index()

n = 5
df['min'] = df.iloc[argrelextrema(df.close.values, np.less_equal,
                    order=n)[0]]['close']
df['max'] = df.iloc[argrelextrema(df.close.values, np.greater_equal,
                    order=n)[0]]['close']

plt.scatter(df["date"], df['min'], c='r')
plt.scatter(df["date"], df['max'], c='g')
plt.plot(df["date"], df["close"])
plt.show()

enter image description here

Rob Raymond
  • 29,118
  • 3
  • 14
  • 30