接上一节,我们获得了分析结果 result_df 与图片,现在把结果导出为excel表格

导出表格

代码如下

#建立book
writer = pd.ExcelWriter('分析结果.xlsx',engine='xlsxwriter')
workbook=writer.book
#建立sheet 表名称为 股票代码
result_df.to_excel(writer,'%s分析'%stock_df.iloc[0,0]) writer.save()
writer.close()

结果如下

然后贴上图片

#以股票代码命名的图片 例 000001.SZ.jpg
worksheet.insert_image('F1', '%s.jpg'%stock_df.iloc[0,0])

到此,这个项目功能完成

完整代码

import mplfinance as mpf
import tushare as ts
import pandas as pd
import datetime
import pandas_ta as tatoken='你的token'
ts.set_token(token)
pro=ts.pro_api()def get_stock(num):stocknum=numtoday = datetime.datetime.today()startday=today+datetime.timedelta(days=-365)today = today.strftime('%Y%m%d')startday =startday.strftime('%Y%m%d')stock_df= pro.daily(ts_code=stocknum, start_date=startday,end_date=today)stock_df['trade_date'] = pd.to_datetime(stock_df['trade_date'])stock_df.set_index('trade_date',inplace=True)stock_df=stock_df.rename(columns={'vol':'volume'})stock_df=stock_df.iloc[::-1]return stock_dfdef get_technical(stock_df):#MACDmacd_df = ta.macd(stock_df['close'])#KDJkdj_df = ta.kdj(stock_df['high'],stock_df['low'],stock_df['close'])#均线 5、10、20天ma5_df = pd.DataFrame(ta.sma(stock_df['close'],length=5))ma10_df = pd.DataFrame(ta.sma(stock_df['close'],length=10))ma20_df = pd.DataFrame(ta.sma(stock_df['close'],length=20))#连接所有技术指标结果与收盘价以列形式在一个DataFrametotal_df = pd.concat([macd_df,kdj_df,ma5_df,ma10_df,ma20_df,stock_df['close']],axis=1)#获取前12天的数据total_df=total_df.iloc[-12:,:]return macd_df,kdj_df,ma5_df,ma10_df,ma20_df,total_dfdef get_analyse(total_df):result_df = pd.DataFrame(columns=['日期','MACD','KDJ','均线','收盘价'])for i in range(2,len(total_df)):date= total_df.index[i].strftime('%Y-%m-%d')result_df.loc[i,'日期'] = dateresult_df.loc[i,'收盘价'] = total_df.iloc[i,9]#MACD形态分析if total_df.iloc[i-1,0]<total_df.iloc[i-1,2] and total_df.iloc[i,0]>total_df.iloc[i,2] and total_df.iloc[i-1,1]<0 and total_df.iloc[i,1]>0:result_df.loc[i,'MACD']='低位金叉'elif total_df.iloc[i-1,0]<total_df.iloc[i-1,2] and total_df.iloc[i,0]>total_df.iloc[i,2]:result_df.loc[i,'MACD']='金叉'elif total_df.iloc[i-1,0]>0 and total_df.iloc[i-1,2]>0 and total_df.iloc[i,0]>0 and total_df.iloc[i,2]>0 and total_df.iloc[i-1,0]>total_df.iloc[i-1,2] and total_df.iloc[i,0]<total_df.iloc[i,2] and total_df.iloc[i-1,1]>0 and total_df.iloc[i,1]<0:result_df.loc[i,'MACD']='高位死叉'elif total_df.iloc[i-1,0]>total_df.iloc[i-1,2] and total_df.iloc[i,0]<total_df.iloc[i,2]:result_df.loc[i,'MACD']='死叉'elif total_df.iloc[i-1,0]<0 and total_df.iloc[i,0]>0:result_df.loc[i,'MACD']='DIF上穿0轴'else:result_df.loc[i,'MACD']='中性'#KDJ形态分析if total_df.iloc[i-1,3]<total_df.iloc[i-1,4] and total_df.iloc[i,3]>total_df.iloc[i,4] and total_df.iloc[i,3]<20 and total_df.iloc[i,4]<20 and total_df.iloc[i,5]<20:result_df.loc[i,'KDJ']='低位金叉'elif total_df.iloc[i-1,3]<total_df.iloc[i-1,4] and total_df.iloc[i,3]>total_df.iloc[i,4]:result_df.loc[i,'KDJ']='金叉'elif total_df.iloc[i-1,3]>total_df.iloc[i-1,4] and total_df.iloc[i,3]<total_df.iloc[i,4] and total_df.iloc[i,3]>50 and total_df.iloc[i,4]>50 and total_df.iloc[i,5]>50:result_df.loc[i,'KDJ']='高位死叉'elif total_df.iloc[i-1,3]>total_df.iloc[i-1,4] and total_df.iloc[i,3]<total_df.iloc[i,4]:result_df.loc[i,'KDJ']='死叉'elif total_df.iloc[i-1,5]<0 and total_df.iloc[i,5]>0:result_df.loc[i,'KDJ']='J线上穿0轴'elif total_df.iloc[i-1,5]>90 and total_df.iloc[i,5]>90 and total_df.iloc[i-1,5]>total_df.iloc[i,5]:result_df.loc[i,'KDJ']='适当减仓'elif total_df.iloc[i-1,5]<20 and total_df.iloc[i,5]<20 and total_df.iloc[i-1,5]<total_df.iloc[i,5]:result_df.loc[i,'KDJ']='适当关注'else:result_df.loc[i,'KDJ']='中性'#定义判断均线多种形态函数if total_df.iloc[i-1,6]<total_df.iloc[i-1,7] and total_df.iloc[i,6]>total_df.iloc[i,7]:result_df.loc[i,'均线']='5交10金叉'elif total_df.iloc[i-1,6]<total_df.iloc[i-1,8] and total_df.iloc[i,6]>total_df.iloc[i,8]:result_df.loc[i,'均线']='5交20金叉'elif total_df.iloc[i-1,6]>total_df.iloc[i-1,7] and total_df.iloc[i,6]<total_df.iloc[i,7]:result_df.loc[i,'均线']='5交10死叉'elif total_df.iloc[i-1,6]>total_df.iloc[i-1,8] and total_df.iloc[i,6]<total_df.iloc[i,8]:result_df.loc[i,'均线']='5交20死叉'elif total_df.iloc[i-2,6]<total_df.iloc[i-1,6] and total_df.iloc[i-1,6]>total_df.iloc[i,6]:result_df.loc[i,'均线']='5天线向下拐'elif total_df.iloc[i-2,6]>total_df.iloc[i-1,6] and total_df.iloc[i-1,6]<total_df.iloc[i,6]:result_df.loc[i,'均线']='5天线向上拐'elif total_df.iloc[i,9]>total_df.iloc[i,6]:result_df.loc[i,'均线']='5天线上'elif total_df.iloc[i,9]<total_df.iloc[i,6]:result_df.loc[i,'均线']='5天线下'return result_dfdef draw_pic(macd_df,kdj_df,ma5_df,ma10_df,ma20_df,stock_df):add_plot = [mpf.make_addplot(ma20_df['SMA_20'].tail(60),panel=0,color='lightgreen'),mpf.make_addplot(ma10_df['SMA_10'].tail(60),panel=0,color='teal'),mpf.make_addplot(ma5_df['SMA_5'].tail(60),panel=0,color='orange'),mpf.make_addplot(kdj_df['K_9_3'].tail(60),panel=2,ylabel='KDJ',color='red'),mpf.make_addplot(kdj_df['D_9_3'].tail(60),panel=2,color='green'),mpf.make_addplot(kdj_df['J_9_3'].tail(60),panel=2,color='purple',secondary_y=False),mpf.make_addplot(macd_df['MACDh_12_26_9'].tail(60),type='bar',panel=3,color='red',secondary_y=False),mpf.make_addplot(macd_df['MACDs_12_26_9'].tail(60),panel=3,color='green',secondary_y=False),mpf.make_addplot(macd_df['MACD_12_26_9'].tail(60),panel=3,ylabel='MACD',color='blue'),]my_color = mpf.make_marketcolors(up='red',down='green',edge='inherit',wick='inherit',volume='inherit')my_style = mpf.make_mpf_style(marketcolors=my_color,figcolor='#EEEEEE',y_on_right=False,gridaxis='both', gridstyle='-.',gridcolor='#E1E1E1')kwargs = dict(type='candle', volume=True, title='%s'%(stock_df.iloc[0,0]),    ylabel='Price', ylabel_lower='Volume', figratio=(800,480), figscale=1.2,datetime_format='%Y-%m-%d',xrotation=0)save = dict(fname='%s.jpg'%stock_df.iloc[0,0],dpi=150,pad_inches=0.25)mpf.plot(stock_df.tail(60),**kwargs,addplot=add_plot,style=my_style,savefig=save)return\get_stocknum =pd.read_excel('股票代码.xlsx')
stock_df = get_stock(get_stocknum.iloc[0,0])
macd_df,kdj_df,ma5_df,ma10_df,ma20_df,total_df=get_technical(stock_df)
result_df=get_analyse(total_df)
draw_pic(macd_df,kdj_df,ma5_df,ma10_df,ma20_df,stock_df)#建立book
writer = pd.ExcelWriter('分析结果.xlsx',engine='xlsxwriter')
workbook=writer.book
#建立sheet 表名称为 股票代码
result_df.to_excel(writer,'%s分析'%stock_df.iloc[0,0])
#以股票代码命名的图片 例 000001.SZ.jpg
worksheet.insert_image('F1', '%s.jpg'%stock_df.iloc[0,0])writer.save()
writer.close()

