# 导入函数库
import jqdata
# 策略初始化
def initialize(context):
g.security = get_index_stocks('000002.XSHG')#股票池
set_option('use_real_price',True)#价格前复权
set_benchmark('000002.XSHG')
set_order_cost(OrderCost(open_tax=0,close_tax=0.001, open_commission=0.0003, close_commission=0.0003,min_commission=5), type='stock')
g.q=query(valuation,indicator).filter(valuation.code.in_(g.security))
g.N=20
g.p1=5
g.p2=10
run_monthly(handle,1)
def handle(context):
df=get_fundamentals(g.q)[['code','market_cap','roe']]#花式索引
df['market_cap']=(df['market_cap']-df['market_cap'].min())/(df['market_cap'].max()-df['market_cap'].min())
df['roe']=(df['roe']-df['roe'].min())/(df['roe'].max()-df['roe'].min())
df['score']=df['roe']-df['market_cap']
df=df.sort_values('score').iloc[-g.N:,:]
to_hold=df['code'].values#应该持有的股票
for stock in context.portfolio.positions:
stock_info=attribute_history(stock,g.p2)
#金叉:如果5日均线大于10日均线且不持仓