##python实现背离点的判断(test2)

这一次是先判断金叉和死叉,然后把其输出结果作为新的两张表,然后在新的两张表里分别进行判断是否是背离点。

import baostock as bs
import pandas as pd
import talib as ta
import matplotlib.pyplot as pltdef computeMACD(code, startdate, enddate):login_result = bs.login(user_id='anonymous', password='123456')print(login_result)###获取股票日K线数据###rs = bs.query_history_k_data(code,"date,code,close,tradeStatus",start_date=startdate, end_date=enddate,frequency="d", adjustflag="3")#### 打印结果集 ####result_list = []while (rs.error_code == '0') & rs.next():# 获取一条记录,将记录合并在一起result_list.append(rs.get_row_data())df = pd.DataFrame(result_list, columns=rs.fields)# 剔除停盘数据df2 = df[df['tradeStatus'] == '1']# 获取dif,dea,hist,它们的数据类似是tuple,且跟df2的date日期一一对应# 记住了dif,dea,hist前33个为Nan,所以推荐用于计算的数据量一般为你所求日期之间数据量的3倍# 这里计算的hist就是dif-dea,而很多证券商计算的MACD=hist*2=(dif-dea)*2dif, dea, hist = ta.MACD(df2['close'].astype(float).values, fastperiod=12, slowperiod=26, signalperiod=9)df3 = pd.DataFrame({'dif': dif[33:], 'dea': dea[33:], 'hist': hist[33:]},index=df2['date'][33:], columns=['dif', 'dea', 'hist'])df3.plot(title='MACD')df4= pd.merge(df3, df2, on='date', how='left')plt.show()df4.to_csv("./test2_df4.csv", index=False)#print(df4)# 寻找MACD金叉和死叉datenumber = int(df3.shape[0])#金叉表today_data = pd.DataFrame(columns=['date', 'dif', 'dea', 'close'])lastday_data = pd.DataFrame(columns=['date', 'dif', 'dea', 'close'])#死叉表today_data2 = pd.DataFrame(columns=['date', 'dif', 'dea', 'close'])lastday_data2 = pd.DataFrame(columns=['date', 'dif', 'dea', 'close'])for i in range(datenumber - 1):if((df4.iloc[i, 1] <= df4.iloc[i, 2]) & (df4.iloc[i + 1, 1] >= df4.iloc[i + 1, 2])):#判断金叉#print("期货代码:{},MACD金叉的日期:{}, 价格:{},dif:{},dea:{}".format(code, df4.iloc[i + 1, 0], df4.iloc[i + 1, 5],df4.iloc[i + 1, 1], df4.iloc[i + 1, 2]))#if (df3.iloc[i, 0] <= df3.iloc[i, 1]) & (df3.iloc[i + 1, 0] >= df3.iloc[i + 1, 1]):dict1={'date':df4.iloc[i + 1, 0],'dif':df4.iloc[i + 1, 1],'dea':df4.iloc[i + 1, 2],'close':df4.iloc[i + 1, 5]}dict2={'date':df4.iloc[i, 0],'dif':df4.iloc[i, 1],'dea':df4.iloc[i, 2],'close':df4.iloc[i, 5]}today_data = today_data.append(dict1, ignore_index=True)lastday_data = lastday_data.append(dict2, ignore_index=True)if ((df4.iloc[i, 1] >= df4.iloc[i, 2]) & (df4.iloc[i + 1, 1] <= df4.iloc[i + 1, 2])):#判断死叉dict1 = {'date': df4.iloc[i + 1, 0], 'dif': df4.iloc[i + 1, 1], 'dea': df4.iloc[i + 1, 2],'close': df4.iloc[i + 1, 5]}dict2 = {'date': df4.iloc[i , 0], 'dif': df4.iloc[i, 1], 'dea': df4.iloc[i, 2],'close': df4.iloc[i, 5]}today_data2 = today_data2.append(dict1, ignore_index=True)lastday_data2 = lastday_data2.append(dict2, ignore_index=True)print(today_data)print(lastday_data)print(today_data2)print(lastday_data2)# 下面开始判断背离点flag = Falsefor j in range(today_data.shape[0] - 1):if ((lastday_data.iloc[j, 1] >today_data.iloc[j+1 , 1]) & (lastday_data.iloc[j, 3] < today_data.iloc[j+1, 3])):  #判断顶背离flag = Trueprint("期货代码:{},顶背离时间:{}, 价格:{}".format(code, today_data.iloc[j+1, 0], today_data.iloc[j+1, 3]))if not flag:print("没有顶背离点")flag=Falsefor j in range(today_data2.shape[0]-1):if((lastday_data2.iloc[j, 1] < today_data2.iloc[j+1, 1]) & (lastday_data2.iloc[j, 3] > today_data2.iloc[j+1 , 3])): #判断底背离flag=Trueprint("期货代码:{},底背离时间:{}, 价格:{}".format(code, today_data2.iloc[j+1, 0], today_data2.iloc[j+1, 3]))if not flag:print("没有底背离点")bs.logout()return (dif, dea, hist)if __name__ == '__main__':code = 'sh.600000'startdate = '2019-06-08'enddate = '2020-01-08'(dif, dea, hist) = computeMACD(code, startdate, enddate)

