# 初始化函数,设定要操作的股票、基准等等
def init(context):
# 定义一个全局变量, 保存要操作的股票
# 000001(股票:平安银行)
g.security = '000333.SZ'
# 设定沪深300作为基准
set_benchmark('000300.SH')
# 开启动态复权模式(真实价格)
# 每个单位时间(如果按天回测,则每天调用一次,如果按分钟,则每分钟调用一次)调用一次
def handle_bar(context,bar_dict):
# 获取股票的收盘价
security = g.security
close_data1 = history(g.security, ['close'], 20, '1d')
close_data2 = history(g.security, ['close'], 10, '1d')
# 取得过去五天的平均价格
MA10 = close_data2['close'].mean()
MA5 = close_data1['close'].mean()
# 取得上一时间点价格
MA1 = close_data1['close'].iloc[-1:] .mean()
# 取得当前的现金
cash = context.portfolio.stock_account.available_cash
# 获取当前账户当前持仓市值
market_value = context.portfolio.stock_account.market_value
# 如果上一时间点价格高出五天平均价1%, 则全仓买入
if MA1 > 1.01*MA10:
# 用所有 cash 买入股票
order_value(g.security, cash)
# 记录这次买入
log.info("Buying %s" % (g.security))
# 如果上一时间点价格低于五天平均价, 则空仓卖出
elif MA1 > MA5 and market_value > 0:
# 卖出所有股票,使这只股票的最终持有量为0
order_target(g.security, 0)
# 记录这次卖出
log.info("Selling %s" % (g.security))
# 画出上一时间点价格
record(stock_price=MA1)