添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/weixin_42219751/article/details/105812173

BOLL指标是美国股市分析家约翰·布林根据统计学中的标准差原理设计出来的一种非常简单实用的技术分析指标。一般而言,股价的运动总是围绕某一价值中枢(如均线、成本线等)在一定的范围内变动,布林线指标正是在上述条件的基础上,引进了“股价通道”的概念,其认为股价通道的宽窄随着股价波动幅度的大小而变化,而且股价通道又具有变异性,它会随着股价的变化而自动调整。由于之前大部分交易策略都是选股或者趋势追踪的择时,所以基于这一指标我们设计了一个均值回归的交易策略。

策略逻辑 :行情大部分时候都在震荡,所以均值回归可以盈利。

策略内容 :当价格触及布林线上轨的时候进行卖出,当触及下轨的时候,进行买入。

资金管理 :每次100股

源代码

# coding=utf-8
from __future__ import print_function, absolute_import
from gm.api import *
本策略采用布林线进行均值回归交易。当价格触及布林线上轨的时候进行卖出,当触及下轨的时候,进行买入。
使用600004在 2009-09-17 13:00:00 到 2020-03-21 15:00:00 进行了回测。
1:实盘中,如果在收盘的那一根bar或tick触发交易信号,需要自行处理,实盘可能不会成交。
# 策略中必须有init方法
def init(context):
    """ init函数是在策略开始运行时被调用,进行初始化工作的函数"""
    # 设置布林线的三个参数
    context.maPeriod = 26  # 计算BOLL布林线中轨的参数
    context.stdPeriod = 26  # 计算BOLL 标准差的参数
    context.stdRange = 1  # 计算BOLL 上下轨和中轨距离的参数
    # 设置要进行回测的合约 合约名称写法详见 https://www.myquant.cn/docs/python/python_concept#44e233ec21d880c2
    # 或者可以在掘金终端的仿真交易中输入这个代码看是否查询的是需要的标的
    context.symbol = 'SHSE.600004'  # 订阅&交易标的, 此处订阅的是600004
    context.period = max(context.maPeriod, context.stdPeriod, context.stdRange) + 1  # 订阅数据滑窗长度
    # 滑窗指的是每次从最新的行情往回取一定周期的数据, 相当于行情软件中k线图一个屏所容纳的k线
    # 订阅行情 第一个参数是标的, 第二个是时间周期,表示日线,第三个指指定设置count参数,表示需要的滑窗大
    # 详见 https://www.myquant.cn/docs/python/python_subscribe#15ad56f8be8519c0
    subscribe(symbols= context.symbol, frequency='1d', count=context.period)
def on_bar(context, bars):
    当init中subscribe订阅过的标的的k线完成的时候,on_bar 会被调用,用来处理计算和交易下单逻辑
    详见 https://www.myquant.cn/docs/python/python_data_event#b198d6b609adb1d4
    # 获取数据滑窗,只要在init里面有订阅,在这里就可以取的到, 返回值是pandas.DataFrame的数据结构
    data = context.data(symbol=context.symbol, frequency='1d', count=context.period, fields='close')
    # 计算boll的上下界
    bollUpper = data.close.rolling(context.maPeriod).mean() \
                + context.stdRange * data.close.rolling(context.stdPeriod).std()
    bollBottom = data.close.rolling(context.maPeriod).mean() \
                 - context.stdRange * data.close.rolling(context.stdPeriod).std()
    # 获取现有持仓
    pos = context.account().position(symbol=context.symbol, side=PositionSide_Long)
    # 交易逻辑与下单
    # 当有持仓,且股价穿过BOLL上界的时候卖出股票。
    if data.close.values[-1] > bollUpper.values[-1] and data.close.values[-2] < bollUpper.values[-2]:
        if pos:  # 有持仓就市价卖出股票。
            order_volume(symbol=context.symbol, volume=100, side=OrderSide_Sell,
                         order_type=OrderType_Market, position_effect=PositionEffect_Close)
            print('以市价单卖出一手')
    # 当没有持仓,且股价穿过BOLL下界的时候买出股票。
    elif data.close.values[-1] < bollBottom.values[-1] and data.close.values[-2] > bollBottom.values[-2]:
        if not pos:  # 没有持仓就买入一百股。
            order_volume(symbol=context.symbol, volume=100, side=OrderSide_Buy,
                         order_type=OrderType_Market, position_effect=PositionEffect_Open)
            print('以市价单买入一手')
if __name__ == '__main__':
        strategy_id策略ID,由系统生成
        filename文件名,请与本文件名保持一致
        mode实时模式:MODE_LIVE回测模式:MODE_BACKTEST
        token绑定计算机的ID,可在系统设置-密钥管理中生成
        backtest_start_time回测开始时间
        backtest_end_time回测结束时间
        backtest_adjust股票复权方式不复权:ADJUST_NONE前复权:ADJUST_PREV后复权:ADJUST_POST
        backtest_initial_cash回测初始资金
        backtest_commission_ratio回测佣金比例
        backtest_slippage_ratio回测滑点比例
    run(strategy_id='strategy_id',
        filename='main.py',
        mode=MODE_BACKTEST,
        token='token_id',
        backtest_start_time='2009-09-17 13:00:00',
        backtest_end_time='2020-03-21 15:00:00',
        backtest_adjust=ADJUST_PREV,
        backtest_initial_cash=1000,
        backtest_commission_ratio=0.0001,
        backtest_slippage_ratio=0.0001)

