读取mongodb 显示日k 指定日期近500条 不能超过800条

#!/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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值