In [1]:
import urllib
base_url = "http://ichart.finance.yahoo.com/table.csv?s="
def make_url(ticker_symbol):
return base_url + ticker_symbol
output_path = "/Users/vakilp/Documents/StockInvestingExperiments"
def make_filename(ticker_symbol, directory="S&P"):
return output_path + "/" + directory + "/" + ticker_symbol + ".csv"
def pull_historical_data(ticker_symbol, directory="S&P"):
try:
urllib.urlretrieve(make_url(ticker_symbol), make_filename(ticker_symbol, directory))
except urllib.ContentTooShortError as e:
outfile = open(make_filename(ticker_symbol, directory), "w")
outfile.write(e.content)
outfile.close()
from pandas.io.data import DataReader
from datetime import datetime
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
goog = DataReader("GOOG","yahoo")
#Perform Darvas Box Creation on Google Data
class box(object):
high = []
low = []
date_high = []
date_low = []
box1 = box()
idx = 0;
d = []
index = 0;
for i in range(1,len(goog)):
if(goog.High[i]<=goog.High[i-1]):
idx = idx + 1;
else:
idx = 0;
if idx==3:
d.append(i)
high_vals = goog.High[i-3:i]
low_vals = goog.Low[i-3:i]
box1.high.append(high_vals.max())
box1.low.append(low_vals.min())
box1.date_high.append(goog.index[i-3])
box1.date_low.append(goog.index[i-3+np.argmin(low_vals)])
high = np.array(box1.high)
low = np.array(box1.low)
date_high = np.array(box1.date_high)
date_low = np.array(box1.date_low)
# Plot Box for posterity's sake
plt.plot(date_high,high,'o',goog.index,goog.High,date_low,low,'ro',goog.index,goog.Low);
plt.grid()
In [ ]: