How to get the prices of Moving Averages Crosses?
Hi, I'm new to Numpy. I'm doing some tests with some Stock Market Quotes My struggle right now is "how to get the values of the moving averages crosses", I send an image in attach to illustrate what I'm trying to get. I'm using the this computation to get when the moving averages crosses, but when I look at the graph, the values doesn't seem ok. [quote] # Get when the ma20 cross ma50 equal = np.round(ma20,2)==np.round(ma50,2) dates_cross = (dates[equal]) prices_cross = (prices[equal]) [/quote] The full code is this: [quote] # Modules import datetime import numpy as np import matplotlib.finance as finance import matplotlib.mlab as mlab import matplotlib.pyplot as plot # Define quote startdate = datetime.date(2008,10,1) today = enddate = datetime.date.today() ticker = 'uso' # Catch CSV fh = finance.fetch_historical_yahoo(ticker, startdate, enddate) # From CSV to REACARRAY r = mlab.csv2rec(fh); fh.close() # Order by Desc r.sort() ### Methods Begin def moving_average(x, n, type='simple'): """ compute an n period moving average. type is 'simple' | 'exponential' """ x = np.asarray(x) if type=='simple': weights = np.ones(n) else: weights = np.exp(np.linspace(-1., 0., n)) weights /= weights.sum() a = np.convolve(x, weights, mode='full')[:len(x)] a[:n] = a[n] return a ### Methods End prices = r.adj_close dates = r.date ma20 = moving_average(prices, 20, type='simple') ma50 = moving_average(prices, 50, type='simple') # Get when the ma20 cross ma50 equal = np.round(ma20,2)==np.round(ma50,2) dates_cross = (dates[equal]) prices_cross = (prices[equal]) # Ver se a ma20 > ma50 # ma20_greater_than_ma50 = np.round(ma20,2) > np.round(ma50,2) # dates_ma20_greater_than_ma50 = (dates[ma20_greater_than_ma50]) # prices_ma20_greater_than_ma50 = (prices[ma20_greater_than_ma50]) print dates_cross print prices_cross #print dates_ma20_greater_than_ma50 #print prices_ma20_greater_than_ma50 plot.plot(prices) plot.plot(ma20) plot.plot(ma50) plot.show() [/quote] Someone can give me some clues? Best Regards,
participants (4)
-
Andre Lopes
-
Christopher Barker
-
Joe Kington
-
Keith Goodman