• 策略探索1:微笑曲线结合BOLL线 应用于ETF


    这个策略适用于如下假设:

    1.  ETF价格是以大波段震荡的,总有波峰和波谷。

    2.  资金是可以持续买入的,总有钱在手。

    波段有三种情况:

    1.  上升趋势:

    2.  平盘宽幅震荡(长周期看这种情况比较多, 包含了1,3两种情况, 微笑曲线主要是应用于这种情况)

    3.  下降趋势

    策略中的主要参数为:

    1.  买点开始点B到买入结束点B‘, 期间越跌买入越多,越涨买入越少(定投)。B点可以参考BOLL线底部和从最高点跌落下来的百分比(参考历史经验数据)

    2.  卖点开始点S到卖出结束点S‘,期间越涨越卖,由于A股的特性一般卖点的时间都比较短,所以考虑按持股比例卖出。

    算法:

    参数:周期 DurationInDays天, 最高点 HighestValue, 买入起始点 BuyPoint = HighestValue *  DropPercentForBuy,  卖出起始点 SellPoint = HighestValue * DropPercentForSell

    初始买入股数: InitBuyQty, 持续买入加仓比例: BuyIncreasePercent , 卖出比例:SellPercent

       if (current_price < (1-g.dropPercentForBuy) * g.highestValue) and (cash > 0):
            if current_price < previous_price:
                g.buyQty = g.buyQty * (g.buyIncreasePercent + 1)
            else:
                g.buyQty = g.buyQty / (g.buyIncreasePercent + 1)
            # The buy qty must be devided by 100
            g.buyQty = math.ceil(g.buyQty / 100) * 100
            log.info("Buying %s",(g.buyQty))
            if g.buyQty > 0:
                order(security, g.buyQty)
        elif (current_price > (1-g.dropPercentForSell) * g.highestValue) and (security in context.portfolio.positions) and (context.portfolio.positions[security].closeable_amount > 0):
            sellQty = int(context.portfolio.positions[security].closeable_amount * g.sellPercent /100 / 100) * 100
            if sellQty > 0:
                log.info("Selling :" + str(sellQty))
                order(security, -1 * sellQty)

     接下来就是筛选合适的ETF和调整相应的参数来进行回测

    酒 ETF: 周期选择140天, 跌30%开始持续买入,上升到次高点的10%开始持续卖出

    神奇的是Drop比例大概是停止在黄金分割点 61.8%附近

    回测:

     这个收益并不理想, 所以还需要在大波段之间,根据BOLL线再进行微调。

    继续研究。

  • 相关阅读:
    二进制,八进制,十进制,十六进制之间的转换
    using关键字的使用
    简单工厂和单例设计模式
    面向对象的七种设计原则
    第六章 初始继承和多态
    第五章项目:体检套餐管理系统
    第二章《深入C#数据类型》项目经理评分
    <<MySchool数据库设计优化>> 内部测试
    Python 日志处理(一) 按Nginx log_format 分割日志记录
    Python 爬虫练习(一) 爬取国内代理ip
  • 原文地址:https://www.cnblogs.com/fdyang/p/16098433.html
Copyright © 2020-2023  润新知