5

我更新了代码,现在它提供了图形,但是在给我这个图形之后,它产生了下面的错误消息。如何获取股市分析图表?

警告(从警告模块): 文件 “C:\ Python27 \ LIB \站点包\ matplotlib \ collections.py”,线路590 如果self._edgecolors == STR( '脸'): FutureWarning:元素比较失败;返回标代替,但在未来将执行的elementwise比较

import urllib2 
import time 
import datetime 
import numpy as np 
import matplotlib.pyplot as plt 
import matplotlib.ticker as mticker 
import matplotlib.dates as mdates 
from matplotlib.finance import candlestick_ochl 
import matplotlib 
import pylab 
matplotlib.rcParams.update({'font.size': 9}) 



def rsiFunc(prices, n=14): 
    deltas = np.diff(prices) 
    seed = deltas[:n+1] 
    up = seed[seed>=0].sum()/n 
    down = -seed[seed<0].sum()/n 
    rs = up/down 
    rsi = np.zeros_like(prices) 
    rsi[:n] = 100. - 100./(1.+rs) 

    for i in range(n, len(prices)): 
     delta = deltas[i-1] # cause the diff is 1 shorter 

     if delta>0: 
      upval = delta 
      downval = 0. 
     else: 
      upval = 0. 
      downval = -delta 

     up = (up*(n-1) + upval)/n 
     down = (down*(n-1) + downval)/n 

     rs = up/down 
     rsi[i] = 100. - 100./(1.+rs) 

    return rsi 

def movingaverage(values,window): 
    weigths = np.repeat(1.0, window)/window 
    smas = np.convolve(values, weigths, 'valid') 
    return smas # as a numpy array 

def ExpMovingAverage(values, window): 
    weights = np.exp(np.linspace(-1., 0., window)) 
    weights /= weights.sum() 
    a = np.convolve(values, weights, mode='full')[:len(values)] 
    a[:window] = a[window] 
    return a 


def computeMACD(x, slow=26, fast=12): 
    """ 
    compute the MACD (Moving Average Convergence/Divergence) using a fast and slow exponential moving avg' 
    return value is emaslow, emafast, macd which are len(x) arrays 
    """ 
    emaslow = ExpMovingAverage(x, slow) 
    emafast = ExpMovingAverage(x, fast) 
    return emaslow, emafast, emafast - emaslow 


