Python开发一个股票类库
前言
使用Python開發(fā)一個(gè)股票項(xiàng)目。?
項(xiàng)目地址:?
https://github.com/pythonstock/stock?
相關(guān)資料:?
http://blog.csdn.net/freewebsys/article/details/78294566?
主要使用開發(fā)語言是python。?
使用的lib庫是pandas,tushare,TensorFlow,tornado等。
本文的原文連接是:?http://blog.csdn.net/freewebsys/article/details/78578548?
未經(jīng)博主允許不得轉(zhuǎn)載。?
博主地址是:http://blog.csdn.net/freewebsys
計(jì)算股票中的16個(gè)常用指標(biāo)方法大全
一個(gè)python的類庫stockstats 已經(jīng)幫忙把這些數(shù)據(jù)都計(jì)算出來了。?
現(xiàn)在需要做的就是把這個(gè)數(shù)據(jù)展示出,分析下。每一個(gè)都是一個(gè)緯度分析的方法。?
要一個(gè)一個(gè)的學(xué)習(xí)下。
主要指標(biāo)有 CR指標(biāo) KDJ指標(biāo) SMA指標(biāo) MACD指標(biāo) BOLL指標(biāo) RSI指標(biāo) WR指標(biāo)?
CCI指標(biāo) TR、ATR指標(biāo) DMA指標(biāo) DMI,+DI,-DI,DX,ADX,ADXR指標(biāo)?
TRIX,MATRIX指標(biāo) VR,MAVR指標(biāo) 等。?
具體的計(jì)算代碼不做分析,可以直接查看 stockstats 也是非常的簡單的。?
用幾個(gè) pandas 的函數(shù)就出來了。主要將的是使用方法。?
具體使用效果需要慢慢使用才知道。
特別的感謝?http://wiki.mbalib.com/?好多說明是從 mbalib上面查詢到的。
pip install stockstats- ?
直接安裝就行。?
項(xiàng)目地址:https://github.com/jealous/stockstats
這個(gè)lib庫和pandas 一樣實(shí)現(xiàn)了下標(biāo)訪問的方式去計(jì)算。
@classmethoddef _get_kdjk(cls, df, n_days):""" Get the K of KDJK = 2/3 × (prev. K) +1/3 × (curr. RSV)2/3 and 1/3 are the smooth parameters.:param df: data:param n_days: calculation range:return: None"""rsv_column = 'rsv_{}'.format(n_days)k_column = 'kdjk_{}'.format(n_days)df[k_column] = list(cls._calc_kd(df.get(rsv_column)))如果要計(jì)算數(shù)據(jù) 直接訪問 stockStat[‘kdjk_3’] ,就可以制定使用 kdjk 指標(biāo),同時(shí)設(shè)置周期3天。參數(shù)傳遞方式特別有意思。很簡單粗暴。用起來超級(jí)方便。
#開始計(jì)算。以平安銀行為例: #!/usr/local/bin/python # -*- coding: utf-8 -*-import math import pandas as pd import numpy as np import tushare as ts import datetime import matplotlib.pyplot as plt import stockstatsbegin_time = '2017-02-01' end_time = '2017-11-01' code = "000001" stock = ts.get_hist_data(code, start=begin_time, end=end_time) stock["date"] = stock.index.values #增加日期列。 stock = stock.sort_index(0) # 將數(shù)據(jù)按照日期排序下。 #print(stock) [186 rows x 14 columns] #初始化統(tǒng)計(jì)類 #stockStat = stockstats.StockDataFrame.retype(pd.read_csv('002032.csv')) stockStat = stockstats.StockDataFrame.retype(stock) print("init finish .")1,delta 方法
沒有找到 volume_delta 這個(gè)方法的實(shí)現(xiàn)。?
原來調(diào)用是 key + “_delta” 去調(diào)用的。?
超級(jí)方便。
2,計(jì)算n天差
可以計(jì)算,向前n天,和向后n天的差。直接使用 key “n_d” 或 “-n_d” 。?
如下圖。向前和向后對(duì)漲跌的趨勢判斷不太一樣。使用”_-n_d” 比較像原始數(shù)據(jù)的漲跌。
本文的原文連接是:?http://blog.csdn.net/freewebsys/article/details/78578548?
未經(jīng)博主允許不得轉(zhuǎn)載。?
博主地址是:http://blog.csdn.net/freewebsys
3,n天漲跌百分百計(jì)算
open price change (in percent) between today and the day before yesterday ‘r’ stands for rate.?
stock[‘close_-2_r’]?
可以看到,-n天數(shù)據(jù)和今天數(shù)據(jù)的百分比。
4,CR指標(biāo)
http://wiki.mbalib.com/wiki/CR%E6%8C%87%E6%A0%87?
價(jià)格動(dòng)量指標(biāo)
5,KDJ指標(biāo)
http://wiki.mbalib.com/wiki/%E9%9A%8F%E6%9C%BA%E6%8C%87%E6%A0%87
隨機(jī)指標(biāo)(KDJ)一般是根據(jù)統(tǒng)計(jì)學(xué)的原理,通過一個(gè)特定的周期(常為9日、9周等)內(nèi)出現(xiàn)過的最高價(jià)、最低價(jià)及最后一個(gè)計(jì)算周期的收盤價(jià)及這三者之間的比例關(guān)系,來計(jì)算最后一個(gè)計(jì)算周期的未成熟隨機(jī)值RSV,然后根據(jù)平滑移動(dòng)平均線的方法來計(jì)算K值、D值與J值,并繪成曲線圖來研判股票走勢。
(3)在使用中,常有J線的指標(biāo),即3乘以K值減2乘以D值(3K-2D=J),其目的是求出K值與D值的最大乖離程度,以領(lǐng)先KD值找出底部和頭部。J大于100時(shí)為超買,小于10時(shí)為超賣。
# KDJ, default to 9 days stockStat[['close','kdjk','kdjd','kdjj'] # 分別是k d j 三個(gè)數(shù)據(jù)統(tǒng)計(jì)項(xiàng)。].plot(subplots=True,figsize=(20,10), grid=True) plt.show()# three days KDJK cross up 3 days KDJD # stockStat['kdjk_3_xu_kdjd_3'].plot(figsize=(20,10), grid=True) # plt.show() print(stockStat['kdjk_3_xu_kdjd_3'].tail())6,SMA指標(biāo)
http://wiki.mbalib.com/wiki/Sma?
簡單移動(dòng)平均線(Simple Moving Average,SMA)
可以動(dòng)態(tài)輸入?yún)?shù),獲得幾天的移動(dòng)平均。
# 2 days simple moving average on open price stockStat[['close','close_5_sma','close_10_sma'] #].plot(subplots=True,figsize=(20,10), grid=True) plt.show()7,MACD指標(biāo)
http://wiki.mbalib.com/wiki/MACD?
平滑異同移動(dòng)平均線(Moving Average Convergence Divergence,簡稱MACD指標(biāo)),也稱移動(dòng)平均聚散指標(biāo)
本文的原文連接是:?http://blog.csdn.net/freewebsys/article/details/78578548?
未經(jīng)博主允許不得轉(zhuǎn)載。?
博主地址是:http://blog.csdn.net/freewebsys
MACD?
stock[‘macd’]?
MACD signal line?
stock[‘macds’]?
MACD histogram?
stock[‘macdh’]
MACD技術(shù)分析,運(yùn)用DIF線與MACD線之相交型態(tài)及直線棒高低點(diǎn)與背離現(xiàn)象,作為買賣訊號(hào),尤其當(dāng)市場股價(jià)走勢呈一較為明確波段趨勢時(shí),?
MACD 則可發(fā)揮其應(yīng)有的功能,但當(dāng)市場呈牛皮盤整格局,股價(jià)不上不下時(shí),MACD買賣訊號(hào)較不明顯。?
當(dāng)用MACD作分析時(shí),亦可運(yùn)用其他的技術(shù)分析指標(biāo)如短期 K,D圖形作為輔助工具,而且也可對(duì)買賣訊號(hào)作雙重的確認(rèn)。
8,BOLL指標(biāo)
http://wiki.mbalib.com/wiki/BOLL?
布林線指標(biāo)(Bollinger Bands)
bolling, including upper band and lower band?
stock[‘boll’]?
stock[‘boll_ub’]?
stock[‘boll_lb’]
1、當(dāng)布林線開口向上后,只要股價(jià)K線始終運(yùn)行在布林線的中軌上方的時(shí)候,說明股價(jià)一直處在一個(gè)中長期上升軌道之中,這是BOLL指標(biāo)發(fā)出的持股待漲信號(hào),如果TRIX指標(biāo)也是發(fā)出持股信號(hào)時(shí),這種信號(hào)更加準(zhǔn)確。此時(shí),投資者應(yīng)堅(jiān)決持股待漲。
2、當(dāng)布林線開口向下后,只要股價(jià)K線始終運(yùn)行在布林線的中軌下方的時(shí)候,說明股價(jià)一直處在一個(gè)中長期下降軌道之中,這是BOLL指標(biāo)發(fā)出的持幣觀望信號(hào),如果TRIX指標(biāo)也是發(fā)出持幣信號(hào)時(shí),這種信號(hào)更加準(zhǔn)確。此時(shí),投資者應(yīng)堅(jiān)決持幣觀望。
# bolling, including upper band and lower band stockStat[['close','boll','boll_ub','boll_lb'] #].plot(subplots=True,figsize=(20,10), grid=True) plt.show()9,RSI指標(biāo)
http://wiki.mbalib.com/wiki/RSI?
相對(duì)強(qiáng)弱指標(biāo)(Relative Strength Index,簡稱RSI),也稱相對(duì)強(qiáng)弱指數(shù)、相對(duì)力度指數(shù)
6 days RSI?
stock[‘rsi_6’]?
12 days RSI?
stock[‘rsi_12’]
(2)強(qiáng)弱指標(biāo)保持高于50表示為強(qiáng)勢市場,反之低于50表示為弱勢市場。?
(3)強(qiáng)弱指標(biāo)多在70與30之間波動(dòng)。當(dāng)六日指標(biāo)上升到達(dá)80時(shí),表示股市已有超買現(xiàn)象,如果一旦繼續(xù)上升,超過90以上時(shí),則表示已到嚴(yán)重超買的警戒區(qū),股價(jià)已形成頭部,極可能在短期內(nèi)反轉(zhuǎn)回轉(zhuǎn)。
(4)當(dāng)六日強(qiáng)弱指標(biāo)下降至20時(shí),表示股市有超賣現(xiàn)象,如果一旦繼續(xù)下降至10以下時(shí)則表示已到嚴(yán)重超賣區(qū)域,股價(jià)極可能有止跌回升的機(jī)會(huì)。
# 6 days RSI 12 days RSI stockStat[['close','rsi_6','rsi_12'] #].plot(subplots=True,figsize=(20,10), grid=True) plt.show()10,WR指標(biāo)
??
http://wiki.mbalib.com/wiki/%E5%A8%81%E5%BB%89%E6%8C%87%E6%A0%87?
??
威廉指數(shù)(Williams%Rate)該指數(shù)是利用擺動(dòng)點(diǎn)來度量市場的超買超賣現(xiàn)象。?
??
??
10 days WR?
stock[‘wr_10’]?
6 days WR?
stock[‘wr_6’]
11,CCI指標(biāo)
http://wiki.mbalib.com/wiki/%E9%A1%BA%E5%8A%BF%E6%8C%87%E6%A0%87
順勢指標(biāo)又叫CCI指標(biāo),其英文全稱為“Commodity Channel Index”,?
是由美國股市分析家唐納德·藍(lán)伯特(Donald Lambert)所創(chuàng)造的,是一種重點(diǎn)研判股價(jià)偏離度的股市分析工具。
CCI, default to 14 days?
stock[‘cci’]?
20 days CCI?
stock[‘cci_20’]
1、當(dāng)CCI指標(biāo)從下向上突破﹢100線而進(jìn)入非常態(tài)區(qū)間時(shí),表明股價(jià)脫離常態(tài)而進(jìn)入異常波動(dòng)階段,?
中短線應(yīng)及時(shí)買入,如果有比較大的成交量配合,買入信號(hào)則更為可靠。
2、當(dāng)CCI指標(biāo)從上向下突破﹣100線而進(jìn)入另一個(gè)非常態(tài)區(qū)間時(shí),表明股價(jià)的盤整階段已經(jīng)結(jié)束,?
將進(jìn)入一個(gè)比較長的尋底過程,投資者應(yīng)以持幣觀望為主。
12,TR、ATR指標(biāo)
http://wiki.mbalib.com/wiki/%E5%9D%87%E5%B9%85%E6%8C%87%E6%A0%87?
均幅指標(biāo)(Average True Ranger,ATR)
均幅指標(biāo)(ATR)是取一定時(shí)間周期內(nèi)的股價(jià)波動(dòng)幅度的移動(dòng)平均值,主要用于研判買賣時(shí)機(jī)。
TR (true range)?
stock[‘tr’]?
ATR (Average True Range)?
stock[‘a(chǎn)tr’]
均幅指標(biāo)無論是從下向上穿越移動(dòng)平均線,還是從上向下穿越移動(dòng)平均線時(shí),都是一種研判信號(hào)。
# ATR (Average True Range) stockStat[['close','tr','atr'] #].plot(subplots=True,figsize=(20,10), grid=True) plt.show()13,DMA指標(biāo)
http://wiki.mbalib.com/wiki/DMA
DMA指標(biāo)(Different of Moving Average)又叫平行線差指標(biāo),是目前股市分析技術(shù)指標(biāo)中的一種中短期指標(biāo),它常用于大盤指數(shù)和個(gè)股的研判。
DMA, difference of 10 and 50 moving average?
stock[‘dma’]
本文的原文連接是:?http://blog.csdn.net/freewebsys/article/details/78578548?
未經(jīng)博主允許不得轉(zhuǎn)載。?
博主地址是:http://blog.csdn.net/freewebsys
14,DMI,+DI,-DI,DX,ADX,ADXR指標(biāo)
http://wiki.mbalib.com/wiki/DMI
動(dòng)向指數(shù)Directional Movement Index,DMI)
http://wiki.mbalib.com/wiki/ADX?
平均趨向指標(biāo)(Average Directional Indicator,簡稱ADX)
http://wiki.mbalib.com/wiki/%E5%B9%B3%E5%9D%87%E6%96%B9%E5%90%91%E6%8C%87%E6%95%B0%E8%AF%84%E4%BC%B0
平均方向指數(shù)評(píng)估(ADXR)實(shí)際是今日ADX與前面某一日的ADX的平均值。ADXR在高位與ADX同步下滑,可以增加對(duì)ADX已經(jīng)調(diào)頭的盡早確認(rèn)。?
ADXR是ADX的附屬產(chǎn)品,只能發(fā)出一種輔助和肯定的訊號(hào),并非入市的指標(biāo),而只需同時(shí)配合動(dòng)向指標(biāo)(DMI)的趨勢才可作出買賣策略。?
在應(yīng)用時(shí),應(yīng)以ADX為主,ADXR為輔。
DMI?
+DI, default to 14 days?
stock[‘pdi’]?
-DI, default to 14 days?
stock[‘mdi]?
DX, default to 14 days of +DI and -DI?
stock[‘dx’]?
ADX, 6 days SMA of DX, same as stock[‘dx_6_ema’]?
stock[‘a(chǎn)dx]?
ADXR, 6 days SMA of ADX, same as stock[‘a(chǎn)dx_6_ema’]?
stock[‘a(chǎn)dxr’]
15,TRIX,MATRIX指標(biāo)
http://wiki.mbalib.com/wiki/TRIX?
TRIX指標(biāo)又叫三重指數(shù)平滑移動(dòng)平均指標(biāo)(Triple Exponentially Smoothed Average)
TRIX, default to 12 days?
stock[‘trix’]?
MATRIX is the simple moving average of TRIX?
stock[‘trix_9_sma’]
16,VR,MAVR指標(biāo)
http://wiki.mbalib.com/wiki/%E6%88%90%E4%BA%A4%E9%87%8F%E6%AF%94%E7%8E%87
成交量比率(Volumn Ratio,VR)(簡稱VR),是一項(xiàng)通過分析股價(jià)上升日成交額(或成交量,下同)與股價(jià)下降日成交額比值,?
從而掌握市場買賣氣勢的中期技術(shù)指標(biāo)。
VR, default to 26 days?
stock[‘vr’]?
MAVR is the simple moving average of VR?
stock[‘vr_6_sma’]
計(jì)數(shù)count
使用 _c 計(jì)算數(shù)量,可以和其他的一起使用
#返回?cái)?shù)量。 # close price less than 10.0 in 5 days count print(stockStat['close_10.0_le_5_c'].tail())#返回 True False 可以作為是否購買結(jié)果。 # CR MA2 cross up CR MA1 in 20 days count print(stockStat['cr-ma2_xu_cr-ma1_20_c'].tail()) date 2017-10-26 0.0 2017-10-27 0.0 2017-10-30 0.0 2017-10-31 0.0 2017-11-01 0.0 Name: close_10.0_le_5_c, dtype: float64 date 2017-10-26 False 2017-10-27 False 2017-10-30 False 2017-10-31 False 2017-11-01 False Name: cr-ma2_xu_cr-ma1_20_c, dtype: bool計(jì)算全部統(tǒng)計(jì)數(shù)據(jù)。
總結(jié)
本文的原文連接是:?http://blog.csdn.net/freewebsys/article/details/78578548?
未經(jīng)博主允許不得轉(zhuǎn)載。?
博主地址是:http://blog.csdn.net/freewebsys
stockstats使用起來超級(jí)的方便。股票市場真的是個(gè)大熔爐,鍛煉人。同時(shí)也要不斷的學(xué)習(xí)。?
學(xué)習(xí)股票中的數(shù)據(jù)分析,是python 的stockstats 可以很輕松的做到。?
數(shù)據(jù)的分析報(bào)表的展示都非常容易。能夠幫助股民快速的做出分析決策。?
不放棄股票中的機(jī)會(huì)。?
總之第一步先把這些數(shù)據(jù)計(jì)算出來。然后再做分析。
其他
計(jì)算全部統(tǒng)計(jì)數(shù)據(jù)。在 stockstats 里面有3個(gè)寫錯(cuò)了,少分號(hào)啥的。
# volume delta against previous day stockStat['volume_delta']# open delta against next 2 day stockStat['open_2_d']# open price change (in percent) between today and the day before yesterday # 'r' stands for rate. stockStat['open_-2_r']# CR indicator, including 5, 10, 20 days moving average stockStat['cr'] stockStat['cr-ma1'] stockStat['cr-ma2'] stockStat['cr-ma3']# volume max of three days ago, yesterday and two days later stockStat['volume_-3,2,-1_max']# volume min between 3 days ago and tomorrow stockStat['volume_-3~1_min']# KDJ, default to 9 days stockStat['kdjk'] stockStat['kdjd'] stockStat['kdjj']# three days KDJK cross up 3 days KDJD #stock['kdj_3_xu_kdjd_3'] 這個(gè)寫錯(cuò)了。 stockStat['kdjk_3_xu_kdjd_3']# 2 days simple moving average on open price stockStat['open_2_sma']# MACD stockStat['macd'] # MACD signal line stockStat['macds'] # MACD histogram stockStat['macdh']# bolling, including upper band and lower band stockStat['boll'] stockStat['boll_ub'] stockStat['boll_lb']# close price less than 10.0 in 5 days count stockStat['close_10.0_le_5_c']# CR MA2 cross up CR MA1 in 20 days count stockStat['cr-ma2_xu_cr-ma1_20_c']# 6 days RSI stockStat['rsi_6'] # 12 days RSI stockStat['rsi_12']# 10 days WR stockStat['wr_10'] # 6 days WR stockStat['wr_6']# CCI, default to 14 days stockStat['cci'] # 20 days CCI stockStat['cci_20']# TR (true range) stockStat['tr'] # ATR (Average True Range) stockStat['atr']# DMA, difference of 10 and 50 moving average stockStat['dma']# DMI # +DI, default to 14 days stockStat['pdi'] # -DI, default to 14 days stockStat['mdi'] #少了個(gè)單引號(hào) # DX, default to 14 days of +DI and -DI stockStat['dx'] # ADX, 6 days SMA of DX, same as stockStat['dx_6_ema'] stockStat['adx'] #少了個(gè)單引號(hào) # ADXR, 6 days SMA of ADX, same as stockStat['adx_6_ema'] stockStat['adxr']# TRIX, default to 12 days stockStat['trix'] # MATRIX is the simple moving average of TRIX stockStat['trix_9_sma']# VR, default to 26 days stockStat['vr'] # MAVR is the simple moving average of VR stockStat['vr_6_sma']#[5 rows x 95 columns] #print(stockStat.head()) print(stockStat.columns.values) print(len(stockStat.columns.values))打印出來全部的columns 信息。其中有些是臨時(shí)的計(jì)算變量。
['open' 'high' 'close' 'low' 'volume' 'price_change' 'p_change' 'ma5''ma10' 'ma20' 'v_ma5' 'v_ma10' 'v_ma20' 'turnover' 'volume_delta'u'open_2_s' u'open_2_d' u'open_-2_r' u'middle' u'cr' u'cr-ma1' u'cr-ma2'u'cr-ma3' u'volume_-3_s' u'volume_-1_s' u'volume_2_s'u'volume_-3,2,-1_max' u'volume_-2_s' u'volume_0_s' u'volume_1_s'u'volume_-3~1_min' u'rsv_9' u'kdjk_9' u'kdjk' u'kdjd_9' u'kdjd' u'kdjj_9'u'kdjj' u'rsv_3' u'kdjk_3' u'kdjd_3' 'kdjk_3_xu_kdjd_3' u'open_2_sma'u'close_26_ema' u'macd' u'macds' u'macdh' u'close_20_sma' u'close_20_mstd'u'boll' u'boll_ub' u'boll_lb' u'close_10.0_le' u'close_10.0_le_5_c'u'cr-ma1_20_c' 'cr-ma2_xu_cr-ma1_20_c' u'close_-1_s' u'close_-1_d' u'rs_6'u'rsi_6' u'rs_12' u'rsi_12' u'wr_10' u'wr_6' u'middle_14_sma' u'cci'u'middle_20_sma' u'cci_20' u'tr' u'atr' u'close_10_sma' u'close_50_sma'u'dma' u'high_delta' u'um' u'low_delta' u'dm' u'pdm' u'pdm_14_ema'u'pdm_14' u'atr_14' u'pdi_14' u'pdi' u'mdm' u'mdm_14_ema' u'mdm_14'u'mdi_14' u'mdi' u'dx_14' u'dx' u'dx_6_ema' u'adx' u'adx_6_ema' u'adxr'u'trix' u'trix_9_sma' u'change' u'vr' u'vr_6_sma'] 99總結(jié)
以上是生活随笔為你收集整理的Python开发一个股票类库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tensorflow 安装在Anacon
- 下一篇: ImportError: No modu