首页 > 其他 > 详细

量化交易——布林带策略

时间:2020-05-19 21:22:33      阅读:73      评论:0      收藏:0      [点我收藏+]

一、布林带策略介绍

  布林带/布林线/保利加通道(Bollinger Band):由三条轨道线组成,其中上下两条线分别可以看成是价格的压力线支撑线,在两条线之间是一条价格平均线

  一般来说,股价会运行在压力线和支撑线所形成的通道中。

  与MACD、RSI、KDJ等指标一样,布林线(BOLL)指标也是股票市场最实用的技术分析参考指标。

1、计算公式

  中间线:20日均线

  up线(压力线):20日均线+N*SD(20日收盘价标准差)

  down线(支撑线):20日均线-N*SD(20日收盘价标准差)

  SD是标准差,N是倍数。

2、布林带策略

  当股价突破阻力线时——清仓

  技术分享图片

  当股价跌破支撑线时——全仓买入

  技术分享图片

  布林带策略研究——N的取值问题、布林带宽度等

  技术分享图片

   上图中修改计算周期,即修改均线。修改股票特性参数,即修改N的取值。

二、布林带策略实现

# 初始化函数,设定基准等等
def initialize(context):
    # 设定沪深300作为基准
    set_benchmark(000300.XSHG)
    # 开启动态复权模式(真实价格)
    set_option(use_real_price, True)
    # 股票类每笔交易时的手续费是:买入时佣金万分之三,卖出时佣金万分之三加千分之一印花税, 每笔交易佣金最低扣5块钱
    set_order_cost(OrderCost(close_tax=0.001, open_commission=0.0003, close_commission=0.0003, min_commission=5), type=stock)

    g.security = 002389.XSHE   # 航天彩虹
    g.M = 20      # 计算周期
    g.k = 2       # 股票特性参数,即N的取值

# 初始化此策略
def handle_data(context, data):
    # 获取该股票20日收盘价
    sr = attribute_history(g.security, g.M)[close]
    # 取得过去20日的平均价格
    ma = sr.mean()
    # numpy和pandas的std()均可计算标准差
    # up线(压力线):20日均线+N*SD(20日收盘价标准差)
    up = ma + g.k * sr.std()
    # down线(支撑线):20日均线-N*SD(20日收盘价标准差)
    down = ma - g.k * sr.std()
    
    # 股票开盘价格
    p = get_current_data()[g.security].day_open
    # 取得当前的现金
    cash = context.portfolio.available_cash
    # portfolio.positions持仓标的信息
    if p < down and g.security not in context.portfolio.positions:
        # 跌破下限买入信号且没有持仓
        order_value(g.security, cash)
    elif p > up and g.security in context.portfolio.positions:
        # 涨破上限卖出信号且有持仓
        order_target(g.security, 0)     # 卖出所有股票,使这只股票的最终持有量为0

  执行显示效果:

  技术分享图片

 

量化交易——布林带策略

原文:https://www.cnblogs.com/xiugeng/p/12913238.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!