コード例 #1
0
ファイル: StockLoader.py プロジェクト: A1eXFei/StockMarket
def smartUpdate(end_date=date.today()):
    sql = "SELECT * FROM stockmaster where LAST_UPDATED_DATE < '" + du.convertDateToString(end_date, "%Y-%m-%d") + "'"
    result_set = dbu.query(sql)
    while len(result_set) > 0:
        for each in result_set:
            stock_code = each[0]
            index_indicator = each[2]
            stock_code_163 = each[3]
            stock_code_sina = each[4]
            start_date = each[5]

            logger.info("UPDATING STOCK, STOCK CODE IS " + stock_code)

            if start_date is None:
                start_date = du.convertStringToDate("1990-01-01", "%Y-%m-%d")
            elif start_date == end_date:
                continue
            else:
                start_date = start_date + timedelta(1)

            data = bd.getStockData(stock_code_163, start_date, end_date)

            if len(data) > 0:
                last_updated_date = data[0].split(",")[0]
                bd.insertBasicData(stock_code, data)
                logger.info("INSERT BASIC DATA COMPLETED")
                bd.insertTechData(stock_code, data)
                logger.info("INSERT TECH DATA COMPLETED")
                bd.insertAnalysisData(stock_code, data)
                logger.info("INSERT ANALYSIS DATA COMPLETED")
                bd.updateMasterDate("LAST_UPDATED_DATE", last_updated_date, stock_code_163)
                logger.info("LAST DATE UPDATED")

                if str(index_indicator) == "1":
                    rf = bd.getRecoveryFactor(stock_code_163, stock_code_sina, start_date)
                    bd.insertRecoveryFactor(stock_code, rf)
                    logger.info("INSERT RF DATA COMPLETED")
            else:
                logger.error("NO DATA IS RECEIVED FROM 163")

        result_set = dbu.query(sql)
        if len(result_set) > 0:
            logger.info("NOT ALL STOCKS ARE UPDATED, WAIT 10 MINUTES FOR NEXT UPDATE")
            tm.sleep(10*60)

    return "COMPLETED"
コード例 #2
0
ファイル: BRAR.py プロジェクト: A1eXFei/StockMarket
def getBROrARs(key, stock_code, date, period):
    sql = (
        "SELECT BRAR_"
        + key
        + " FROM stocktechdata WHERE STOCK_CODE = '"
        + stock_code
        + "' AND DATE <= '"
        + date
        + "' ORDER BY DATE DESC LIMIT "
        + str(period)
    )
    return dbu.query(sql)
コード例 #3
0
ファイル: BasicData.py プロジェクト: A1eXFei/StockMarket
def getStockDate(stock_code, date, offset):
    sql = "SELECT getStockDate('" + stock_code + "', '" + date + "', " + str(offset) + ")"
    return dbu.query(sql)[0][0].strftime("%Y-%m-%d")
コード例 #4
0
ファイル: BasicData.py プロジェクト: A1eXFei/StockMarket
def getLowPriceInPeriod(field, stock_code, date, period):
    sql = "SELECT MIN(A." + field + ") FROM (SELECT * FROM stockbasicdata t WHERE t.STOCK_CODE ='" + stock_code + "' AND t.DATE <= '" + date + "' AND t.VOLUMN <> 0 ORDER BY t.DATE DESC LIMIT " + str(
        period) + ") A"
    return dbu.query(sql)[0][0]
コード例 #5
0
ファイル: BasicData.py プロジェクト: A1eXFei/StockMarket
def getTechDataInPeriod(field, stock_code, date, period):
    sql = "SELECT " + field + " FROM stocktechdata WHERE STOCK_CODE ='" + stock_code + "' AND DATE <='" + date + "' AND SUSPENDED <>'Y' ORDER BY DATE DESC LIMIT " + str(
        period)
    return dbu.query(sql)
コード例 #6
0
ファイル: BasicData.py プロジェクト: A1eXFei/StockMarket
def isHoliday(date):
    sql = "SELECT isHoliday('" + date + "')"
    return dbu.query(sql)[0][0]
コード例 #7
0
ファイル: BasicData.py プロジェクト: A1eXFei/StockMarket
def getTechData(field, stock_code, date):
    sql = "SELECT " + field + " FROM stocktechdata WHERE STOCK_CODE ='" + stock_code + "' AND DATE ='" + date + "'"
    return dbu.query(sql)[0][0]
コード例 #8
0
ファイル: BasicData.py プロジェクト: A1eXFei/StockMarket
def getBasicDataInPeriod(field, stock_code, date, period):
    sql = "SELECT " + field + " FROM stockbasicdata WHERE STOCK_CODE ='" + stock_code + "' AND DATE <='" + date + "' AND VOLUMN <> 0 ORDER BY DATE DESC LIMIT " + str(
        period)
    return dbu.query(sql)