尾声

为了更好突出数据显性与美观,我这里对表格进行了一些内部优化处理。例如列宽、行高、字体颜色、单元格条件格式(能根据分析结果字体显示红色/绿色 以作代表多/空情况)等。效果如下:

想进一步完善效果或了解可到这里下载源代码

python金融-MACD、KDJ、MA技术指标分析结果判定股票过去10个交易日多空情况-金融数据分析的初学者-金融文档类资源-CSDN下载https://download.csdn.net/download/m0_64902855/78044059

再一次感谢各位看官的支持!!!

基于macd、kdj、ma技术指标分析股票多空方向——应用开发6 导出到EXCEL表格相关推荐

  1. 基于macd、kdj、ma技术指标分析股票多空方向——应用开发1 前言

    应用效果 通过在EXCEL表格输入股票代码. 导出该股过去10个交易日技术指标(MACD.KDJ.MA分析结果)与60天的K线图(含MACD.KDJ.MA线.成交量)到EXCEl表格. 效果如图 系统 ...

  2. 基于macd、kdj、ma技术指标分析股票多空方向——应用开发4 分析技术指标一系列形态结果

    接上一节,我们计算获取了技术指标的结果total_df,结果如下图 我们需要显示股票最近10天的分析结果,对此我们只需要截取total_df前12天数据就可以了. #获取前12天的数据 total_d ...

  3. 基于macd、kdj、ma技术指标分析股票多空方向——应用开发2 获取股票历史数据

    这里选用tushare平台获取股票历史数据 所用包 tushare .pandas.datetime import tushare as ts import pandas as pd import d ...

  4. 基于macd、kdj、ma技术指标分析股票多空方向——应用开发3 计算股票相关技术指标数据

    接上一节,我们获取了000001.SZ股票过去一年的历史数据stock_df,接下来我们就计算技术指标 所用包 pandas_ta import pandas_ta as ta 关于pandas_ta ...

  5. 课程作业——基于数据挖掘算法和技术指标预测股票涨跌

    #导入数据 import pandas as pd data = pd.read_csv('D:/QQ文件夹/金发科技数据十年.csv') data.head() #绘制自相关系数图 import m ...

  6. 七天学会「股票数据分析软件」的开发(中)

    两天前,我写了 七天学会「股票数据分析软件」的开发(上),号召大家尝试着写写代码,不知道大家进度如何. 如果存在掌握一种技能的刚需,而且知道正确的学习方法,经过刻意练习,这门技能很快就能玩儿的有模有样 ...

  7. 地理围栏 | EXCEL表格中分析轨迹坐标是否在设定的围栏范围内

    1 前言 地理围栏(Geo-fencing)是LBS的一种新应用,就是用一个虚拟的栅栏围出一个虚拟地理边界.当手机进入.离开某个特定地理区域,或在该区域内活动时,手机可以接收自动通知和警告.有了地理围 ...

  8. 基于Python的Excel表格差异对比工具

    一.问题描述 在日常工作中,有时会发现急需excel表格差异对比的工具.例如,当你想要对比今日出货量和现有库存时,当你需要对比这月的报表和上月的报表时. 二.对比工具 ​ 工作室基于Python 3. ...

  9. 【机器学习】使用CatBoost库分析股票行情(指标为RSI、Boll、MACD和MA)并输出因子占比分析

    文章目录 前言 一.CatBoost是什么? 二.准备工作 2.1 MyTT 2.2 获取日K数据 2.3 安装CatBoost 三. 使用CatBoost库分析股票行情(完整源码) 总结 前言 随着 ...