最终回测结果

回归策略最终也跑赢了指数,但是需要注意,这只是在现在没用什么大行情的情况下适用,如果出现了大牛市,还是需要小心使用为好。

声明:本文仅供交流与探讨,不够成任何投资建议,否则后果自负!

1、肯特纳通道简介 肯特纳通道是由Chester W. Keltner在上个世纪60年代发明的一个 交易 系统,其核心思想是均线理论。并且当时该系统在非常长的一段时间内,得到了令人瞩目的成绩。虽然原版的肯特纳通道系统没有刚出现时那么有效,但它的核心思想,至今都对 交易 界产生很深远的影响。 2、肯特纳通道的原理 说起通道类 策略 ,大家可能会想到著名的 林带 (BOLL),但不一样的是肯特纳通道先是用最高价、...
NO1:前言 河水并不需要计划自己的行进路线,却毫无例外的到达海洋。价格也同样如此,它总是沿着最小阻力线去运动,它总是怎么容易怎么来。如果上升的阻力比下跌的阻力小,价格就会上涨,反之亦然。通常一个大幅度的反转形态,意味着随后会有更大幅度的运动。 无论是上升趋势,还是下降趋势,在每一次重大的趋势运动之后,都将产生一定程度的 撤。 撤与原有价格幅度往往构成... 国内程序化 交易 还处于起步阶段,本文摘取了海外比较公开的日内 交易 策略 思想给予大家一些分享。 在做程序化 交易 的过程中,首先要碰到的问题是如何设计自己的投资 策略 ,你想要让计算机执行你的何种 交易 思路?在建立自己的投资 策略 时,可以参考一下四种公认的经典 策略 ,相信你能从中获得灵感. 四种 策略 : 1、菲阿里四价 昨天高点、昨天低点、昨日收... 注意:本文章的算法 策略 适用于可借资源的市场(数字币、贵金属),不适用于股票 很多人在进行 交易 的时候,都喜欢一直盯着大盘看,为什么呢?原因很简单,大家都在关心着当前的行情有没有大涨大落,正常情况下(用货币来买入 交易 物)没有人会害怕行情大涨,但是一旦出现了极端情况,行情一路大跌,很多人会血压升高,满面通红。 咱们书归正文,很多人都在寻找能提前预
一、 均值 回归 理论 均值 回归 :股票价格无论高于或低于价值中枢(或 均值 )都会以很高的概率向价值中枢 回归 的趋势。何时会发生 均值 回归 ,属于“随机漫步”范畴。 均值 回归 的理论基于以下观 :价格的波动一般会以它的均线为中心。即当标的价格由于波动而偏离移动的均线时,它将调整并重新归于均线。   偏离程度:(MA-P)/MA 1、 均值 回归 原理 均值 回归 法则:万物最终都将 回归 于其长期的 均值 交易 是个很宽泛的名词,在这里我主要讲的是股票,期货,外汇的 交易 。从长远来看,未来肯定是量化 交易 赶超人工 交易 的时代。在中国,年轻一代受教育程度也逐渐提高,注重投资理财的人肯定是越来越多。 股票是这么多年来唯一能跑赢通货膨胀的手段。 期货和外汇这里可以充满想象,你可以用500倍的杠杆去博取千百倍的收益。存在一夜暴富,一年贫穷的魅力。 当你使用了杠杆的时候,你最少设置四个价格:...
“ 现在已然衰朽者,将来可能重放异彩。现在备受青睐者,将来却可能黯然失色。” 当事物发展严重偏离其 均值 时, 均值 会像万有引力一样令其 回归 。如果时间足够长,万物都终将 回归 于其 均值 。正所谓:盛极必衰,否极泰来。 在金融学中, 均值 回归 是价格偏离均价或价值一定程度后向其靠拢的规律。本质上, 均值 回归 就是哲学思想中所说的『物极必反』。用大白话可以简单地概括为 “ 涨多必跌,跌多必涨 ” 。 在商品期货交...
千图成像!祝可爱的小伙伴们圣诞快乐????前言一、????圣诞树????二、代码分析1.头像爬取2.千图成像写在最后 当走上街头时能隐约察觉到多了些许“红白绿”的色彩,那是:圣诞老人????、雪花❄️、圣诞树????。弥红灯闪烁,各类促销活动海报令郎满目。没有错,圣诞节快来了~ 从写博客开始,一路上得到了不少小伙伴的支持和鼓励,而这周的总排名不偏不倚,恰好100名整。我想,这大概是某种巧合,更确切来说应该是一种激励。近些日,严酷寒冬似乎柔情了许多,有了那么几日的柔柔暖阳,而我希望可以把这份温暖也带给大
Tsvetan Petkov: 100% agree. I am a very experienced investor (over the 25 years). You have pinpoint the core issue. Most programmer do not know the nature of the game. CFDs is a zero sum game just like forex. Equity is a music chair game... etc. I am in search of a CTO for a startup. Please PM me if you have interest. Happy New Year 2021! 这个布林带的均值回归交易策略,回测收益率把我给吓傻了 weixin_49031698: 你这个的意思是前一天的open和close出来之后 如果穿越布林线 第二天开盘就下单? 我为何离开量化私募行业? ann_hp: 量化是标品行业内很细也很神秘的一帮派啊……请问您离开私募量化后投入了哪里,公募基金? 谈谈量化交易的一些“深坑” 思路清奇哈哈哈哈