![](https://img.haomeiwen.com/i5787343/377cb45b49b56b3c.png)
'''
同时操作多只股票
价格高于5天平均价*1.008,则买入
价格小于5天平均价*0.996,则卖出
'''
import jqdata
def initialize(context):
"""初始化函数"""
# 设置要操作的股票池
g.stocks = ['000001.XSHE', '000002.XSHE', '000004.XSHE', '000005.XSHE']
# 设定基准
set_benchmark('000300.XSHG')
# 开启动态复权
set_option('use_real_price', True)
def handle_data(context, data):
"""单位时间调用函数"""
# 循环每只股票
for security in g.stocks:
# 得出股票之前5天的均价
vwap = data[security].vwap(5)
# 得到上一时间点股票平均价
price = data[security].close
# 得到当前资金余额
cash = context.portfolio.cash
# 如果上一时间点价格小于5天平均价格*0.996,并且持有该股票,卖出
if price < vwap * 0.996 and context.portfolio.positions[security].closeable_amount > 0:
# 下单卖出
order(security, -500)
# 记录这次卖出
log.info('卖出股票 %s' % (security))
# 如果上一时间点价格大于5天平均价*1.008,并且有现金余额,买入
elif price > vwap * 1.008 and cash > 0:
# 下买入单
order(security, 500)
# 记录这次买入
log.info('买入股票 %s' % (security))
回测结果:
![](https://img.haomeiwen.com/i5787343/3f5e69055ee43c63.png)
注:本文章为个人学习笔记,参考了一些书籍与官方教程,不作任何商业用途!
网友评论