2011-03-01 14 views
1

私はMatplotlibとNumpyでいくつかの牽引力を得ようとしていますが、あまり簡単ではありません。MatplotlibとNumpyの数学

私はmatplotlibのとnumpyのを扱う開始するミニプロジェクトをやっているが、私はこだわっている...ここで

はコードです:

# 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(2010,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 ma20 crosses ma50 
equal = np.round(ma20,1)==np.round(ma50,1) 
dates_cross = (dates[equal]) 
prices_cross = (prices[equal]) 

# Get when ma20 > ma50 
ma20_greater_than_ma50 = np.round(ma20,1) > np.round(ma50,1) 
dates_ma20_greater_than_ma50 = (dates[ma20_greater_than_ma50]) 
prices_ma20_greater_than_ma50 = (prices[ma20_greater_than_ma50]) 

print dates_ma20_greater_than_ma50 
print prices_ma20_greater_than_ma50 

は今、私はこのような何かをする必要があり:

store the price of the "price_cross" 
see if one day after the "ma20_greater_than_ma50" statment is true, if true store the price as "price of the one day after" 
now do "next price_cross" - "price of the one day after" (price2 - price1) for all occurences 

どのようにこの計算を行うことができますか? MatplotlibとNumpyでトラクションを得るにはどうすればいいですか?どの本を買うべきですか?

私に手がかりを与えてください。

よろしく、

答えて

5

私はジョシュに同意するが、matplotlibのギャラリーを追加したい:

http://matplotlib.sourceforge.net/gallery.html

私のプロットのほとんどは、直接私が欲しいものに近いものをコピーすることから始め、その後、私のニーズに合うようにそれを修正します。 matplotlibギャラリーにはそのような例がたくさんあります。

3

私はあなたが必ずしも出て行くとどんな本を購入する必要はありませんと言うでしょう。

http://www.scipy.org/Tentative_NumPy_Tutorial

http://matplotlib.sourceforge.net/examples/index.html

とドキュメントから一緒に物事をピースと関連するキーワードを検索してみてください:より良い(と安い)ソリューションなどのオンラインチュートリアルを見てみることです。あなたが提示したコード(あなたがそれを書いたと仮定して)から、あなたは気が散っているのをいくつか把握しています。より具体的な/詳細なヘルプを得るために遭遇している問題については、もう少し具体的に説明する必要があります。

2

ここで開始するリストは、あなたはおそらくそれらを介して閲覧した後、あなたのために最も重要な部分を見つける、です:

  1. Pythonのチュートリアルhttp://docs.scipy.org/doc/
  2. matplotlibのユーザーガイドからhttp://docs.python.org/tutorial/
  3. numpyのユーザーガイドをhttp://matplotlib.sourceforge.net/users/index.html
  4. Numpy/Scipy追加のドキュメントソースhttp://www.scipy.org/Additional_Documentation

numpyおよび/またはmatplotlibのメーリングリストを購読したい場合があります。

1

matplotlibとnumpyには便利な機能がたくさんありますので、実装する前に常にgoogleを先に実行する必要があります。

たとえば、matplotlib movavg関数を参照してください。

関連する問題