import pandas as pd import numpy as np import math import matplotlib.pyplot as plt # Stock Investors Financial Math # https://www.fmlabs.com/reference/default.htm?url=SimpleMA.htm # Alpha Vantage # https://www.alphavantage.co/documentation/ # Pandas # https://pandas.pydata.org/pandas-docs/stable/index.html # Knowledge # https://www.investopedia.com/articles/technical/02/050602.asp def sin(f, a, N): result = np.empty(0) for n in range(0, N): v = a*math.sin(2*math.pi*f*n/N) result = np.append(result, v) return result def ema(data, alpha=0.75): result = np.empty(0) r = data[0] for v in data: r = alpha*r + (1-alpha)*v result = np.append(result, r) return result def macd(data): ema_short = ema(data, alpha=0.85) ema_long = ema(data, alpha=0.925) return ema_short - ema_long pd_data = pd.read_csv("aapl.csv", names=['Dates', 'Price']) np_data = np.flip(pd_data['Price'].to_numpy()) a = sin(2, 1, 100) plt.plot(np_data, label='Price') plt.plot(ema(np_data), label='EMA') plt.plot(macd(np_data), label='MACD') plt.legend() plt.grid() plt.show()