As can be seen above the line chart which is simply matplotlib.show has the x-axis going from oldest to newest but the mplfinance ohlc is going from newest to oldest. I believe this is because the index goes from newest to oldest.
So how can I reverse the index for mplfinance?
I am using a pandas dataframe for the ohlc chart.
Here is the code:
def runCandles(user_symbol):
openarr = []
closearr = []
higharr = []
lowarr = []
datesarr = []
ha_close_arr = []
ha_open_arr = []
ha_high_arr = []
ha_low_arr = []
symbol = user_symbol
response = requests.get("https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol="+symbol+"&apikey=")
responsedata = response.json()
#pass response json as data
def get_ohlc(data):
for value in data['Time Series (Daily)']:
date = datetime.strptime(value,'%Y-%m-%d')
open = float(responsedata['Time Series (Daily)'][value]['1. open'])
close = float(responsedata['Time Series (Daily)'][value]['4. close'])
high = float(responsedata['Time Series (Daily)'][value]['2. high'])
low = float(responsedata['Time Series (Daily)'][value]['3. low'])
openarr.append(open)
closearr.append(close)
lowarr.append(low)
higharr.append(high)
datesarr.append(date)
def get_ha_ohlc():
if (len(openarr) == len(closearr) == len(lowarr) == len(higharr) == len(datesarr)):
length = len(openarr)
count = 0
while count < length:
ha_close = 0.25*(openarr[count]+closearr[count]+lowarr[count]+higharr[count])
ha_close_arr.append(ha_close)
ha_open = 0.5*(openarr[count-1]+closearr[count-1])
ha_open_arr.append(ha_open)
ha_high = max(openarr[count],closearr[count],higharr[count])
ha_high_arr.append(ha_high)
ha_low = min(openarr[count],closearr[count],lowarr[count])
ha_low_arr.append(ha_low)
count += 1
get_ohlc(responsedata)
get_ha_ohlc()
reformatted_data = dict()
reformatted_data["Date"] = []
reformatted_data["Open"] = []
reformatted_data["High"] = []
reformatted_data["Close"] = []
reformatted_data["Low"] = []
reformatted_data["Date"] = datesarr
reformatted_data["Open"] = ha_open_arr
reformatted_data["High"] = ha_high_arr
reformatted_data["Close"] = ha_close_arr
reformatted_data["Low"] = ha_low_arr
df = pd.DataFrame.from_dict(reformatted_data)
print(df)
df.set_index('Date', inplace=True)
# df.reindex(index=df.index[::-1])
print(df)
# df.head(3)
plt.plot(datesarr, ha_close_arr)
plt.show()
mpf.plot(df)
# print(datesarr)
# print(list(reversed(datesarr)))
Here is the data:
Date,Open,High,Close,Low
2020-09-23,19.755000000000003,22.219,21.089775000000003,20.1901
2020-09-22,20.975,22.06,21.6096,21.1884
2020-09-21,21.595,22.09,21.53,21.11
2020-09-18,21.46,23.04,22.549999999999997,22.18
2020-09-17,22.490000000000002,23.54,22.457499999999996,21.72
2020-09-16,22.285,23.54,23.0175,22.66
2020-09-15,22.935,24.6,23.839999999999996,23.25
2020-09-14,23.755,24.15,23.428325,22.9233
2020-09-11,23.32,23.49,22.98,22.37
2020-09-10,23.03,24.49,23.609999999999996,23.07
2020-09-09,23.439999999999998,24.97,23.87,23.25
2020-09-08,23.630000000000003,24.77,23.27,22.55
2020-09-04,22.88,27.0,25.235,22.56
2020-09-03,25.689999999999998,29.15,27.3675,25.8
2020-09-02,27.259999999999998,34.4234,32.57085,30.61
2020-09-01,32.625,31.0,29.4275,27.8
2020-08-31,29.455,29.639,28.42975,26.75
2020-08-28,28.665,28.98,28.0192,27.1768
2020-08-27,27.96,28.97,27.52,26.7
2020-08-26,27.205,28.48,27.497500000000002,26.51
2020-08-25,27.5,29.42,28.61,27.11
2020-08-24,28.955,29.96,28.93,27.85
2020-08-21,28.955,27.2,25.560000000000002,24.42
2020-08-20,25.310000000000002,24.45,23.235,22.2
2020-08-19,23.145,21.66,20.785,20.0
2020-08-18,20.74,20.8,19.915000000000003,19.1
2020-08-17,19.880000000000003,19.43,19.167499999999997,18.81
2020-08-14,19.215,20.49,19.6075,18.68
2020-08-13,19.630000000000003,19.6,18.9625,18.31
2020-08-12,18.97,21.19,20.2725,19.25

Just reverse your Pandas DataFrame before passing it into
mpf.plot(df)...That should do it. Mplfinance expects the dataframe data and datetime index to be ordered from oldest (row number
0) to newest (row numberlen(df)-1)