欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

布林带止盈止损策略改进

发布时间:2023/12/8 48 豆豆
生活随笔 收集整理的这篇文章主要介绍了 布林带止盈止损策略改进 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

布林带止盈止损策略改进

万维钢的《高手》里提到了《算法之美 指导工作与生活的算法》这本书,里面提到了诸如“什么时候开始谈女朋友”、“看房看到什么时候才开始决定买”等择时策略问题,数学家经过严密的推理计算得到了37%这个数字,也就是在给定的时间段内,以37%作为分隔点,前37%的时间作为观察,过了这个时间点就该做决策了。

那么联想到量化策略,我们什么时候止盈止损不也是同样的问题吗?
显然我们不能简单把37%作为止盈止损点,我的想法是把每次开仓后最大利润的37%(或者1-37%)作为止盈点,止损仍然是布林带的中轨。
核心代码如下:

info_dict = {'pre_signal': 0, 'open_price': 0, 'profit': 0}# 计算当前利润 df.at[i, 'profit'] = df.at[i, 'close'] - info_dict['open_price'] # 找到利润最大值并替换字典值 if df.at[i, 'profit'] > info_dict['profit']:info_dict['profit'] = df.at[i, 'profit']# 当本周期有平多仓信号,或者需要止盈止损 # 止盈点为当前收盘价小于最大利润的37%点位 condition1 = df.at[i, 'profit'] > 0 condition2 = df.at[i, 'profit'] < info_dict['profit'] condition3 = df.at[i, 'close'] < (info_dict['profit'] * 0.37 + info_dict['open_price']) condition = condition1 & condition2 & condition3if (df.at[i, 'signal_long'] == 0) or condition:df.at[i, 'signal'] = 0 # 将真实信号设置为0# 重置相关信息info_dict = {'pre_signal': 0, 'open_price': 0, 'profit': 0}

对比简单布林带策略的回测结果,发现只有XRP的表现最好,回测数据为Bitfinex从2017年5月20日至2019年7月31日的XRP/USD交易对:
简单布林带30分钟K线回测结果:"[550, 2.0]",1.0,13.020978994861938
此策略回测结果:"[650, 4.5]",1.0,15.271091957919307

简单布林带1小时K线回测结果:"[250, 4.0]",1.0,11.86845895898633
此策略回测结果:"[250, 3.5]",1.0,20.528533025681803

对其它币种来说,BCH和BSV的回测结果略有提高,回测数据为Bitfinex从2018年11月13日至2019年7月31日的BCH/USD、BSV/USD交易对,剩下的币种回测结果基本比简单布林带策略还要差得多,这引出两个问题:

  • 是不是在追求单笔交易收益后,大行情抓不住?
  • 是不是止盈止损策略适合震荡行情或者震荡多的币种?
  • 先不考虑上述问题,将37%改成(20%,80%)范围遍历,结果如下:
    BCH 15分钟:"[450, 3.0, 0.3]”,1.0,0.3,7.8139314738945815
    BSV 1小时:"[800, 1.5, 0.4]",1.0,0.4,3.3144425021985353
    BTC 1小时:"[700, 1.5, 0.2]",1.0,0.2,19.07141784696794
    DASH 1小时:"[550, 1.5, 0.4]",1.0,0.4,6.313149688177662
    EOS 1小时:"[950, 0.5, 0.2]",1.0,0.2,71.07926848532772
    ETC 1小时:"[950, 1.5, 0.4]",1.0,0.4,11.392449813728463
    ETH 30分钟:"[450, 1.5, 0.2]",1.0,0.2,12.198778802528139
    LTC 1小时:"[600, 3.0, 0.4]",1.0,0.4,22.30675663309639
    NEO 15分钟:"[450, 3.5, 0.8]",1.0,0.8,3.045600675225343
    OMG 15分钟:"[800, 2.5, 0.2]",1.0,0.2,7.118352066554033
    QTUM 1小时:"[350, 1.5, 0.2]",1.0,0.2,7.355790185437384
    XMR 1小时:"[850, 2.0, 0.2]",1.0,0.2,5.754729568997898
    XRP 1小时:"[250, 3.5, 0.4]",1.0,0.4,21.670168180676765
    ZEC 1小时:"[700, 1.5, 0.2]",1.0,0.2,5.86152947574348

    简单布林带回测结果:
    BCH 15分钟:"[950, 2.0]",1.0,4.548056980493423
    BSV 1小时:"[750, 1.0]",1.0,2.4428266310284905
    BTC 1小时:"[500, 0.5]",1.0,19.19686781323508
    DASH 1小时:"[150, 2.5]",1.0,30.51202416576995
    EOS 1小时:"[750, 2.0]",1.0,104.33355263999118
    ETC 1小时:"[700, 4.5]",1.0,17.230519477228864
    ETH 30分钟:"[300, 1.5]",1.0,16.251101335487025
    LTC 1小时:"[650, 3.0]",1.0,41.994913026010295
    NEO 15分钟:"[950, 2.0]",1.0,7.509372549944163
    OMG 15分钟:"[700, 2.5]",1.0,19.02156117250065
    QTUM 1小时:"[650, 1.0]",1.0,9.577289343702825
    XMR 1小时:"[150, 2.5]",1.0,13.031009898772105
    XRP 1小时:"[250, 4.0]",1.0,11.86845895898633
    ZEC 1小时:"[300, 1.0]",1.0,37.88666173129326

    总结

    以上是生活随笔为你收集整理的布林带止盈止损策略改进的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。