股票指标RSI背离检测程序,附代码

对强弱指标RSI是根据一定时期内上涨点数和下跌点数之和的比率制作出的一种技术曲线。能够反映出市场在一定时期内的景气程度。由威尔斯.威尔德(Welles Wilder)最早应用于期货买卖,后来人们发现在众多的图表技术分析中,强弱指标的理论和实践极其适合于股票市场的短线投资,于是被用于股票升跌的测量和分析中。该分析指标的设计是以三条线来反映价格走势的强弱,这种图形可以为投资者提供操作依据,非常适合做短线差价操作,我一直想将常用的技术指标背离写成程序,进行自动检测,下一个文字,我将会配合RSI指标买卖点写成程序分析给大家,欢迎交流,因为我对一些指标了解不太深。

需要程序关注关注微信公众号,数据分析与运用,回复rsi背离就可以了​

我们看一下东方财富指标RSi。比如天齐锂业

我们看到RSI有3条线,周期为6,12,24,可以理解为短期,中期,长期指标数据,我们提供的程序可以自由选择周期,建议12。

我们看一下程序背离检测,我们检测底背离和顶背离,我们任务指标和股价没有同时变化,或者指标钝化,我们的可以认为是背离的形态。,我结合akshare金融数据,只需要输入股票代码就可以了,如果想检测创业板的数据将df=ak.stock_zh_a_daily()换成df=ak.stock_zh_a_cyb_daily(),就可以了,我们看一下程序。

我们输入股票代码,比如sz002466,天齐锂业,按0k就可以了。

什么输入背离周期比如30,代表30天,一个半月

我们输入数据开始日期,比如20210101,代表2021年1月1日

我们输入RSI计算周期,比如12,和同花顺一样。

我们看一下程序绘制股票图,方便我们进行分析。,我们加入成交量

我们看一下保存下来的数据。

我们 看一下检测结果。打开同花顺,查看天齐锂业,检测的结果还是很好的

程序代码:

import pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport mplfinance as mpfimport PySimpleGUI as sgfrom finta import TAimport MyTTimport akshare as akstock=sg.popup_get_file('输入股票代码比如sz002466,sz代表上海交易所,sh代表上海交易所')daily=sg.popup_get_file('输入背离检测周期,比如30,代表30天')start_date=sg.popup_get_file('输入数据开始时间比如20210101')period=sg.popup_get_file('输入rsi周期数,建议12,中线和同花顺一样')#数据来源东方财富df=ak.stock_zh_a_daily(symbol=stock,start_date=start_date)#df['open'].shift(1)## 峰值条件:max大于前后两天,且max大于最近30天的所有max#我们采用收盘价进行计算#我们让前一日的收盘价不变,今天的收盘价退一天df['new_close']=df['close'].shift(1)#明天收盘价退一天df['next_close']=df['close'].shift(2)#30日均线df['mean_30']=df['close'].rolling(int(daily)).mean()#30日最大值df['mean_30_max']=df['close'].rolling(int(daily)).max()#30日最小值df['mean_30_min']=df['close'].rolling(int(daily)).min()#检测顶# 峰值条件:max大于前后两天,且max大于最近30天的所有maxtop=[]x=df#检测股票顶for i in range(1,len(df['close'].tolist())-1):    if x['new_close'][i]>=x['close'][i-1]and x['new_close'][i]>=x['next_close'][i+1] and x['new_close'][i]>=x['mean_30_max'][i-1]:        top.append('顶')    else:        top.append('无')top.insert(0,'无')top.insert(1,'无')df['股票顶']=topbase=[]#检测股票低#底值条件:min小于前后两天,且小于最近30天所有的minfor i in range(1,len(df['close'].tolist())-1):    if x['new_close'][i]>=x['close'][i-1]and x['new_close'][i]>=x['next_close'][i+1] and x['new_close'][i]<=x['mean_30_min'][i-1]:        base.append('底')    else:        base.append('无')base.insert(0,'无')base.insert(1,'无')df['股票底']=base#计算rsi指标#后面为技术周期,现在中期16,还有6,24等rsi=TA.RSI(df,period=int(period))#将数据和到一个表中df['rsi']=rsi#现在rsi,昨天rsi不变df['new_rsi']=df['rsi'].shift(1)#下一天macddf['next_rsi']=df['rsi'].shift(2)#30日均线df['rsi_mean_30']=df['rsi'].rolling(int(daily)).mean()#30日最大值df['rsi_mean_30_max']=df['rsi'].rolling(int(daily)).max()#30日最小值df['rsi_mean_30_min']=df['rsi'].rolling(int(daily)).min()#检测rsi顶# 峰值条件:max大于前后两天,且max大于最近30天的所有maxrsi_top=[]for i in range(1,len(df['close'].tolist())-1):    if x['new_rsi'][i]>=x['rsi'][i-1]and x['new_rsi'][i]>=x['next_rsi'][i+1] and x['new_rsi'][i]>=x['rsi_mean_30_max'][i-1]:        rsi_top.append('顶')    else:        rsi_top.append('无')rsi_top.insert(0,'无')rsi_top.insert(1,'无')df['rsi顶']=rsi_top#检测rsi底#底值条件:min小于前后两天,且小于最近30天所有的minrsi_base=[]for i in range(1,len(df['close'].tolist())-1):    if x['new_rsi'][i]>=x['rsi'][i-1]and x['new_rsi'][i]>=x['next_rsi'][i+1] and x['new_rsi'][i]<=x['rsi_mean_30_min'][i-1]:        rsi_base.append('底')    else:        rsi_base.append('无')rsi_base.insert(0,'无')rsi_base.insert(1,'无')df['rsi底']=rsi_base#检测rsi顶背离,如果股票顶对应rsi无我们可以认为顶背离stock_rsi_top_deviate=[]for x,y in zip(df['股票顶'].tolist(),df['rsi顶'].tolist()):    #如果2个不相等    if x!=y:        stock_rsi_top_deviate.append('rsi顶背离')    else:        stock_rsi_top_deviate.append('无')#检测rsi底背离,如果股票底对应rsi底无我们可以认为顶背离stock_rsi_base_deviate=[]for x,y in zip(df['股票底'].tolist(),df['rsi底'].tolist()):    #如果2个不相等    if x!=y:        stock_rsi_base_deviate.append('rsi底背离')    else:        stock_rsi_base_deviate.append('无')df['rsi顶背离']=stock_rsi_top_deviatedf['rsi底背离']=stock_rsi_base_deviatedf.to_excel(r'C:\Users\Administrator\Desktop\{}rsi背离.xlsx'.format(stock))print(df)#绘制股票图df1=dfmacd=TA.MACD(df1)boll=TA.BBANDS(df1)rsi=TA.RSI(df1,period=int(period))df1.rename(columns={'date':'Date','open':'Open','close':'Close','high':'High','low':'Low','volume':'Volume'},inplace=True)    #时间格式转换plt.rcParams['font.family']='SimHei'plt.rcParams['axes.unicode_minus']=Falsedf1['Date']=pd.to_datetime(df1['Date'])#出现设置索引df1.set_index(['Date'],inplace=True)#设置股票颜mc=mpf.make_marketcolors(up='r',down='g',edge='i',volume='i')    #设置系统s=mpf.make_mpf_style(marketcolors=mc)add_plot=[mpf.make_addplot(macd['MACD'],panel=2,title='{}MACD'.format(stock),color='r'),mpf.make_addplot(macd['SIGNAL'],panel=1,color='y'),mpf.make_addplot(rsi,panel=3,title='RSI'),mpf.make_addplot(boll['BB_UPPER'],panel=0,color='r',title='BOLL'),mpf.make_addplot(boll['BB_MIDDLE'],panel=0,color='m'),mpf.make_addplot(boll['BB_LOWER'],panel=0,color='g')]    #绘制股票图,5,10,20日均线mpf.plot(df1,type='candle',style=s,mav=(5,10,20),addplot=add_plot,volume=True)plt.show()

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
一、适用货币:所有货币对 推荐货币对:GBP/USD,GBP/JPY 二、使用周期:H4判断多空趋势,稳健形M15入场,进取形M5入场 三、趋势判断:在H4图上以RSI,KDJ,MACD判断趋势 H4图上RSI向上穿过50线,KDJ金叉向上,MACD柱增加为多头 四、开仓条件 1、稳健形 做多: M15主图出现绿色箭头,Laguerre-ACS1蓝色指标向上穿过0.15线,StochHistogram向上穿过0轴红色变成 绿色,RSI向上穿过50线,KDJ向上,MACD向上为开仓条件 做空: M15主图出现红色箭头,Laguerre-ACS1蓝色指标向下穿过0.85线,StochHistogram向下穿过0轴绿色变成 红色,RSI向下穿过50线,KDJ向下,MACD向下为开仓条件 2、进取形 做多: M5 主图出现绿色箭头,Laguerre-ACS1 蓝色指标向上穿过0.15 线,StochHistogram 向上穿过 0 轴红色变成 绿色,RSI向上穿过50线,KDJ向上,MACD向上为开仓条件 做空: M5 主图出现红色箭头,Laguerre-ACS1 蓝色指标向下穿过0.85 线,StochHistogram 向下穿过 0 轴绿色变成 红色,RSI向下穿过50线,KDJ向下,MACD向下为开仓条件 进取形进场后,当M15图再出现开仓信号后可以顺势力加码 五、平仓条件 做多平仓:当交易时段Laguerre-ACS1红色指标向下穿过0.85线,或者RSI向下穿过50线时平仓 做空平仓:当交易时段Laguerre-ACS1红色指标向上穿过0.15线,或者RSI向上穿过50线时平仓 进场后目标价位可以参考主图的日支撑阻力线,移动止损30点,或者参考M15图上的小红点 六、止损 20点止损加上平台点差,或者参考箭头出现时之前的高低点 将.EX4文件放在MT4文件夹的experts\indicators里面 将.TPL文件放在MT4文件夹的templates 里面,重新打开MT4软件加载lcyc system v1.0.tpl模板 欢迎大家提出意见建议交流改进

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_50882340

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值