目录

一.顶部与底部识别算法

二.拟合历史曲线,平滑处理

三.根据识别出的极值画出历史曲线

四.如何构建顶部识别的做空策略

一.顶部与底部识别算法

在python scipy里面signal模块中有argrelextrema算法可以较为方便的为我们寻找某个时间区间下的局部极值。

np.greater寻找局部最大值,np.less寻找局部最小值。order参数为基点前后比较的期数。

###导入算法模块
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from statsmodels.nonparametric.kernel_regression import KernelReg
from scipy.signal import argrelextrema
###back_max_loc,back_min_loc为局部最大值、最小值的标签,back_data_array_fit为金融序列,np.array格式。
N=60,M=60
back_max_loc=[argrelextrema(back_data_array_fit, np.greater,order=N)[0][i] for i in range(len(argrelextrema(back_data_array_fit, np.greater,order=N)[0]))]back_min_loc=[argrelextrema(back_data_array_fit, np.less,order=M)[0][i] for i in range(len(argrelextrema(back_data_array_fit, np.less,order=M)[0]))]

二.拟合历史曲线,平滑处理

由于商品期货的合约收盘价序列会存在较多的尖峰导致最终识别出过多的无效的极值。因此,在处理进行局部极值识别前我们先对数据进行平滑处理,在这里我们采用核回归的方式来平滑曲线。

核回归与普通的ols回归的区别在于其会利用核函数作为权重构建非线性函数,传统的ols是等权的形式。

在statsmodels中有具体的核回归的包可以直接供我们使用。具体参数使用情况可以详见下面的链接。statsmodels.nonparametric.kernel_regression.KernelReg — statsmodels

df=pd.read_excel('C:\\Users\\Administrator\\Desktop\\p_wind_index.xls',index_col=0)
back_data_array_kr = KernelReg(df['close'] ,list(range(len(df))),'c',bw=[5])
back_data_array_fit, back_data_array_std =back_data_array_kr.fit(list(range(len(df))))
df['fit']=back_data_array_fit

三.根据识别出的极值画出历史曲线

得到局部极值的标签后,可以画出历史收盘价的曲线观察一下局部极值点位是否寻找的有问题或者是存在部分极值没有识别进入的问题。如果需要改变纳入的极值点,可以修改第一步中的order参数。

plt.figure(figsize=(16,9))
font = {'family' : 'STZhongsong','weight' : 'normal','size' : 15}
font2 = {'family' : 'STZhongsong','weight' : 'normal','size' : 20}
df.datetime=pd.to_datetime(df.datetime)plt.scatter(df.datetime.values[back_max_loc],df.close.values[back_max_loc] ,marker='o',color='red',linewidths=10,label='局部峰值')
plt.scatter(df.datetime.values[back_min_loc],df.close.values[back_min_loc] ,marker='o',color='green',linewidths=10,label='局部波谷')
plt.plot(df.datetime,df.close,color='blue',label='收盘价')
plt.legend(loc=0,prop=font)
plt.title('基于核回归的局部极值识别',font2)
plt.xlabel('时间',font)
plt.ylabel('收盘价',font)
plt.tick_params(labelsize=15)
plt.grid()plt.savefig('D:\工作\技术指标顶部回溯\\核回归拟合.png')
plt.show()     

下面给出的是以棕榈油指数收盘价为例的局部极值识别后的曲线,图中红色为局部峰值,绿色为局部波谷,蓝色的线为指数收盘价,可以观察到局部极值识别算法可以较好的识别出时间序列中的极值点。

四.如何构建顶部识别的做空策略

在利用局部极值算法识别出商品走势的局部极值后,我们可以结合技术指标帮助我们判断合适的入场点,如判断出当前位置为局部峰值,可以结合MACD、TRIX等指标来构建空头策略。

具体的策略表现及具体调整会在下一篇文章中展示。具体数据及代码见百度网盘

链接: https://pan.baidu.com/s/1XDNMW-V_WJ9xzWvBMAEraQ

提取码: 6g8t