def graphData(stock,MA1,MA2): 
    ''' 
     Use this to dynamically pull a stock: 
    ''' 
    try: 
     print 'Currently Pulling',stock 
     print str(datetime.datetime.fromtimestamp(int(time.time())).strftime('%Y-%m-%d %H:%M:%S')) 
     #Keep in mind this is close high low open data from Yahoo 
     urlToVisit = 'http://chartapi.finance.yahoo.com/instrument/1.0/'+stock+'/chartdata;type=quote;range=10y/csv' 
     stockFile =[] 
     try: 
      sourceCode = urllib2.urlopen(urlToVisit).read() 
      splitSource = sourceCode.split('\n') 
      for eachLine in splitSource: 
       splitLine = eachLine.split(',') 
       if len(splitLine)==6: 
        if 'values' not in eachLine: 
         stockFile.append(eachLine) 
     except Exception, e: 
      print str(e), 'failed to organize pulled data.' 
    except Exception,e: 
     print str(e), 'failed to pull pricing data' 
    try: 
     date, closep, highp, lowp, openp, volume = np.loadtxt(stockFile,delimiter=',', unpack=True, 
                   converters={ 0: mdates.strpdate2num('%Y%m%d')}) 
     x = 0 
     y = len(date) 
     newAr = [] 
     while x < y: 
      appendLine = date[x],openp[x],closep[x],highp[x],lowp[x],volume[x] 
      newAr.append(appendLine) 
      x+=1 

     Av1 = movingaverage(closep, MA1) 
     Av2 = movingaverage(closep, MA2) 

     SP = len(date[MA2-1:]) 

     fig = plt.figure(facecolor='#07000d') 

     ax1 = plt.subplot2grid((6,4), (1,0), rowspan=4, colspan=4, axisbg='#07000d') 
     candlestick_ochl(ax1, newAr[-SP:], width=.6, colorup='#53c156', colordown='#ff1717')#width=.6, plot_day_summary_ohlc 

     Label1 = str(MA1)+' SMA' 
     Label2 = str(MA2)+' SMA' 

     ax1.plot(date[-SP:],Av1[-SP:],'#e1edf9',label=Label1, linewidth=1.5) 
     ax1.plot(date[-SP:],Av2[-SP:],'#4ee6fd',label=Label2, linewidth=1.5) 

     ax1.grid(True, color='w') 
     ax1.xaxis.set_major_locator(mticker.MaxNLocator(10)) 
     ax1.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d')) 
     ax1.yaxis.label.set_color("w") 
     ax1.spines['bottom'].set_color("#5998ff") 
     ax1.spines['top'].set_color("#5998ff") 
     ax1.spines['left'].set_color("#5998ff") 
     ax1.spines['right'].set_color("#5998ff") 
     ax1.tick_params(axis='y', colors='w') 
     plt.gca().yaxis.set_major_locator(mticker.MaxNLocator(prune='upper')) #gca() 
     ax1.tick_params(axis='x', colors='w') 
     plt.ylabel('Stock price and Volume') 

     maLeg = plt.legend(loc=9, ncol=2, prop={'size':7}, 
        fancybox=True, borderaxespad=0.) 
     maLeg.get_frame().set_alpha(0.4) 
     textEd = plt.gca().get_legend().get_texts()#pylab.gca() changed to plt.gca() 
     plt.setp(textEd[0:5], color = 'w')#changed pylab.setp to plt.setp 

     volumeMin = 0 

     ax0 = plt.subplot2grid((6,4), (0,0), sharex=ax1, rowspan=1, colspan=4, axisbg='#07000d') 
     rsi = rsiFunc(closep) 
     rsiCol = '#c1f9f7' 
     posCol = '#386d13' 
     negCol = '#8f2020' 

     ax0.plot(date[-SP:], rsi[-SP:], rsiCol, linewidth=1.5) 
     ax0.axhline(70, color=negCol) 
     ax0.axhline(30, color=posCol) 
     ax0.fill_between(date[-SP:], rsi[-SP:], 70, where=(rsi[-SP:]>=70), facecolor=negCol, edgecolor=negCol, alpha=0.5) 
     ax0.fill_between(date[-SP:], rsi[-SP:], 30, where=(rsi[-SP:]<=30), facecolor=posCol, edgecolor=posCol, alpha=0.5) 
     ax0.set_yticks([30,70]) 
     ax0.yaxis.label.set_color("w") 
     ax0.spines['bottom'].set_color("#5998ff") 
     ax0.spines['top'].set_color("#5998ff") 
     ax0.spines['left'].set_color("#5998ff") 
     ax0.spines['right'].set_color("#5998ff") 
     ax0.tick_params(axis='y', colors='w') 
     ax0.tick_params(axis='x', colors='w') 
     plt.ylabel('RSI') 

     ax1v = ax1.twinx() 
     ax1v.fill_between(date[-SP:],volumeMin, volume[-SP:], facecolor='#00ffe8', alpha=.4) 
     ax1v.axes.yaxis.set_ticklabels([]) 
     ax1v.grid(False) 
     ax1v.set_ylim(0, 3*volume.max()) 
     ax1v.spines['bottom'].set_color("#5998ff") 
     ax1v.spines['top'].set_color("#5998ff") 
     ax1v.spines['left'].set_color("#5998ff") 
     ax1v.spines['right'].set_color("#5998ff") 
     ax1v.tick_params(axis='x', colors='w') 
     ax1v.tick_params(axis='y', colors='w') 


     ax2 = plt.subplot2grid((6,4), (5,0), sharex=ax1, rowspan=1, colspan=4, axisbg='#07000d') 



     # START NEW INDICATOR CODE # 



     # END NEW INDICATOR CODE # 




     plt.gca().yaxis.set_major_locator(mticker.MaxNLocator(prune='upper')) 
     ax2.spines['bottom'].set_color("#5998ff") 
     ax2.spines['top'].set_color("#5998ff") 
     ax2.spines['left'].set_color("#5998ff") 
     ax2.spines['right'].set_color("#5998ff") 
     ax2.tick_params(axis='x', colors='w') 
     ax2.tick_params(axis='y', colors='w') 
     ax2.yaxis.set_major_locator(mticker.MaxNLocator(nbins=5, prune='upper')) 





     for label in ax2.xaxis.get_ticklabels(): 
      label.set_rotation(45) 

     plt.suptitle(stock.upper(),color='w') 

     plt.setp(ax0.get_xticklabels(), visible=False) 
     plt.setp(ax1.get_xticklabels(), visible=False) 

     '''ax1.annotate('Big news!',(date[510],Av1[510]), 
      xytext=(0.8, 0.9), textcoords='axes fraction', 
      arrowprops=dict(facecolor='white', shrink=0.05), 
      fontsize=14, color = 'w', 
      horizontalalignment='right', verticalalignment='bottom')''' 

     plt.subplots_adjust(left=.09, bottom=.14, right=.94, top=.95, wspace=.20, hspace=0) 
     plt.show() 
     fig.savefig('example.png',facecolor=fig.get_facecolor()) 

    except Exception,e: 
     print 'main loop',str(e) 

while True: 
    stock = raw_input('Stock to plot: ') 
    graphData(stock,10,50) 

回答