Example #1
0
def moving_average(start, end, codelist):
    start_time = dateutil.parser.parse(start)
    end_time = dateutil.parser.parse(end)

    sqlfolder = SQL_FOLDER + str(uuid.uuid1()) + '/'
    if not os.path.exists(sqlfolder):
        os.mkdir(sqlfolder)
    f = FileHelper(sqlfolder)

    for code in codelist:
        print "calculating ma30 of...", code
        prices = StockPrice.query \
            .filter_by(code=code) \
            .filter(StockPrice.marketday <= end_time) \
            .order_by(StockPrice.marketday) \
            .all()
            #.filter(StockPrice.marketday >= '2012-01-01') \
        #print len(prices), prices[0], prices[-1]

        sqls = ""
        for i in range(0, len(prices)):
            if prices[i].marketday.date() >= start_time.date():
                if i < 29:
                    continue
                else:
                    #print i, len(prices[i - 29: i + 1]), prices[i - 29], prices[i]
                    #print i, prices[i], calculator.mean([x.close for x in prices[i - 29: i + 1]])
                    assert len(prices[i - 29: i + 1]) == 30
                    list_x = [float(x.close) for x in prices[i - 29: i + 1]]
                    list_w = [float(x.volume) for x in prices[i - 29: i + 1]]
                    sql = "UPDATE `stock_price` SET `ma30`=%f, `ma30w`=%f WHERE `id` = %d;\n" % \
                        (calculator.mean(list_x), calculator.mean(list_x, list_w), prices[i].id)
                    sqls += sql
            else:
                continue

        #print sqls
        f.write(sqls, "%06d" % code, ".sql")

    sqlhelper = SqlHelper(MYSQL_CONFIG)
    sqlhelper.execFolder(sqlfolder)
    shutil.rmtree(sqlfolder)
Example #2
0
def yahoo_price_to_db(start, end, codelist):
    tempfolder = TEMP_FOLDER + str(uuid.uuid1()) + '/'
    if not os.path.exists(tempfolder):
        os.mkdir(tempfolder)

    sqlfolder = SQL_FOLDER + str(uuid.uuid1()) + '/'
    if not os.path.exists(sqlfolder):
        os.mkdir(sqlfolder)

    y = Yahoo(tempfolder, sqlfolder)
    for code in codelist:
        y.getPrice(code, start, end)
    for code in codelist:
        y.parsePrice(code)

    sqlhelper = SqlHelper(MYSQL_CONFIG)
    sqlhelper.execFolder(sqlfolder)

    shutil.rmtree(tempfolder)
    shutil.rmtree(sqlfolder)