如何获得持仓股票的交易天数
由luojinzh创建,最终由luojinzh 被浏览 65 用户
#------------------------------------------止损模块START-------------------------------------------- date = data.current_dt.strftime('%Y-%m-%d') equities = {e.symbol: p for e, p in context.portfolio.positions.items() if p.amount>0} # 新建当日止损股票列表是为了handle_data 策略逻辑部分不再对该股票进行判断 current_stoploss_stock = [] if len(equities) > 0: for i in equities.keys(): stock_market_price = data.current(context.symbol(i), 'price') # 最新市场价格 last_sale_date = equities[i].last_sale_date # 上次交易日期 delta_days = data.current_dt - last_sale_date hold_days = delta_days.days # 持仓天数 # 建仓以来的最高价 highest_price_since_buy = data.history(context.symbol(i), 'high', hold_days, '1d').max() # 确定止损位置 stoploss_line = highest_price_since_buy - highest_price_since_buy * 0.1 record('止损位置', stoploss_line) # 如果价格下穿止损位置 if stock_market_price < stoploss_line: context.order_target_percent(context.symbol(i), 0) current_stoploss_stock.append(i) print('日期:', date , '股票:', i, '出现止损状况') #-------------------------------------------止损模块END--------------------------------------------------
以上是知识库里的移动止损代码,但是hold_days是股票的持仓日历天数,而data.history(context.symbol(i), 'high', hold_days, '1d') 中的hold_days是股票的交易天数,也就是说以上代码得不到正确的highest_price_since_buy。那么如何得到持仓股票的交易天数呢?