I would like to track consecutive highs as shown in this picture in a timeseries with pandas. See the image below:
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()
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()
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With