最新文章

  1. Word文档如何自动生成文献摘要?
  2. python网络编程视频教程_Java网络开发视频教程 – 一站式学习Java网络编程视频教程 全面理解BIO(无密)...
  3. fastjson反序列化漏洞_漏洞预警Fastjson再爆反序列化代码执行漏洞;星巴克被发现存在信息泄露风险...
  4. Ubuntu代理上网软件cntlm
  5. 如何开发高度可定制的产品
  6. html之文档的头部和元数据定义(下,未写完)
  7. python爬虫脚本ie=utf-8_分享一个Python爬虫小脚本
  8. 售票系统的组件图和部署图_实物图+电气图讲解:教你学会看配电系统图,值得收藏!...
  9. 【Oracle】数据库热备
  10. dbeaver 视图有一个x_《工程制图》——视图、剖视图、断面图、局部放大图
  11. P5057 [CQOI2006]简单题
  12. JAVA编译器的作用
  13. Linux命令之snmpwalk命令
  14. 无线网络WI-FI技术的专业名词解析
  15. 「总结」最全2万字长文解读7大方向人脸数据集v2.0版
  16. WebView网页打不开原因之一(及自己遇到的一些WebView问题记录)
  17. 【微信小程序】接口生成自定义首页二维码
  18. ThinkPHPdayo01学习笔记(体系化,系统化笔记)
  19. java实现hdf5表数据的动态逐条追加
  20. 二年级课程表(3月1日-3月4日)

热门文章

  1. 【神奇的Turtle库】海龟在手—天下我有:这款秘制“海龟闯关”小游戏值得拥有,强烈推荐哦~
  2. @ComponentScan
  3. 360 so加壳动态脱壳方法
  4. 投资合伙人股份分配_两个股东,合伙人投资14万。这个股份应该怎么分配?纯利润应该 - 找法网(findlaw.cn)...
  5. 如何实现Linux系统和Windows系统双系统
  6. Windows和服务器文件互传之scp命令,ssh通道连接服务器、linux获取管理员权限执行杀进程等常用linux命令
  7. Android 获取assets文件夹中音频文件的引用,并播放音乐
  8. BP神经网络实现风功率预测
  9. AES加密算法及逆向
  10. 计算机视觉英语论文,计算机视觉导论论文中英双语版(10页)-原创力文档