# [Numpy-discussion] How to get the prices of Moving Averages Crosses?

Andre Lopes lopes80andre at gmail.com
Tue Mar 1 11:07:23 EST 2011

```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

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,
-------------- next part --------------
A non-text attachment was scrubbed...
Name: moving_averages_cross.PNG
Type: image/png
Size: 28319 bytes
Desc: not available
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20110301/57e73b78/attachment.png>
```