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

本文介绍了一种基于股价与5日均线关系的买卖策略,并通过实际案例验证了该策略的有效性。结果显示,在多个股票上的应用表明该策略表现不佳。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有些人认为,当股价突破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.png

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


更多内容请关注微信公众号
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值