5

Zaktualizowałem kod i teraz dostarcza on wykres, jednak po otrzymaniu wykresu wyświetla następujące komunikaty o błędach.Jak uzyskać wykres analizy giełdowej?

ostrzegawcze (z ostrzeżenia moduł): pliku "C: \ Python27 \ lib \ site-pakiety \ matplotlib \ collections.py" linia 590 jeśli self._edgecolors == ul ('powierzchnia'): FutureWarning: porównanie elementów nie powiodło się; powrocie skalara zamiast, ale w przyszłości będzie wykonywać elementwise porównania

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) 

Odpowiedz

Powiązane problemy