# 导入函数库
import jqdata
'''
每股营业利润作为alpha因子,每周一换仓,选在21日均线之上的前30名股票买入;
在dkx金叉且21日均线上买入,dkx死叉或21日均线下穿卖出
'''
# 策略初始化
def initialize(context):
g.security = ['601318.XSHG']#股票池
set_option('use_real_price',True)#价格前复权
set_benchmark('000300.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.p1=5
g.p2=10
def handle_data(context,data):
for stock in g.security:
#金叉:如果5日均线大于10日均线且不持仓
#死叉:如果5日均线小于10日均线且持仓
df=attribute_history(stock,g.p2)
print(df)
ma10=df['close'].mean()
ma5=df['close'][-5:].mean()
#if ma10>ma5 and context.portfolio.positions[stock].total_amoun>0:
if ma10>ma5 and stock in context.portfolio.positions:
#death cross
order_target(stock,0)
if ma10<ma5 and stock not in context.portfolio.positions:
#golden cross
order(stock,context.portfolio.available_cash*0.8)
#多只股票仓位管理
# record(ma5=ma5,ma10=ma10)
#画图还报错 有待研究
轨道参数和多支如何调仓有待调整