利用JQdata获取市场(股票)历史时间段处于牛市状态还是熊市状态

转自 https://www.joinquant.com/post/15536?tag=algorithm

如题,牛市和熊市的交易者心理预期与交易习惯可能是不相同的,为了方便统计不同市场情绪下市场,可以使用历史数据进行简单划分,也可以大致判断目前市场走势处于一个什么状态之中

import numpy as np
import pandas as pd
from scipy.signal import  argrelextrema
from jqdatasdk import *
auth('账号','密码')
data = get_price('000001.XSHG',start_date='2007-01-01',end_date='2018-11-18')
# data.to_csv('000001.csv')
# data = pd.read_csv('000001.csv')  #为防止意外可以先将数据储存下来
def get_bull_or_bear(series,order=100):'''获取时间区间所处的牛熊市状态传入: series如close, order代表划分前后追朔的数据量,数据量越大,精度越小返回: 交易日的牛熊市的分类,series'''# 利用scipy在前后order个交易日内寻找极值点x=series.valueshigh = argrelextrema(x,np.greater,order=order)[0]low = argrelextrema(x,np.less,order=order)[0]high_s = pd.Series('high',series.iloc[high].index)low_s = pd.Series('low',series.iloc[low].index)data1 = pd.concat([high_s,low_s]).sort_index()other = []for i in range(len(data1)-1):               #去除重复值划分if data1.iloc[i]==data1.iloc[i+1]:other.append(data1.index[i])data1.drop(other,inplace=True)data1[series.index[-1]] = data1.iloc[-2]     #加上开头与结束的归类data1[series.index[0]] = data1.iloc[1]data1.sort_index(inplace=True)              # 获得牛熊分界点bull_data = pd.Series(False,series.index,name='is_bull')  #获得每一交易日属于牛市期还是熊市期if data1[0]=='high': is_bull =False else:is_bull=Truefor i in range(len(data1)-1):if is_bull:bull_data[data1.index[i]:data1.index[i+1]] = Trueis_bull=Falseelse:is_bull=Truereturn bull_data
bull_data  = get_bull_or_bear(data.close,100)
bull_data.value_counts()
False    1761
True     1128
Name: is_bull, dtype: int64
ax  = bull_data.plot(style='-',figsize=(17,5))
data.close.plot(secondary_y=True,ax=ax)
<matplotlib.axes._subplots.AxesSubplot at 0x7fe302f34790>

bull_data  = get_bull_or_bear(data.close,50)
ax  = bull_data.plot(style='-',figsize=(17,5))
data.close.plot(secondary_y=True,ax=ax)
<matplotlib.axes._subplots.AxesSubplot at 0x7fe309a63650>

# 很长时间我们可能会沉浸在牛市或者熊市的状态中,实际上早已脱离牛市(熊市),所以使用ema指标简单模拟何时我们发现离开了牛市(熊市)
series = pd.ewma(data.close,span=50)
bull_data  = get_bull_or_bear(series,100)
ax  = bull_data.plot(style='-',figsize=(17,5))
data.close.plot(secondary_y=True,ax=ax)
series.plot(secondary_y=True,ax=ax)
/opt/conda/envs/python2new/lib/python2.7/site-packages/ipykernel_launcher.py:2: FutureWarning: pd.ewm_mean is deprecated for Series and will be removed in a future version, replace with Series.ewm(ignore_na=False,span=50,min_periods=0,adjust=True).mean()
<matplotlib.axes._subplots.AxesSubplot at 0x7fe309d16350>

