专栏首页听雨堂极值波动策略

极值波动策略

设想得很好,在每次波动的极值点进行操作,用买入和卖出价格两个数组记录买入和卖出价格。这样可以保证每个操作都盈利。

以一次价格低点为例,从低到高,查询卖出列表,如果匹配,说明前期的某个卖出操作已经可以盈利,则买入,并删除卖出数组中的记录。从低到高搜索,可以保证把最高的卖出价格留到后面,增加操作的容量。

如果卖出列表没有对应操作,则查询买入列表,如果临近范围已经有买入记录,则不买,防止在某个价位反复买入,如果该区间没有买入记录,则买入,并记录。核心策略如下:

#分布判断,如果可行,修改g.long或g.short,返回True
#使用g.orderprice和g.mm判断
def distcheck(): 
    jl=1   #预设的盈利距离
    idx=int(g.orderprice/g.step) #求出区间索引
    buycnt=len([x for x in g.buy if x>0])
    sellcnt=len([x for x in g.sell if x>0])
    
    if g.mm==1:  #买入
        #if buycnt-sellcnt>0:
            #return False
        for i in range((idx+jl),len(g.sell)):    #遍历寻找
            if g.sell[i]>0:
                print("买入%.2f(%.2f)"%(g.orderprice,g.sell[i]))
                g.sell[i]=0
                return True
        if g.buy[idx]==0:
            g.buy[idx]=g.orderprice
            print("买入%.2f"%(g.orderprice))
            return True
    if g.mm==-1:  #卖出
        #if sellcnt-buycnt>0:
            #return False
        for i in range((idx-jl),0,-1):    #遍历寻找
            if g.buy[i]>0:
                print("卖出%.2f(%.2f)"%(g.orderprice,g.buy[i]))
                g.buy[i]=0
                return True
        if g.sell[idx]==0:
            g.sell[idx]=g.orderprice
            print("卖出%.2f"%(g.orderprice))
            return True
            
    return False

这是回测的结果:

很不理想,这种操作,可能导致分化,买入列表最后都是一些高价,卖出列表都是低价,这是最后阶段的列表

无论是调整区间,还是调整盈利预期,还是保持两个列表平衡,都不能有效改善。

分析原因:买卖的控制,尽管保证了每次买卖自己盈利了,但对于总体,或者两个列表上“挂着”的交易来说,可能是一种亏损。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • C#实现微信AES-128-CBC加密数据的解密

    小程序登录时,获得用户的信息,只是昵称,无法用作ID。而有用的数据,都加密着,腾讯给出了解密的方法: 加密数据解密算法 接口如果涉及敏感数据(如wx.getUs...

    用户1075292
  • .Net中DES加密的细节问题

    一般的做法和MSDN都差不多,都是这种方式   加密:byte[]--write-->ms   解密:ms--read-->byte[]   即创建CryptS...

    用户1075292
  • 地图坐标

    1、椭球面 地图坐标系由大地基准面和地图投影确定,大地基准面是利用特定椭球体对特定地区地球表面的逼近,因此每个国家或地区均有各自的大地基准面,我们通常称谓的...

    用户1075292
  • 关于安卓下拉刷新时的悬浮菜单栏

    最近在github上遇到一个下拉刷新上拉加载的项目--BGARefreshLayout。地址。使用里面的BGARefreshLayout嵌套一个

    用户4458175
  • 【leetcode刷题】T192-2的幂

    https://leetcode-cn.com/problems/power-of-two/

    木又AI帮
  • 5G-频点频率换算

    FREF = FREF-Offs +ΔFGlobal (NREF –NREF-Offs)

    用户6184845
  • Unity Shader 屏幕后效果——全局雾

    Unity内置的雾效需要在每个shader中分别编写,造成了极大的不便。这里利用屏幕后处理产生可单独控制且自由度更高的雾效。

    汐夜koshio
  • 小技巧让你的 if else 看起来更漂亮

    刚看到一个提问帖: 《如果程序中出现多层嵌套的 if...else...语句,如何重构可使程序逻辑变得更为清晰易读?》,因回答篇幅比较大,单独开个帖子答一下。 ...

    wangxl
  • LeetCode 65. 有效数字(逻辑题,难)

    来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/valid-number 著作权归领扣网络所有。商业...

    Michael阿明
  • 圈复杂度和代码质量优化(附带示例代码纠正代码质量)

    圈复杂度(Cyclomatic Complexity)是衡量计算机程序复杂程度的一种措施。它根据程序从开始到结束的线性独立路径的数量计算得来的。

    NateHuang

扫码关注云+社区

领取腾讯云代金券