コード例 #1
0
def get_plan_buy_list_mv(planBuyList, dailyQuote, tradingDay, cannotBuyList, dailyQuotePn, dailyQuote1day, lastCapitalEntity, currSelectStock, preHoldList, currHoldSet):
    planBuyListMV = []
    if len(planBuyList) == 0:
        return planBuyListMV

    #无需排序,因为planBuyList已经排过序

    # 昨日总现金
    lastTotalCash = get_last_total_cash(lastCapitalEntity)

    for innerCode in planBuyList:
        # print('dailyQuote:' + str(len(dailyQuote)))
        # print('dailyQuote1day:'+str(len(dailyQuote1day)))
        # isCannotBuy = SourceDataDao.checkIfCannotBuy(dailyQuote,tradingDay,innerCode)
        isCannotBuy = SourceDataDao.check_if_cannot_buy_1day(dailyQuote1day, innerCode)
        # isCannotBuy = SourceDataDao.checkIfCannotBuyPn(dailyQuotePn, tradingDay, innerCode)
        # isCannotBuy = False
        #buyFlg = dailyQuoteRow[StockConst.buyFlg]
        #可买
        if not isCannotBuy:
            dailyQuoteRow = SourceDataDao.select_by_inner_code_and_date(dailyQuote, tradingDay, innerCode)
            # 当前vwap
            buyPrice = BackTestHelper.get_vwap(dailyQuoteRow)

            volWeight = currSelectStock.ix[innerCode][StockConst.VOL_WEIGHT]
            # 计划买入现金=昨日总现金*仓位权重
            buyCash = lastTotalCash * volWeight

            # [处理调整仓位2017-03-28]######################################
            # 在昨日持有列表中:调整仓位
            isAdjust = None
            partialFlg = None
            if innerCode in preHoldList:
                stockHoldEntity = currHoldSet.get(innerCode)
                # 当前vwap
                sellPrice = BackTestHelper.get_vwap(dailyQuoteRow)
                # 当前市值
                sellMV = BackTestHelper.get_sell_mv(stockHoldEntity.closePrice, stockHoldEntity.closeMV, sellPrice)
                # 不买的情况
                if buyCash <= sellMV:
                    buyCash = 0
                # 调整仓位
                else:
                    buyCash = buyCash - sellMV
                    isAdjust = 1
                    partialFlg = 1
            #################################################

            # 有买入
            if buyCash > 0:
                planDict = {StockConst.TRADINGDAY: tradingDay, StockConst.INNERCODE: innerCode, planDictMV:buyCash, planDictPrice:buyPrice, planDictIsAdjust:isAdjust, 'partialFlg': partialFlg}
                planBuyListMV.append(planDict)
        else:
            cannotBuyList.append(innerCode)

    return planBuyListMV
コード例 #2
0
def get_plan_buy_list_mv(planBuyList, dailyQuote, tradingDay, cannotBuyList, dailyQuotePn, dailyQuote1day, lastCapitalEntity, currSelectStock):
    planBuyListMV = []
    if len(planBuyList) == 0:
        return planBuyListMV

    #无需排序,因为planBuyList已经排过序

    lastStockMV = lastCapitalEntity.get_stock_mv() #昨日股票市值
    lastUsableCash = lastCapitalEntity.get_usable_cash() #昨日现金

    # 佣金(元)
    commission = BackTestHelper.get_sell_commission(lastStockMV, StockConst.SELL_COMMISSION / 100)
    # 昨日市值扣掉佣金后可得现金
    lastMVToCash = lastStockMV - commission
    # 昨日总现金
    lastTotalCash = lastUsableCash + lastMVToCash

    for innerCode in planBuyList:
        # print('dailyQuote:' + str(len(dailyQuote)))
        # print('dailyQuote1day:'+str(len(dailyQuote1day)))
        # isCannotBuy = SourceDataDao.checkIfCannotBuy(dailyQuote,tradingDay,innerCode)
        isCannotBuy = SourceDataDao.check_if_cannot_buy_1day(dailyQuote1day, innerCode)
        # isCannotBuy = SourceDataDao.checkIfCannotBuyPn(dailyQuotePn, tradingDay, innerCode)
        # isCannotBuy = False
        #buyFlg = dailyQuoteRow[StockConst.buyFlg]
        #可买
        if not isCannotBuy:
            dailyQuoteRow = SourceDataDao.select_by_inner_code_and_date(dailyQuote, tradingDay, innerCode)
            # 当前vwap
            buyPrice = BackTestHelper.get_vwap(dailyQuoteRow)

            volWeight = currSelectStock.ix[innerCode][StockConst.VOL_WEIGHT]
            # 计划买入现金=昨日总现金*仓位权重
            buyCash = lastTotalCash * volWeight

            # mVEntity = MVEntity.MVEntity(innerCode,buyMV)
            planDict = {StockConst.INNERCODE: innerCode, planDictMV:buyCash, planDictPrice:buyPrice}
            planBuyListMV.append(planDict)
        else:
            cannotBuyList.append(innerCode)

    return planBuyListMV
コード例 #3
0
def getActualBuyList(planBuyList, dailyQuote, tradingDate, cannotBuyList,
                     dailyQuotePn, dailyQuote1day):
    if len(planBuyList) == 0:
        return planBuyList
    actualBuyList = []
    for innerCode in planBuyList:
        # print('dailyQuote:' + str(len(dailyQuote)))
        # print('dailyQuote1day:'+str(len(dailyQuote1day)))
        # isCannotBuy = SourceDataDao.checkIfCannotBuy(dailyQuote,tradingDate,innerCode)
        isCannotBuy = SourceDataDao.check_if_cannot_buy_1day(
            dailyQuote1day, innerCode)
        # isCannotBuy = SourceDataDao.checkIfCannotBuyPn(dailyQuotePn, tradingDate, innerCode)
        # isCannotBuy = False
        #buyFlg = dailyQuoteRow[StockConst.buyFlg]
        #可买
        if not isCannotBuy:
            actualBuyList.append(innerCode)
        else:
            cannotBuyList.append(innerCode)

    return actualBuyList