前言

使用Python开发一个股票项目。
项目地址:
https://github.com/pythonstock/stock
相关资料:
http://blog.csdn.net/freewebsys/article/details/78294566
主要使用开发语言是python。
使用的lib库是pandas,tushare,TensorFlow,tornado等。

本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/78559737
未经博主允许不得转载。
博主地址是:http://blog.csdn.net/freewebsys

1,简单的股票分析

python 真的是一个大宝库,里面的api真的超级多,而且使用超级方便。 是科学计算,数据统计分析的高效工具。程序员的最爱。入门很简单。各种类库也超级方便。
如果得到一个股票数据,要计算股票的波峰,波谷。这个是一个 【Top N 问题】 我们只需要维护一个N 个大小的数组,初始化放入N Query,按照每个Query的统计次数由大到小排序, 然后遍历这300万条记录,每读一条记录就和数组最后一个Query对比,遍历。
实现算法就忽略了,这里可以直接使用heapq 包的方法。 heapq.nlargest(n) 计算最大值,既是波峰。 heapq.nsmallest(n) 计算最大值,既是波谷。
为啥不直接取得股票的最大值,最小值。因为股票一个最高点可能是特殊的事件造成的。不具备代表性。 获得多个值能预测的充分些。

2,代码说明

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import heapq
import tushare as ts
import datetime#使用平安银行的数据
date_end = datetime.datetime(int(2017), int(11), int(6))
date_start = (date_end + datetime.timedelta(days=-90)).strftime("%Y-%m-%d") #往前90 天数据
date_end = date_end.strftime("%Y-%m-%d")
code = "601857"
#测试
print(code, date_start, date_end)#假设股票数据
# open, high, close, low, volume, price_change, p_change, ma5, ma10, ma20, v_ma5, v_ma10, v_ma20, turnover
stock = ts.get_hist_data(code, start=date_start, end=date_end)
stock = stock.sort_index(0)  # 将数据按照日期排序下。#打印头和尾部数据
print(len(stock))
print(stock.head(1))
print(stock.tail(1))def wave_guess(arr):wn = int(len(arr)/4) #没有经验数据,先设置成1/4。print(wn)#计算最小的N个值,也就是认为是波谷wave_crest = heapq.nlargest(wn, enumerate(arr), key=lambda x: x[1])wave_crest_mean = pd.DataFrame(wave_crest).mean()#计算最大的5个值,也认为是波峰wave_base = heapq.nsmallest(wn, enumerate(arr), key=lambda x: x[1])wave_base_mean = pd.DataFrame(wave_base).mean()print("######### result #########")#波峰,波谷的平均值的差,是波动周期,对于股票就是天。wave_period = abs(int( wave_crest_mean[0] - wave_base_mean[0]))print("wave_period_day:", wave_period)print("wave_crest_mean:", round(wave_crest_mean[1],2))print("wave_base_mean:", round(wave_base_mean[1],2))############### 以下为画图显示用 ###############wave_crest_x = [] #波峰xwave_crest_y = [] #波峰yfor i,j in wave_crest:wave_crest_x.append(i)wave_crest_y.append(j)wave_base_x = [] #波谷xwave_base_y = [] #波谷yfor i,j in wave_base:wave_base_x.append(i)wave_base_y.append(j)#将原始数据和波峰,波谷画到一张图上plt.figure(figsize=(20,10))plt.plot(arr)plt.plot(wave_base_x, wave_base_y, 'go')#红色的点plt.plot(wave_crest_x, wave_crest_y, 'ro')#蓝色的点plt.grid()plt.show()#使用收盘价格画图:
arr1 = pd.Series(stock["close"].values)
wave_guess(arr1)arr2 = pd.Series(stock["ma5"].values)
wave_guess(arr2)arr3 = pd.Series(stock["v_ma5"].values)
wave_guess(arr3)

3,股票数据分析

计算最小的N个值,也就是认为是波谷
wave_crest = heapq.nlargest(wn, enumerate(arr), key=lambda x: x[1])
wave_crest_mean = pd.DataFrame(wave_crest).mean()

计算最大的5个值,也认为是波峰
wave_base = heapq.nsmallest(wn, enumerate(arr), key=lambda x: x[1])

怎样从一个集合中获得最大或者最小的 N 个元素列表?

http://python3-cookbook.readthedocs.io/zh_CN/latest/c01/p04_find_largest_or_smallest_n_items.html
使用堆进行计算。

4,总结

python的类库非常的丰富,使用起来非常方便。
其实运算速度也挺快的。关键是开发速度快,节约人力成本。

本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/78559737
未经博主允许不得转载。
博主地址是:http://blog.csdn.net/freewebsys

