问答交流

如何获得持仓股票的交易天数

由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。那么如何得到持仓股票的交易天数呢?

标签

持仓
评论
  • 交易天数的获取可以参考以下代码,其中start_date填写上次交易日期,end_date填写当期日期 df = DataSource("all_trading_days").read(start_date="2020-06-01", end_date="2020-06-30") len(df)
  • 问题解决了,非常感谢!
{link}