日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/20 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 股票指标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()

總結

以上是生活随笔為你收集整理的股票指标RSI背离检测程序,附代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。