#!/usr/bin/env python import matplotlib.pyplot as plt from matplotlib.dates import DateFormatter, WeekdayLocator,\ DayLocator, MONDAY from matplotlib.finance import candlestick_ohlc import matplotlib import datetime import pymongo #from datetime import datetime #from datetime import timedelta global stocks global k_ri global list_code global conn_list, conn_k quotes = [] def show(code, name, quotes): #print quotes print code, name if len(quotes) == 0: raise SystemExit mondays = WeekdayLocator(MONDAY) # major ticks on the mondays alldays = DayLocator() # minor ticks on the days weekFormatter = DateFormatter('%b %d') # e.g., Jan 12 dayFormatter = DateFormatter('%d') # e.g., 12 fig, ax = plt.subplots() fig.subplots_adjust(bottom=0.2) ax.xaxis.set_major_locator(mondays) ax.xaxis.set_minor_locator(alldays) ax.xaxis.set_major_formatter(weekFormatter) ax.xaxis.set_minor_formatter(dayFormatter) #plot_day_summary(ax, quotes, ticksize=3) candlestick_ohlc(ax, quotes, width=0.6) ax.xaxis_date() ax.autoscale_view() plt.setp(plt.gca().get_xticklabels(), rotation=45, horizontalalignment='right') plt.show() def init_mongodb_list(): global stocks global conn_list # mongodb_link = 'mongodb://127.0.0.1:27017' # mongoClient = MongoClient(mongodb_link) conn_list = pymongo.MongoClient("localhost", 27017) conn_list.stock_list.authenticate("d", "zz") db = conn_list.stock_list stocks = db.stocks def init_mongodb_k(): global k_ri global conn_k conn_k = pymongo.MongoClient("localhost", 27017) conn_k.db_stock.authenticate("d", "zz") db = conn_k.db_stock k_ri = db.k_ri def get_k_ri(code, date, quotes): l = k_ri.find({"code": code, "date": {"$lte": date}}).sort([('date', -1)]).limit(500) for i in l: code = i.get("code") date = i.get("date") open = i.get("open") high = i.get("high") low = i.get("low") close = i.get("close") volume = i.get("volume") adj_close = i.get("adj_close") print code, date, open, high, low, close, volume, adj_close day = datetime.datetime.strptime(date, "%Y-%m-%d") year = int(day.strftime('%Y')) mon = int(day.strftime('%m')) day1 = int(day.strftime('%d')) quotes.append((matplotlib.dates.date2num(datetime.datetime(year, mon, day1)), open, high, low, close)) print code, date,"----------------------------------------" def get_stock_list(code): l = stocks.find({"code":code}).limit(1) print type(l) for i in l: name = i.get("name") return name if __name__ == '__main__': code = "600004" date = "2003-09-01" init_mongodb_list() name = get_stock_list(code) conn_list.close() #print name init_mongodb_k() get_k_ri(code, date,quotes) conn_k.close() show(code, name, quotes)