python背离点的判断相关推荐

  1. python 判断括号是否匹配_使用Python实现一个栈判断括号是否平衡

    栈(Stack)在计算机领域是一个被广泛应用的集合,栈是线性集合,访问都严格地限制在一段,叫做顶(top). 举个例子,栈就想一摞洗干净的盘子,你每次取一个新盘子,都是放在这一摞盘子的最上头,当你往里 ...

  2. Python基础之条件判断

    Python基础之条件判断 一.环境介绍 二.条件判断介绍 三.if语句的使用 1.if的第一种使用方法 2.if的第二种使用方法 3.if的第三种使用方法 4.if的第四种使用方法 四.if判断的运 ...

  3. Python编程语言学习:判断变量是否为NONE或False的几种常见写法(if not用法教程)

    Python编程语言学习:判断变量是否为NONE或False的几种常见写法(if not用法教程) 目录 判断变量是否为NONE或False的几种常见写法(if not用法教程) 1.not用法 2. ...

  4. Python中类型最佳判断方法

    Python在定义变量的时候不用指明具体的的类型,解释器会在运行的时候会自动检查变量的类型,并根据需要进行隐式的类型转化,因为Python是动态语言,所以一般情况下是不推荐进行类型转化的. 比如进行& ...

  5. python中的is判断引用的对象是否一致,==判断值是否相等

    python中的is判断引用的对象是否一致,==判断值是否相等 a = 10 b = 20 list = [1,2,3,4,5] print(a in list) print(b not in lis ...

  6. python定义函数prime判断是否是素数_用自定义函数判断素数 用C语言编写自定义函数prime(int x),判断x是否为素数?...

    用C语言编写自定义函数prime(int x),判断x是否为素数? int prime(int x) { int i,k k=(int)sqrt( (double)x ) for(i=2i&l ...

  7. python编程之如何判断某个元素在不在列表里面

    python编程之如何判断某个元素在不在列表里面 keyword_list = ["对象","python"]if "对象" in keyw ...

  8. python中none算变量吗_在python中对变量判断是否为None的三种方法总结

    三种主要的写法有: 第一种:if X is None; 第二种:if not X: 当X为None,  False, 空字符串"", 0, 空列表[], 空字典{}, 空元组()这 ...

  9. python 身体BMI指数判断

    3.30 python身体BMI指数判断 代码: height,weight=eval(input("请输入身高(米)体重(公斤):")) bim=weight/pow(heigh ...

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

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

最新文章

  1. pycharm一键调整代码格式(快捷键)
  2. linux 进程 内存 换入换出,linux - 在从bash进程替换完成输入后,如何继续发送到stdin? - 堆栈内存溢出...
  3. react native与webview通信跳转页面报错:Cannot read property 'setNativeProps' of undefiend
  4. 【Linux 内核 内存管理】内存管理架构 ⑤ ( sbrk 内存分配系统调用代码示例 | 在 /proc/pid/maps 中查看进程堆内存详情 )
  5. C++cycle sort循环排序的实现算法(附完整源码)
  6. vue实现进度条隐藏_Vue 中使用 NProgress 实现进度条
  7. 设计数据密集型应用程序_设计数据密集型应用程序书评
  8. python func_Python functool module
  9. 女士细线毛衣起多少针_从起针到缝合,教你织毛衣的各种要点(详细教程)
  10. mysql 自动化 安装_mysql自动化安装
  11. python和java反射_python实现反射功能
  12. 我的RTOS 之二 --Threadx在skyeye上仿真測试(基于2410)
  13. js渐渐入门之懒人框架- laz.js
  14. 当心!你的App 可能是山寨的
  15. dos攻击工具如何使用?两款dos攻击工具介绍
  16. 3dmax:3dmax三维VR渲染设置(【DMC采样器】、【Vray默认置换】、【Vray系统】、【Vray日志】、杂项选项、灯光属性)之详细攻略
  17. 【计算机英语】期末复习笔记
  18. 我就是这样学 Python 的
  19. 煮一壶清茶,悟一种人生
  20. 2022-2028年中国电子商务行业市场深度分析及投资前景展望报告

热门文章

  1. 手写字体研究-matlab
  2. 中兴ZXDSL831驱动
  3. EPS电动转向系统分析
  4. 耗时一个月,总结的Linux C++后台开发学习路线(已签腾讯sp,附学习资料)
  5. Android Studio 错误记录:If you already have a 64-bit JDK installed ,defined a JAVA_HOME variable..
  6. win10 远程桌面连接设置
  7. 勘测定界坐标交换格式文本文件转换成 shapefile 格式
  8. lisp自动生成界址点表_LISP语言在宗地界址点成果表的应用
  9. 2019年电赛H题电磁炮实录
  10. 使用ps替换图片颜色为透明色