コード例 #1
0
ファイル: wsjfs.py プロジェクト: waldenven/tsdata
#Examples
#CL H2 = WTI H12

def wsjfs_data(symbol):
    coded = urllib.quote(symbol)

    url = 'http://ifs.futuresource.com/charts/charts.jsp?cID=WSJ&iFSsymbols=%s&iFScompareTo=&iFSperiod=D&iFSvminutes=&iFSchartsize=800x550&iFSbardensity=LOW&iFSbartype=BAR&iFSstudies=&iFSohlc=true' % (coded)
    print url

    f    = urllib.urlopen(url)
    txt  = f.read()
    soup = BeautifulSoup(txt)
    ars  = soup.findAll('area')
    data = map( lambda x: x['onmouseover'], ars)
    splitre = re.compile('Date: *([0-9/]*) *Open: *([0-9.]*) *High: *([0-9.]*) *Low: *([0-9.]*) *Close: *([0-9.]*)')
    df = DataFrame()
    for row in data:
	m = splitre.search(row)
	if not m:
	    continue
	S = { 'date' : Series([datetime.strptime(m.group(1), '%m/%d/%Y').date()]) }
	for k,v in zip( ['open', 'high', 'low', 'close' ], [ m.group(2), m.group(3), m.group(4), m.group(5) ] ):
	    S[k] = Series([float(v)])
	df = df.append(DataFrame(S), ignore_index=True)
    return df

wsjfs_data_wrapped = wrap(wsjfs_data)
    
def wsjfs(p, ticker, element='close'):
    df         = wsjfs_data_wrapped( ticker )
    return p.applyrange(Series(df[element],index=df['date'],name='%s'%(ticker)))
コード例 #2
0
ファイル: bigcharts.py プロジェクト: waldenven/tsdata
    for row in m2[1:]:
	pair_strs = row.split(',')
	pairs = []
	for ps in pair_strs:
	    ix = ps.index(':')
	    a,b = ps[1:ix-1], ps[ix+1:]
	    pairs.append( (a, b) )
	S = {}
	for p in pairs:
	    if p[1] == '' or 'UTime' in p[0]:
		continue
	    elif 'Date' not in p[0]:
		v = float(p[1])
	    else:
		m = numsre.search(p[1])
		v = float(m.group(0))
		v = datetime.fromtimestamp(v/1000)
	    S[p[0]] = Series([v])
	df = df.append(DataFrame(S),ignore_index=True)
    ds         = df['EndDate']
    df['date'] = map(lambda x: x.date(), ds)
    if df[-1:]['date'] == df[-2:-1]['date']:
	df     = df[:-1]
    return df
 
bigcharts_data_wrapped = wrap(bigcharts_data)
    
def bigcharts(p, country, ticker, element='Last'):
    df         = bigcharts_data_wrapped( country, ticker )
    return p.applyrange(Series(df[element],index=df['date'],name='%s:%s' %(country,ticker)))
コード例 #3
0
ファイル: bbgquote.py プロジェクト: waldenven/tsdata
import datetime
from tsdata.util import applyrange
from tsdata.func.cache import wrap

def bbgquote_data(ticker):
    url = 'http://www.bloomberg.com/apps/data?pid=webpxta&Securities=%s&TimePeriod=5Y&Outfields=HDATE,PR005-H,PR006-H,PR007-H,PR008-H,PR013-H' % (ticker)
    f          = urllib2.build_opener(urllib2.HTTPCookieProcessor()).open(url)
    txt        = f.read()
    f.close()
    
    s = txt.splitlines()
    df = DataFrame()
    for row in s[1:-1]:
        d,c,o,h,l,v = row.split('"')
        d = int(d)
        date = datetime.date(year = d / 10000, month = (d / 100) % 100, day = d % 100)
        S = { 'date' : [date] }
        for key,val in zip(['close','open','high','low','volume'],[c,o,h,l,v]):
	    try:
		S[key] = [float(val.replace(',',''))]
	    except:
		pass
        df = df.append(DataFrame(S), ignore_index=True)
    return df

bbgquote_data_wrapped = wrap(bbgquote_data,str.upper)

def bbgquote(p, ticker, element='close'):
    df     = bbgquote_data_wrapped(ticker)
    ts  = Series(df[element], index=df['date'])
    return p.applyrange(ts)