量化投资(二):五日均价策略

有些人认为,当股价突破5日均线时,可以买入;当股价跌破5日均线时,可以卖出。
本策略可以验证这种方法是否无效。

一、策略思想

股价大于五日均价,买入;
股价小于五日均价,卖出。

二、实现代码

# 定义一个全局变量, 保存要操作的证券
security = '600016.XSHG'

# 初始化此策略
# 设置我们要操作的股票池, 这里我们只操作一支股票
set_universe([security])

# 每个单位时间(如果按天回测,则每天调用一次,如果按分钟,则每分钟调用一次)调用一次
def handle_data(context, data):
    # 取得过去五天的平均价格
    average_price = data[security].mavg(5)
    # 取得当前价格
    current_price = data[security].price
    # 取得当前的现金
    cash = context.portfolio.cash

    # 如果当前价格高出五天平均价1%, 则全仓买入
    if current_price > 1.01 * average_price:
        # 计算可以买多少只股票
        number_of_shares = int(cash/current_price)
        # 购买量大于0时,下单
        if number_of_shares > 0:
            # 买入股票
            order(security, +number_of_shares)
            # 记录这次买入
            log.info("Buying %s" % (security))
    # 如果当前价格低于五天平均价, 则空仓卖出
    elif current_price < 0.99 * average_price and context.portfolio.positions[security].amount > 0:
        # 卖出所有股票,使这只股票的最终持有量为0
        order_target(security, 0)
        # 记录这次卖出
        log.info("Selling %s" % (security))
    
    # 画出每天的价格
record(stock_price = data[security].price)

三、运行结果

量化投资(二):五日均价策略_第1张图片
1.png

从上图可以看出,将此策略运用于民生银行(600016),策略收益远小于基准收益。
换成中国中铁(601390)、中国联通(600050)、中国铁建(601186)、山东黄金(600547),效果也差不多。
这说明这个策略,是个不好的策略。




更多内容请关注微信公众号


量化投资(二):五日均价策略_第2张图片
wechat.jpg

你可能感兴趣的:(量化投资(二):五日均价策略)