stock-job-web股票數(shù)據(jù)計算分析 web 系統(tǒng)
stock-job-web V1 是基于 Python的 pandas、tushare、bokeh、tornado、stockstats、ta-lib 等框架開發(fā)的全棧股票系統(tǒng)。
1)可以直接使用docker直接本地部署運行,整個項目在docker hub上壓縮后200BM,本地占用500MB磁盤空間。
2)使用Docker解決了Python庫安裝問題,使用Mariadb(MySQL)存儲數(shù)據(jù)。借助tushare抓取數(shù)據(jù)(老API,后續(xù)使用tushare pro開發(fā))
3)使用corn做定時任務(wù),每天進行數(shù)據(jù)抓取計算,每天18點開始進行數(shù)據(jù)計算,計算當(dāng)日數(shù)據(jù),使用300天數(shù)據(jù)進行計算,大約需要15分鐘計算完畢。
4)股票數(shù)據(jù)接口防止被封,按天進行數(shù)據(jù)緩存,儲存最近3天數(shù)據(jù),每天定時清除,同時使用read_pickle to_pickle 的gzip壓縮模式存儲。
5)使用tornado開發(fā)web系統(tǒng),支持股票數(shù)據(jù),滬深300成份股,中證500成份股,龍虎榜數(shù)據(jù),每日股票數(shù)據(jù),每日大盤指數(shù)行情等
6)數(shù)據(jù)展示系統(tǒng),是通用數(shù)據(jù)展示系統(tǒng),配置字典模板之后,頁面自動加載數(shù)據(jù),并完成數(shù)據(jù)展示,后續(xù)自己開發(fā)的指標數(shù)據(jù)可以加入進去。
7)增加曲線數(shù)據(jù)分析,在查看股票中,可以直接跳轉(zhuǎn)到東方財富頁面查看相關(guān)信息,點擊指標之后使用Bokeh將多達 17 個指標的數(shù)據(jù)繪圖,進行圖表展示。
每日股票指標數(shù)據(jù)計算17個指標如下(數(shù)據(jù)表 guess_indicators_daily):
| 計算指標 | 說明 |
|---|---|
| 1,交易量delta指標分析 | The Volume Delta (Vol ?) |
| 2,計算n天差 | 可以計算,向前n天,和向后n天的差。 |
| 3,n天漲跌百分百計算 | 可以看到,-n天數(shù)據(jù)和今天數(shù)據(jù)的百分比。 |
| 4, CR指標 | http://wiki.mbalib.com/wiki/CR%E6%8C%87%E6%A0%87 價格動量指標 CR跌穿a、b、c、d四條線,再由低點向上爬升160時,為短線獲利的一個良機,應(yīng)適當(dāng)賣出股票。 CR跌至40以下時,是建倉良機。而CR高于300~400時,應(yīng)注意適當(dāng)減倉。 |
| 5,最大值,最小值 | 計算區(qū)間最大值 volume max of three days ago, yesterday and two days later stock["volume_-3,2,-1_max"] volume min between 3 days ago and tomorrow stock["volume_-31_min"] 實際使用的時候使用 -22 可計算出5天的最大,最小值。 |
| 6, KDJ指標 | http://wiki.mbalib.com/wiki/%E9%9A%8F%E6%9C%BA%E6%8C%87%E6%A0%87 隨機指標(KDJ)一般是根據(jù)統(tǒng)計學(xué)的原理,通過一個特定的周期(常為9日、9周等)內(nèi)出現(xiàn)過的最高價、 最低價及最后一個計算周期的收盤價及這三者之間的比例關(guān)系,來計算最后一個計算周期的未成熟隨機值RSV, 然后根據(jù)平滑移動平均線的方法來計算K值、D值與J值,并繪成曲線圖來研判股票走勢。 (3)在使用中,常有J線的指標,即3乘以K值減2乘以D值(3K-2D=J),其目的是求出K值與D值的最大乖離程度, 以領(lǐng)先KD值找出底部和頭部。J大于100時為超買,小于10時為超賣。 |
| 7,SMA指標 | http://wiki.mbalib.com/wiki/Sma 簡單移動平均線(Simple Moving Average,SMA) 可以動態(tài)輸入?yún)?shù),獲得幾天的移動平均。 |
| 8, MACD指標 | http://wiki.mbalib.com/wiki/MACD 平滑異同移動平均線(Moving Average Convergence Divergence,簡稱MACD指標),也稱移動平均聚散指標 MACD 則可發(fā)揮其應(yīng)有的功能,但當(dāng)市場呈牛皮盤整格局,股價不上不下時,MACD買賣訊號較不明顯。 當(dāng)用MACD作分析時,亦可運用其他的技術(shù)分析指標如短期 K,D圖形作為輔助工具,而且也可對買賣訊號作雙重的確認。 |
| 9, BOLL指標 | http://wiki.mbalib.com/wiki/BOLL 布林線指標(Bollinger Bands) |
| 10, RSI指標 | http://wiki.mbalib.com/wiki/RSI 相對強弱指標(Relative Strength Index,簡稱RSI),也稱相對強弱指數(shù)、相對力度指數(shù) 2)強弱指標保持高于50表示為強勢市場,反之低于50表示為弱勢市場。 (3)強弱指標多在70與30之間波動。當(dāng)六日指標上升到達80時,表示股市已有超買現(xiàn)象,如果一旦繼續(xù)上升,超過90以上時,則表示已到嚴重超買的警戒區(qū),股價已形成頭部,極可能在短期內(nèi)反轉(zhuǎn)回轉(zhuǎn)。 |
| 11, W%R指標 | http://wiki.mbalib.com/wiki/%E5%A8%81%E5%BB%89%E6%8C%87%E6%A0%87 威廉指數(shù)(Williams%Rate)該指數(shù)是利用擺動點來度量市場的超買超賣現(xiàn)象。 |
| 12, CCI指標 | http://wiki.mbalib.com/wiki/%E9%A1%BA%E5%8A%BF%E6%8C%87%E6%A0%87 順勢指標又叫CCI指標,其英文全稱為“Commodity Channel Index”, 是由美國股市分析家唐納德·藍伯特(Donald Lambert)所創(chuàng)造的,是一種重點研判股價偏離度的股市分析工具。 1、當(dāng)CCI指標從下向上突破﹢100線而進入非常態(tài)區(qū)間時,表明股價脫離常態(tài)而進入異常波動階段, 中短線應(yīng)及時買入,如果有比較大的成交量配合,買入信號則更為可靠。 2、當(dāng)CCI指標從上向下突破﹣100線而進入另一個非常態(tài)區(qū)間時,表明股價的盤整階段已經(jīng)結(jié)束, 將進入一個比較長的尋底過程,投資者應(yīng)以持幣觀望為主。 CCI, default to 14 days |
| 13, TR、ATR指標 | http://wiki.mbalib.com/wiki/%E5%9D%87%E5%B9%85%E6%8C%87%E6%A0%87 均幅指標(Average True Ranger,ATR)均幅指標(ATR)是取一定時間周期內(nèi)的股價波動幅度的移動平均值,主要用于研判買賣時機。 |
| 14, DMA指標 | http://wiki.mbalib.com/wiki/DMA DMA指標(Different of Moving Average)又叫平行線差指標,是目前股市分析技術(shù)指標中的一種中短期指標,它常用于大盤指數(shù)和個股的研判。 DMA, difference of 10 and 50 moving average stock[‘dma’] |
| 15, DMI,+DI,-DI,DX,ADX,ADXR指標 | http://wiki.mbalib.com/wiki/DMI 動向指數(shù)Directional Movement Index,DMI) http://wiki.mbalib.com/wiki/ADX 平均趨向指標(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ù)評估(ADXR)實際是今日ADX與前面某一日的ADX的平均值。ADXR在高位與ADX同步下滑,可以增加對ADX已經(jīng)調(diào)頭的盡早確認。 ADXR是ADX的附屬產(chǎn)品,只能發(fā)出一種輔助和肯定的訊號,并非入市的指標,而只需同時配合動向指標(DMI)的趨勢才可作出買賣策略。 在應(yīng)用時,應(yīng)以ADX為主,ADXR為輔。 |
| 16, TRIX,MATRIX指標 | http://wiki.mbalib.com/wiki/TRIX TRIX指標又叫三重指數(shù)平滑移動平均指標(Triple Exponentially Smoothed Average) |
| 17, VR,MAVR指標 | http://wiki.mbalib.com/wiki/%E6%88%90%E4%BA%A4%E9%87%8F%E6%AF%94%E7%8E%87 成交量比率(Volumn Ratio,VR)(簡稱VR),是一項通過分析股價上升日成交額(或成交量,下同)與股價下降日成交額比值, 從而掌握市場買賣氣勢的中期技術(shù)指標。 |
使用方法(依賴docker)
使用 mariadb 和 stock 兩個鏡像
mkdir -p /data/mariadb/data
docker pull pythonstock/pythonstock:latest
docker pull mariadb:latest
docker run --name mariadb -v /data/mariadb/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=mariadb -p 3306:3306 -d mariadb:latest
docker run -itd --link=mariadb --name stock \
-v /data/notebooks:/data/notebooks \
-p 8888:8888 \
-p 9999:9999 \
pythonstock/pythonstock:latest
直接啟動stock ,使用其他 mysql 數(shù)據(jù)庫,需要配置變量方式:
docker run -itd --name stock \
-v /data/notebooks:/data/notebooks \
-p 8888:8888 \
-p 9999:9999 \
-e MYSQL_HOST=127.0.0.1 \
-e MYSQL_USER=root \
-e MYSQL_PWD=mariadb \
-e MYSQL_DB=stock_data \
pythonstock/pythonstock:latest
進入鏡像:
docker exec -it stock bash
sh /data/stock/jobs/cron.daily/run_daily
說明,啟動容器后,會調(diào)用。run_init.sh 進行數(shù)據(jù)初始化,同時第一次執(zhí)行后臺執(zhí)行當(dāng)日數(shù)據(jù)。 以后每日18點(只有18點左右才有今日的數(shù)據(jù))進行股票數(shù)據(jù)抓取并計算。
本地訪問端口
http://localhost:9999 股票系統(tǒng)
http://localhost:8888 jupyter
查看jupyter的密碼:
docker exec -it stock bash
查看登錄 token 問題:
jupyter notebook list
# 就可以看到 token 了,然后可以登錄了。
股票系統(tǒng)設(shè)計
相關(guān)博客資料: http://blog.csdn.net/freewebsys/article/category/7076584
股票數(shù)據(jù)抓取框架使用TuShare。 http://tushare.org/
數(shù)據(jù)分析清洗使用pandas,numpy。 http://pandas.pydata.org/
數(shù)據(jù)存儲到磁盤上,使用Mysql數(shù)據(jù)庫。存儲股票數(shù)據(jù)。 https://pypi.python.org/pypi/mysqlclient
web框架使用tornado http://www.tornadoweb.org/en/stable/
tornado web系統(tǒng) http://docs.pythontab.com/tornado/introduction-to-tornado/
scikit-learn 文檔,中文文檔 https://scikit-learn.org/stable/ https://github.com/apachecn/sklearn-doc-zh/
架構(gòu)設(shè)計
全系使用python實現(xiàn)。因為都是python的類庫,互相之間調(diào)用方便。 從數(shù)據(jù)抓取,數(shù)據(jù)處理,到數(shù)據(jù)展示數(shù)據(jù)運算都是python實現(xiàn)。
最終的數(shù)據(jù)都到前端展示出來。主要分為4個文件夾。
jobs 抓取數(shù)據(jù)并存儲實現(xiàn)類。
libs 通用工具類。
web 前端展示框架。
supervisor 進程管理工具。
github地址:https://github.com/pythonstock/stock
博客資料: http://blog.csdn.net/freewebsys/article/category/7076584
