利用python炒股talib_Python 通过 TALib 包构建股票自动技术分析
#coding = utf-8
importtushareasts
importtalib
importpandasaspd
importnumpyasnp
fromdatetimeimportdatetime
importsys
# code:代码 name:名字,industry:所属行业 area:地区 pe:市盈率 outstanding:流通股本 totals:总股本(万) totalAssets:总资产(万)
# liqidAssets:流动资产 fixedAssets:固定资产 reserved:公积金 bvps:每股收益 pd:每股净资 timeToMarket:上市日期
defget_stock_list():
df = ts.get_stock_basics()
returndf
defget_ta(df_code,Dist):
operate_array1 = []
operate_array2 = []
operate_array3 = []
count =0
forcodeindf_code.index:
# index,0 - 6 date:日期 open:开盘价 high:最高价 close:收盘价 low:最低价 volume:成交量 price_change:价格变动 p_change:涨跌幅
# 7-12 ma5:5日均价 ma10:10日均价 ma20:20日均价 v_ma5:5日均量v_ma10:10日均量 v_ma20:20日均量
df = ts.get_hist_data(code,start='2014-11-20')
dflen = df.shape[0]
count = count +1
ifdflen >35:
(df,operate1) = get_macd(df)
(df,operate2) = get_KDJ(df)
(df,operate3) = Get_RSI(df)
operate_array1.append(operate1)#round(df.iat[(dflen-1),16],2)
operate_array2.append(operate2)
operate_array3.append(operate3)
df_code['MACD']=pd.Series(operate_array1,index=df_code.index)
df_code['KDJ']=pd.Series(operate_array2,index=df_code.index)
df_code['RSI']=pd.Series(operate_array3,index=df_code.index)
returndf_code
#通过macd判断买进和买出
defget_macd(df):
#参数 12,26,9
macd,macdsignal,macdhist = talib.MACD(df['close'].values,fastperiod=12,slowperiod=26,signalperiod=9)
signal_ma5 = talib.MA(macdsignal,timeperiod=5,matype=0)
signal_ma10 = talib.MA(macdsignal,timeperiod=10,matype=0)
signal_ma20 = talib.MA(macdsignal,timeperiod=20,matype=0)
#13-15 DIF DEA DIF-DEA
df['macd'] = pd.Series(macd,index=df.index)#DIF
df['signal'] = pd.Series(macdsignal,index=df.index)#DEA
df['macdhist'] = pd.Series(macdhist,index=df.index)#DIF-DEA
dflen = df.shape[0]
MAlen =len(signal_ma5)
operator =0
#俩个数组 1.DIF、DEA均为正,DIF向上穿过DEA
# 2.DIF、DEA均为负,DIF向下穿过DEA
ifdf.iat[(dflen-1),13] >0:
ifdf.iat[(dflen-1),14] >0:
ifdf.iat[(dflen-1),13] > df.iat[(dflen-1),14]anddf.iat[(dflen-2),13] <= df.iat[(dflen-2),14]:
operator = operator+10#买进
else:
ifdf.iat[(dflen-1),14] <0:
ifdf.iat[(dflen-1),13] == df.iat[(dflen-2),14]:
operator = operator -10#卖出
#DEA与K线发生背离 K线趋势向上,MACD向下,顶背离,将要下降;K线趋势向下,MACD向上,底背离,将要上升
ifdf.iat[(dflen-1),7]>=df.iat[(dflen-1),8]anddf.iat[(dflen-1),8]>=df.iat[(dflen-1),9]:#K线上涨
ifsignal_ma5[MAlen-1]<=signal_ma10[MAlen-1]andsignal_ma10[MAlen-1]<=signal_ma20[MAlen-1]:#DEA下降
operator = operator-1
ifdf.iat[(dflen-1),7]<=df.iat[(dflen-1),8]anddf.iat[(dflen-1),8]<=df.iat[(dflen-1),9]:#K线下降
ifsignal_ma5[MAlen-1]>=signal_ma10[MAlen-1]andsignal_ma10[MAlen-1]>=signal_ma20[MAlen-1]:#DEA上升
operator = operator+1
#分析MACD柱状图 由负变正将上涨
ifdf.iat[(dflen-1),15] >0anddflen >30:
foriinrange(1,26):
ifdf.iat[(dflen-1-i),15] <=0:
operator = operator +5
break
#由正变负 将降低
ifdf.iat[(dflen-1),15] <0anddflen >30:
foriinrange(1,26):
ifdf.iat[(dflen-1-i),15] >=0:
operator = operator -5
break
returndf,operator
#通过KDJ判断买进和卖出
defget_KDJ(df):
#参数9,3,3
slowk,slowd = talib.STOCH(df['high'].values,df['low'].values,df['close'].values,fastk_period=9,slowk_period=3,slowk_matype=0,slowd_period=3,slowd_matype=0)
slowkMA5 = talib.MA(slowk,timeperiod=5,matype=0)
slowkMA10 = talib.MA(slowk,timeperiod=10,matype=0)
slowkMA20 = talib.MA(slowk,timeperiod=20,matype=0)
slowdMA5 = talib.MA(slowd,timeperiod=5,matype=0)
slowdMA10 = talib.MA(slowd,timeperiod=10,matype=0)
slowdMA20 = talib.MA(slowd,timeperiod=20,matype=0)
#16,17 K,D
df['slowk'] = pd.Series(slowk,index=df.index)#K
df['slowd'] = pd.Series(slowd,index=df.index)#D
dflen = df.shape[0]
MAlen =len(slowdMA5)
operator =0
#1.K线是快速确认线 -- 数值在90以上为超买信号,数值在10以下为超卖信号;2.D大于80为超卖状态,小于20为超卖状态
ifdf.iat[(dflen-1),16] >=90:
operator = operator -3
ifdf.iat[(dflen-1),16] <=10:
operator = operator +3
ifdf.iat[(dflen-1),17] >=80:
operator = operator -3
ifdf.iat[(dflen-1),17] <=20:
operator = operator +3
#上涨趋势中,K线向上穿过D线,黄金交叉,将进入多头市场,股价将上涨,应该买进
ifdf.iat[(dflen-1),16] > df.iat[(dflen-1),17]anddf.iat[(dflen-2),16] <= df.iat[(dflen-2),17]:
operator = operator +10
#下降趋势中,K线向下穿过D线,死亡交叉,将进入空头市场,股价将下降,应该卖出
ifdf.iat[(dflen-1),16] < df.iat[(dflen-1),17]anddf.iat[(dflen-2),16] >= df.iat[(dflen-2),17]:
operator = operator -10
#3.当随机指标与股价出现背离时,一般为转势的信号。
ifdf.iat[(dflen-1),7]>=df.iat[(dflen-1),8]anddf.iat[(dflen-1),8]>=df.iat[(dflen-1),9]:#K线上涨
if(slowkMA5[MAlen-1]<=slowkMA10[MAlen-1]andslowkMA10[MAlen-1]<=slowkMA20[MAlen-1])or\
(slowdMA5[MAlen-1]<=slowdMA10[MAlen-1]andslowdMA10[MAlen-1]<=slowdMA20[MAlen-1]):#K,D下降
operator = operator -1
elifdf.iat[(dflen-1),7]<=df.iat[(dflen-1),8]anddf.iat[(dflen-1),8]<=df.iat[(dflen-1),9]:#K线下降
if(slowkMA5[MAlen-1]>=slowkMA10[MAlen-1]andslowkMA10[MAlen-1]>=slowkMA20[MAlen-1])or\
(slowdMA5[MAlen-1]>=slowdMA10[MAlen-1]andslowdMA10[MAlen-1]>=slowdMA20[MAlen-1]):#K,D上涨
operator = operator +1
return(df,operator)
#通过RSI判断买入卖出
defGet_RSI(df):
#参数14,5
slowreal = talib.RSI(np.array(df['close']),timeperiod=14)
fastreal = talib.RSI(np.array(df['close']),timeperiod=5)
slowrealMA5 = talib.MA(slowreal,timeperiod=5,matype=0)
slowrealMA10 = talib.MA(slowreal,timeperiod=10,matype=0)
slowrealMA20 = talib.MA(slowreal,timeperiod=20,matype=0)
fastrealMA5 = talib.MA(fastreal,timeperiod=5,matype=0)
fastrealMA10 = talib.MA(fastreal,timeperiod=10,matype=0)
fastrealMA20 = talib.MA(fastreal,timeperiod=20,matype=0)
#18-19 慢速real,快速real
df['slowreal']=pd.Series(slowreal,index=df.index)#慢速real 18
df['fastreal']=pd.Series(fastreal,index=df.index)#快速real 19
dflen = df.shape[0]
MAlen =len(slowrealMA5)
operate =0
#RSI>80为超买区,RSI<20为超卖区
ifdf.iat[(dflen-1),18]>80ordf.iat[(dflen-1),19]>80:
operate = operate -2
elifdf.iat[(dflen-1),18]<20ordf.iat[(dflen-1),19]<20:
operate = operate +2
#RSI上穿50分界线为买入信号,下破50分界线为卖出信号
if(df.iat[(dflen-2),18]<=50anddf.iat[(dflen-1),18]>50)or(df.iat[(dflen-2),19]<=50anddf.iat[(dflen-1),19]>50):
operate = operate +4
elif(df.iat[(dflen-2),18]>=50anddf.iat[(dflen-1),18]<50)or(df.iat[(dflen-2),19]>=50anddf.iat[(dflen-1),19]<50):
operate = operate -4
#RSI掉头向下为卖出讯号,RSI掉头向上为买入信号
ifdf.iat[(dflen-1),7]>=df.iat[(dflen-1),8]anddf.iat[(dflen-1),8]>=df.iat[(dflen-1),9]:#K线上涨
if(slowrealMA5[MAlen-1]<=slowrealMA10[MAlen-1]andslowrealMA10[MAlen-1]<=slowrealMA20[MAlen-1])or\
(fastrealMA5[MAlen-1]<=fastrealMA10[MAlen-1]andfastrealMA10[MAlen-1]<=fastrealMA20[MAlen-1]):#RSI下降
operate = operate -1
elifdf.iat[(dflen-1),7]<=df.iat[(dflen-1),8]anddf.iat[(dflen-1),8]<=df.iat[(dflen-1),9]:#K线下降
if(slowrealMA5[MAlen-1]>=slowrealMA10[MAlen-1]andslowrealMA10[MAlen-1]>=slowrealMA20[MAlen-1])or\
(fastrealMA5[MAlen-1]>=fastrealMA10[MAlen-1]andfastrealMA10[MAlen-1]>=fastrealMA20[MAlen-1]):#RSI上涨
operate = operate +1
#慢速线与快速线比较观察,若两线同向上,升势较强;若两线同向下,跌势较强;若快速线上穿慢速线为买入信号;若快速线下穿慢速线为卖出信号
ifdf.iat[(dflen-1),19]> df.iat[(dflen-1),18]anddf.iat[(dflen-2),19]<=df.iat[(dflen-2),18]:
operate = operate +10
elifdf.iat[(dflen-1),19]< df.iat[(dflen-1),18]anddf.iat[(dflen-2),19]>=df.iat[(dflen-2),18]:
operate = operate -10
return(df,operate)
defOutput_Csv(df,Dist):
TODAY = datetime.date.today()
CURRENTDAY=TODAY.strftime('%Y-%m-%d')
# reload(sys)
sys.setdefaultencoding("gbk")
df.to_csv(Dist+CURRENTDAY+'stock.csv',encoding='gbk')#选择保存
df = get_stock_list()
Dist ='data/TEST'
df = get_ta(df,Dist)
Output_Csv(df,Dist)
利用python炒股talib_Python 通过 TALib 包构建股票自动技术分析相关推荐
- python写炒股软件_在线配资,【原创】用python开发股票自动技术分析的软件(
一.准备一个沪深股市的股票代码和简称的对照表,存在csv文件或者txt文件中. 二.读取这个文件,循环将所有股票的历史数据都下载到本地,保存为名字为股票代码的csv文件. 三.逐个读取所有这些csv文 ...
- 利用python炒股talib_借助talib使用技术分析指标来炒股
什么是技术分析 所谓股票的技术分析,是相对于基本面分析而言的.基本分析法着重于对一般经济情况以及各个公司的经营管理状况.行业动态等因素进行分析,以此来研究股票的价值,衡量股价的高低.而技术分析则是透过 ...
- python股票分析源码_用python开发股票自动技术分析的软件
一.配置环境 python是个强大的工具,还有很多插件包可以用,所以完全可以考虑用python来编程实现股票的自动技术分析. 第一步就是实现股票历史数据的获取,这个有安装包TuShare可以用.首先是 ...
- 利用python机器学习库进行Kaggle皮马印第安人糖尿病预测分析
利用python机器学习库进行Kaggle皮马印第安人糖尿病预测分析 项目摘要 本项目主要使用python对各医学参数与糖尿病之间的关系进行可视化分析.描述性分析.使用scikit-learn机器学习 ...
- python音频聚类_利用python的KMeans和PCA包实现聚类算法
题目: 通过给出的驾驶员行为数据(trip.csv),对驾驶员不同时段的驾驶类型进行聚类,聚成普通驾驶类型,激进类型和超冷静型3类 . 利用Python的scikit-learn包中的Kmeans算法 ...
- 【转】利用python的KMeans和PCA包实现聚类算法
转自:https://www.cnblogs.com/yjd_hycf_space/p/7094005.html 题目: 通过给出的驾驶员行为数据(trip.csv),对驾驶员不同时段的驾驶类型进行聚 ...
- 利用Python和R对权游剧本进行NLP情绪分析
文章目录 1. 背景知识 2. 准备数据 Python R 3. 数据清理 4. 数据分析 5. 收获 最近学会利用Python做了几个词云后,又应用NLP中情感分析,结合snownlp库完成了词云分 ...
- FOC:【3】精品必看!利用Python实现System Verilog多字节UART串口有限状态机自动生成脚本
碎碎念: 向关注的朋友们道个歉,不好意思这一期鸽了这么久.( ̄(工) ̄) 这是一个懒狗不想写1000行的状态机,所以写了1000行的脚本的故事. 虽然本期内容与FOC的直接相关度并不大,由于是在整个项 ...
- Python爬虫爬取表情包+Autojs微信自动导入表情包脚本(附源码)
废话不多说直接开始 Python爬取表情包 一.检查网页源码 发现可以找到图片地址,直接请求图片地址下载图片 二.打开开发者工具(F12) 通过xpath提取p标签下的img标签src属性为图片地址 ...
- 利用python爬取京东平台评论及图片并进行分析
一.背景及目的 在淘宝.京东等网络平台上购物,逐渐成为大众化的购物方式.但假冒伪劣产品在这个摸不着实物的购物平台严重危害着消费者的购物体验,即使我们可以通过七天无理由退货退款来维护我们的合法权益,但是 ...
最新文章
- [JAVA] DUMP
- 极客编程日历桌面版for mac开发笔记[swift]
- matlab 图像分割 提取人像_数字图像处理实验合集(含代码、报告)
- Python的IDE:利用MyEclipse2017软件的PyDev插件实现Python编程
- 震撼来袭 | 人工智能Paper精读班,视频讲解+代码实现(还剩28个名额)
- 数据挖掘肿瘤预测_Nature Medicine封面文章:利用单核细胞数量预测及评估肿瘤免疫治疗效果...
- python student类_9.Python类和对象
- 第二十二章:洗净皮衣
- 使用火狐的restclient发送http接口post及get请求
- 45岁以后的IT人生
- 手记-数学分析(高等数学)中有关算法效率的公式列举(O,Θ,Ω)
- 用.htaccess禁止某IP访问
- 文档管理专家Aspose 2017年首季更新大合集
- steamcommunity302怎么用【使用方法】
- python最近广告_腾讯2018广告算法大赛思路解析(python)
- Flash Android ANE 打包流程及使用方法
- 怎样娶到比尔盖茨的女儿
- 杨辉三角杨辉三角 || (JavaScript)
- 短视频应用应该如何打造技术架构?
- 现实世界充满了bug_现实世界充满了哪些bug
热门文章
- python连接sap接口_python 连接SAP的方法
- winform开发框架介绍
- wps 项目进度_wps excle做甘特图|如何利用excel自动生成施工进度计划横道图
- flash电脑安装包_一百余款电脑软件及安装方式,忍不住收藏起来
- SAP-MM知识精解-批次管理(01)- 概览及物料的批次启用
- 设计师学python还是processing_人人都能学会的processing创意编程能实现什么?
- Matlab趋势线公式引用,批量提取excel中图表趋势线的公式中的斜率 - 程序语言 - 小木虫 - 学术 科研 互动社区...
- 软考程序员Java答题速成_软考程序员考试下午考题解答技巧方法
- 软考初级程序员真题资料(2009年上半年——2019年上半年)
- 西门子s300编程实例_plc西门子s300编程 西门子编程1000例