JQData | 利用区间极值法对牛熊市进行简单划分相关推荐

  1. 利用WCF的callback机制开发一个简单的多人游戏模型

    本文介绍了如何利用WCF和callback机制开发一个简单的多人在线游戏模型. 运行过程如下: 当game service 启动之后,若干个客户端便会自动连接到服务器.当某个客户端点击join gam ...

  2. Py之wxPython:利用wxPython设计GUI界面(图片背景+简单按钮)

    Py之wxPython:利用wxPython设计GUI界面(图片背景+简单按钮) 目录 实现界面 实现代码 实现界面 实现代码 import wxclass MyPanel(wx.Panel):def ...

  3. 从入门到入土:基于C语言采用UDP协议实现远程控制|详细说明|利用流套接字实现一个简单的远程控制系统|代码展示

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  4. 从入门到入土:基于C语言采用TCP协议实现远程控制|详细说明|利用流套接字实现一个简单的远程控制系统

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  5. python中英文字符怎么区分-python 利用utf-8编码判断中英文字符的简单示例

    这篇文章主要为大家详细介绍了python 利用utf-8编码判断中英文字符的简单示例,具有一定的参考价值,可以用来参考一下. 感兴趣python 利用utf-8编码判断中英文字符的简单示例的小伙伴,下 ...

  6. 59深度解密五十九:利用“抖音”进行吸粉的简单、另类玩法

    网络营销推广技术.技巧深度解密(五十九)指南: 1.本文档适合零基础和互联网营销推广工作者,主要讲解抖音吸粉的问题. 2.原创版权文档,任何抄袭或者全部.部分模仿都是侵权行为. 3.敬畏法律,尊重原创 ...

  7. java qq邮箱服务器端口_[Java教程]javamail 利用qq邮箱做邮箱服务器,简单小demo

    [Java教程]javamail 利用qq邮箱做邮箱服务器,简单小demo 0 2016-07-12 10:00:10 首先maven:javax.mailmail1.4.1 用户名密码验证:1 pu ...

  8. 利用JavaScript对HTML和CSS实现简单的动态操作

    假如我们现在想通过JS对原本的HTML或者CSS的内容或样式进行改变,比如说显示或隐藏内容.弹出各类对话框.改变内容的property.打开关闭窗口等等,我们应该怎么做呢? 首先我们先了解几个常用的J ...

  9. 史丹·温斯坦称傲牛熊市的秘密

    这本书干货并不多,而且相对适合刚刚接触股市的人,和量化关联性不大. 简单整理下要点东西吧 投资哲学: 1.不可在没有检验图形的情况下买卖股票. 2.不可在好消息公布时买入股票,尤其是图形显示,在消息公 ...

最新文章

  1. 美团mysql 闪回_MyFlash——美团点评的开源MySQL闪回工具
  2. ASIHTTPRequest类库简介和使用说明
  3. Windows 10 LTSC添加UWP支持
  4. 摇杆控制方向原理_医用无油空压机的送料作用及工作原理
  5. 「C++」C++ Primer Plus 笔记:第一章 预备知识
  6. Google Duo采用WaveNetEQ填补语音间隙
  7. [蓝桥杯][基础练习VIP]FJ的字符串-递归
  8. 112_Power Pivot 销售订单按 sku 订单类型特殊分类及占比相关
  9. volatile 用处
  10. 线程与进程,你真的清楚吗?
  11. 10 Seconds Count Down
  12. Greenplum 6 磁盘配额管理工具“Diskquota”
  13. 苹果手机屏幕尺寸_Apple 苹果 iPhone SE2智能手机屏幕测评报告 「Soomal」
  14. .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  15. 2074:【21CSPJ普及组】分糖果(candy)
  16. 深度学习中常见的打标签工具和数据集集合(转)
  17. 各手机品牌系列侧重方向
  18. 智能温室的优缺点,你都知道哪些?
  19. 大数据Spark实战第七集 机器学习和数据处理
  20. FTP协议主动(Port)模式和被动(Passive)两种模式详解

热门文章

  1. css设置div内文字垂直,DIV+CSS如何让文字垂直居中?
  2. spring 常用的注入方式有哪些?
  3. 你觉得沙盘游戏能带给你什么?
  4. nVisual创建机柜流程
  5. 电子科大计算机学院王纲,计算机•软件学院祝峰副教授专访
  6. 算法——地下城游戏(倒推DP)
  7. linux打开文件夹安装,Linux Supervisor的安装与使用入门
  8. 分布式任务系统cronsun
  9. ReactNative(学习部署){样式使用、图片、文本、布局、按钮、活动提示器、状态栏和背景图、开关和文本输入框}
  10. 【PCIe 6.0】PCIe Shared Flow Control (1) - 简介