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
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
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