商品期货局部极值识别判断峰值波谷相关推荐

  1. Python3识别判断图片主要颜色并和颜色库进行对比的方法

    [更新]主要提供两种方案: 方案一:(参考网上代码,感觉实用性不是很强)使用PIL截取图像,然后将RGB转为HSV进行判断,统计判断颜色,最后输出RGB值 方案二:使用opencv库函数进行处理.(效 ...

  2. python颜色识别_浅谈Python3识别判断图片主要颜色并和颜色库进行对比的方法

    [更新]主要提供两种方案: 方案一:(参考网上代码,感觉实用性不是很强)使用PIL截取图像,然后将RGB转为HSV进行判断,统计判断颜色,最后输出RGB值 方案二:使用opencv库函数进行处理.(效 ...

  3. knn人脸识别判断_WEEK1_LRamp;KNN

    第一节 机器学习介绍 by 袁源老师 因为是导入的又Jupyter notebook导出的MD文件,所以排版有些混乱.抱歉. 理论知识 机器学习是人工智能(AI)的一部分,研究如何让计算机从数据学习某 ...

  4. knn人脸识别判断_测试使用K-最近邻(kNN)算法的30个问题

    作者|SUNIL RAY 编译|Flin 来源|analyticsvidhya 介绍 如果你要问我机器学习中2种最直观的算法--那就是k最近邻(kNN)和基于树的算法.两者都易于理解,易于解释,并且很 ...

  5. python如何判断小数_python中怎么识别判断是否是小数?

    Python判断一个数是否为小数 一.判断一个数是否为小数 1.有且仅有一个小数点 2.小数点的左边可能为正数或负数 3.小数点的右边为正数 二.实现代码def is_float(str): if s ...

  6. 2021,送你一朵小红花

    生命是一场勇敢的航行 2021,送你一朵小红花 心如花木 ,向阳而生 直面生活的勇气,是朵永不凋零的花 [小红花] 在电影<送你一朵小红花>中,小红花代表了"奖励你积极主动&qu ...

  7. 图像清晰度判断-自动对焦的实现笔记一

    系列文章目录 文章目录 系列文章目录 前言 对焦原理 光学系统成像原理 镜头的离焦原理 相位对焦 反差对焦 概念 过程 原理 对焦评价函数 主动对焦 被动对焦 理想对焦评价函数 单峰性和无偏性 对焦窗 ...

  8. 人脸识别虽好,还需行业自律与法律监管有道

    近年来,围绕人脸识别的争议不断.前不久,"人脸识别第一案"一审宣判,认定杭州野生动物世界采集消费者照片信息超出法律意义上的必要原则要求,不具有正当性.与此同时,一则"戴着 ...

  9. 硬核科普:一文看懂人脸识别技术流程

    小编是个天生懒惰的人,同时又是个急性子,这样的人最享受被科技服务的乐趣. 举个例子,十多年前大家还在普遍用现金的时代,小编在商店买东西排队结账,每当看到收银员找零时手忙脚乱的样子就会心急如焚,只恨不能 ...

最新文章

  1. 通通玩blend美工(6)下——仿iPhone滚动选择器的ListBox(交互逻辑)
  2. 实时数据处理插件开发flume+kafka+storm:flume
  3. mysql 慢sql分析_如何分析Mysql慢SQL
  4. 数据泵 远程服务端数据导出
  5. 2020-06-05 原始套接字/AF_PACKET链路层访问
  6. jQuery-瀑布流-绝对定位布局(二)(延迟AJAX加载图片)
  7. php爬取网站所有链接,php 爬取超链接
  8. 烟台蓬莱机场停车费一天多少钱,烟台机场停车哪里便宜
  9. sprintf函数的使用方法
  10. 如何免费批量将caj转换成PDF
  11. HP M1136 USB 连接安装驱动 提示“新设备已连接” 解决方案
  12. 第六章 三维全景技术
  13. 【攻防世界】十八、mfw
  14. vmware虚拟机连不上服务器,VMware虚拟机nat模式连不上网怎么办
  15. 13种APP推广手段与渠道
  16. win7系统 修改默认管理员用户名administrator方法
  17. 如何判断您是否拥有32位或64位版本的Google Chrome浏览器
  18. 前端大屏展示框架搭建(一)
  19. 迭代式开发使用方法总结
  20. 【数据结构】— 「时间复杂度」与「空间复杂度」

热门文章

  1. i春秋 misc code_in_morse、套娃
  2. 狗狗搜索受版权保护文件破解方法~
  3. 宜人贷第四季度净营收12.71亿元 同比下滑30%
  4. 隆云通光合有效辐射传感器 LYA-16
  5. Android的Notepad记事本案例实战
  6. 公安出入境管理用指纹采集设备接口规范
  7. 19年以后ArcGIS 调用天地图
  8. innos a35 root教程_方法
  9. Stardust for Mac(ae粒子星辰特效插件) V0.9.1特别版
  10. linux oracle lrm00109,Linux安装oracle 10g常见问题之——ORA-01078,LRM-00109,ORA-01102