PythonStock(11):使用pandas计算股票波峰波谷猜想相关推荐

  1. python计算波峰波谷值的方法(极值点)

    https://www.jb51.net/article/180654.htm python求极值点主要用到scipy库. 1. 首先可先选择一个函数或者拟合一个函数,这里选择拟合数据:np.poly ...

  2. PythonStock(13):使用stockstats计算股票中的16个常用指标方法大全

    前言 使用Python开发一个股票项目. 项目地址: https://github.com/pythonstock/stock 相关资料: http://blog.csdn.net/freewebsy ...

  3. 常用方法(图片逆光度、傅里叶变换、寻找波峰波谷、计算俯仰/侧脸)

    1.计算图片逆光度 from matplotlib import pyplot as plt import cv2 import numpy as np import os import mathde ...

  4. 【指标计算】老妈再也不担心我的指标算不好了(教你用MyTT、TA-Lib、Pandas TA计算股票指标,附源代码)

    教你用MyTT.TA-Lib.Pandas TA计算股票指标,附源代码 前言 一.目前Python流行的几款股票行情分析指标计算库 1. MyTT 2. Ta-lib 3. Pandas TA 二.指 ...

  5. 基于波峰波谷法计算信号的周期

    波峰波谷法原理是:查找信号相邻波峰波谷间隔采样点的数量,乘上采样间隔的时间,最后求平均值即是信号的周期.但该方法对噪声较为敏感,采用波峰波谷法计算滤波后信号的周期,如图所示. 该方法主要是需要找到信号 ...

  6. matlab如何寻找波谷,波峰波谷法计算信号的周期及其Matlab程序

    波峰波谷法原理是:查找信号相邻波峰波谷间隔采样点的数量,乘上采样间隔的时间,最后求平均值即是信号的周期.但该方法对噪声较为敏感,采用波峰波谷法计算滤波后信号的周期,如图所示. 该方法主要是需要找到信号 ...

  7. 用matplotlib和pandas绘制股票MACD指标图,并验证化交易策略

    我的新书<基于股票大数据分析的Python入门实战>于近日上架,在这篇博文向大家介绍我的新书:<基于股票大数据分析的Python入门实战>里,介绍了这本书的内容.这里将摘录出部 ...

  8. 用聚类算法计算股票的支撑位和阻力位

    本文将向您展示如何使用不同的聚类算法计算股票支撑位和阻力位. 股票数据 - 我在 mongoDB 数据库中有股票数据.您还可以免费从雅虎财经获取这些数据. Python 连接 MongoDB 设置 I ...

  9. 金融数据分析(八)计算股票的超额收益率

    案例(三)简单金融数据分析 项目二:计算股票的超额收益率 设计一个程序,计算股票的季收益率和年收益率,并计算单支股票收益率相对同一时期股票市场平均收益率的超额收益率(即相对收益率). 本项目采用tus ...

最新文章

  1. 819 c语言程序设计,2018年大连海洋大学计算机科学与技术819高级语言程序设计(C语言)之C程序设计考研核心题库...
  2. sysbench-系统、数据库压力测试工具
  3. Matlab:绘制简单能量的接收机工作特性曲线(Energy_detection_simulation_ok)
  4. eclipse工作空间在哪里配置?
  5. 数学大师丘成桐:中国的科技至少要倒退20年
  6. 自定义键盘码_?光效DIY+自定义宏:玩法多样的杜伽k320RGB机械键盘
  7. ModelCoder国产化解决方案已逐步代替国外软件Matlab/Simulink
  8. 详解OTT与IPTV的不同之处
  9. linux下补丁制作及打补丁实例
  10. 【转载】QT 的信号与槽机制介绍
  11. mysql 提高恢复速度_如何有效地提高 MySQL 的备份和恢复速度?
  12. Database Design Best Practice (2)
  13. C/C++多线程面试题
  14. Quartz 定时任务
  15. 提取Excel中文字链接地址
  16. ArcGIS 10.1 for Server安装教程系列—— Linux下的单机安装
  17. 模型的偏差、方差分析
  18. Java,哈希码以及equals和==的区别(转载)
  19. CUDA编程--邻近点查询
  20. 后台数据与前端数据进行传递交互

热门文章

  1. 【语音识别】基于matlab电话按键语音识别(含按键录音)【含Matlab源码 1752期】
  2. SaaSpace:适合游戏开发者的最佳 3D 建模软件
  3. Hadoop命令大全
  4. 三维GIS在现实领域的应用
  5. 图论(prim,kruskal,Dijsktra三大算法)
  6. jqweui表单日期只选年月的问题
  7. 大数据篇(六) Spark Stream简介
  8. MyBatis中关于resultType和resultMap的区别
  9. Android在线预览pdf文件的几种方式
  10. Serializable接口和Parcelable接口