'''像stocksnum那样用全局变量的方式建立period变量用一个变量记录策略运行天数用取余运算配合if判断语句判断是否又经过period天'''def initialize(context):run_daily(period, time='every_bar')# 设定好要交易的股票数量g.stocksnum = 7# 设定交易周期g.period = 13# 纪录策略进行天数g.days = 0def period(context):# 判断策略进行天数能否被整除余1,这样就算进行了一个周期if g.days % g.period == 0:# 找出市值排名最小的前stocksnum只股票# 获取当天的股票列表scu = get_all_securities(date=context.current_dt).index.tolist()# 选出scu内的市值排名最小的前stocksnum只股票q = query(valuation.code).filter(valuation.code.in_(scu)).order_by(valuation.market_cap.asc()).limit(g.stocksnum)df = get_fundamentals(q)# 选取股票代码并转换为listbuylist = list(df['code'])# 对已持有的股票,如果不在表单中,卖出for stock in context.portfolio.positions:if stock not in buylist:order_target(stock, 0) # 将该股票的持仓调整为0# 买入要买入的股票,买入金额可为可用资金的stocksnum分之一# 将资金分为stocksnum份position_per_stk = context.portfolio.cash / g.stocksnum# 用position_per_stk大小的g.stocksnum份资金去买buylist中的股票for stock in buylist:order_value(stock, position_per_stk)# 策略进行天数+1g.days += 1'''像stocksnum那样用全局变量的方式建立period变量 用一个变量记录策略运行天数 用取余运算配合if判断语句判断是否又经过period天 ''' def initialize(context): run_daily(period, time='every_bar') # 设定好要交易的股票数量 g.stocksnum = 7 # 设定交易周期 g.period = 13 # 纪录策略进行天数 g.days = 0 def period(context): # 判断策略进行天数能否被整除余1,这样就算进行了一个周期 if g.days % g.period == 0: # 找出市值排名最小的前stocksnum只股票 # 获取当天的股票列表 scu = get_all_securities(date=context.current_dt).index.tolist() # 选出scu内的市值排名最小的前stocksnum只股票 q = query(valuation.code ).filter( valuation.code.in_(scu) ).order_by( valuation.market_cap.asc() ).limit(g.stocksnum) df = get_fundamentals(q) # 选取股票代码并转换为list buylist = list(df['code']) # 对已持有的股票,如果不在表单中,卖出 for stock in context.portfolio.positions: if stock not in buylist: order_target(stock, 0) # 将该股票的持仓调整为0 # 买入要买入的股票,买入金额可为可用资金的stocksnum分之一 # 将资金分为stocksnum份 position_per_stk = context.portfolio.cash / g.stocksnum # 用position_per_stk大小的g.stocksnum份资金去买buylist中的股票 for stock in buylist: order_value(stock, position_per_stk) # 策略进行天数+1 g.days += 1
1 thought on “聚宽小市值策略模板”