量化学习平台
文章
市场宽度
背离图
登录
注册
最简强者恒强策略
策略
作者: 水滴
```python # 风险及免责提示:该策略由聚宽用户在聚宽社区分享,仅供学习交流使用。 # 原文一般包含策略说明,如有疑问请到原文和作者交流讨论。 # 原文网址:https://www.joinquant.com/post/33618 # 标题:最简强者恒强策略 # 作者:囚徒 # 导入函数库 from jqdata import * import pandas as pd # 初始化函数,设定基准等等 def initialize(context): # 设定基准 set_benchmark('000300.XSHG') # 开启动态复权模式(真实价格) set_option("use_real_price", True) log.set_level('order', 'error') #log.set_level('strategy','error') # 开盘时运行 run_monthly(market_open,monthday = 1, time='open', reference_security='000300.XSHG') run_monthly(select_stocks,monthday=1,time='9:00') def select4hy(hycode): hys = get_industry_stocks(hycode) hys = [ s for s in hys if s in g.allstocks ] q = query(valuation.code,valuation.market_cap,valuation.circulating_market_cap,valuation.turnover_ratio) #df = get_fundamentals( q.filter(valuation.code.in_(hys)) ) dfp = get_fundamentals_continuously(q.filter(valuation.code.in_(hys)), end_date=None,count=1, panel=False) df = dfp.groupby(by='code')['market_cap'].agg('mean') df = df.to_frame() df.columns = ['market_cap'] df = df.sort_values(by='market_cap',ascending=False).head(10) return df.index.values.tolist() def select_stocks(context): df = get_all_securities(['stock']) df = df[df.start_date < context.previous_date - datetime.timedelta(60)] g.allstocks = df.index.values.tolist() stocks = [] hys = ['801124','801120' ,'801156' ,'801150' ,'801194'] g.cnt = len(hys) for hy in hys: codes = select4hy(hy) #print(codes) cnt = 0 for code in codes: if code not in stocks: stocks.append(code) cnt += 1 if cnt == 1: break; #print(stocks) g.stocks = stocks[:] print(stocks) return stocks def market_open(context): for s in context.portfolio.positions: if s not in g.stocks: order_target(s, 0) cnt = g.cnt for s in context.portfolio.positions: if context.portfolio.positions[s].total_amount > 50: cnt-=1 if cnt == 0: return position = context.portfolio.available_cash / cnt for s in g.stocks: if s not in context.portfolio.positions : order_value(s, position) ```
文章分类
关于作者
水滴
注册时间: