python做股票系统_GitHub - hetingqin/stock: stock,股票系统。使用python进行开发。
pythonstock V1 項目簡介
特別說明:股市有風險投資需謹慎,本項目只能用于Python代碼學習,股票分析,投資失敗虧錢不負責,不算BUG。
PythonStock V1 是基于Python的pandas,tushare,bokeh,tornado,stockstats,ta-lib等框架開發的全棧股票系統。
1)可以直接使用docker直接本地部署運行,整個項目在docker hub上壓縮后200BM,本地占用500MB磁盤空間。
2)使用Docker解決了Python庫安裝問題,使用Mariadb(MySQL)存儲數據。借助tushare抓取數據(老API,后續使用tushare pro開發)
3)使用corn做定時任務,每天進行數據抓取計算,每天18點開始進行數據計算,計算當日數據,使用300天數據進行計算,大約需要15分鐘計算完畢。
4)股票數據接口防止被封,按天進行數據緩存,儲存最近3天數據,每天定時清除,同時使用read_pickle to_pickle 的gzip壓縮模式存儲。
5)使用tornado開發web系統,支持股票數據,滬深300成份股,中證500成份股,龍虎榜數據,每日股票數據,每日大盤指數行情等
6)數據展示系統,是通用數據展示系統,配置字典模板之后,頁面自動加載數據,并完成數據展示,后續自己開發的指標數據可以加入進去。
7)增加曲線數據分析,在查看股票中,可以直接跳轉到東方財富頁面查看相關信息,點擊指標之后使用Bokeh將多達 17 個指標的數據繪圖,進行圖表展示。
bokeh 繪圖指標數據:
然后根據3個指標進行股票數據計算:
KDJ:
1,超買區:K值在80以上,D值在70以上,J值大于90時為超買。一般情況下,股價有可能下跌。投資者應謹慎行事,局外人不應再追漲,局內人應適時賣出。
2,超賣區:K值在20以下,D值在30以下為超賣區。一般情況下,股價有可能上漲,反彈的可能性增大。局內人不應輕易拋出股票,局外人可尋機入場。
RSI:
1.當六日指標上升到達80時,表示股市已有超買現象,如果一旦繼續上升,超過90以上時,則表示已到嚴重超買的警戒區,股價已形成頭部,極可能在短期內反轉回轉。
2.當六日強弱指標下降至20時,表示股市有超賣現象,如果一旦繼續下降至10以下時則表示已到嚴重超賣區域,股價極可能有止跌回升的機會。
CCI
1、當CCI>﹢100時,表明股價已經進入非常態區間——超買區間,股價的異動現象應多加關注。
2、當CCI<﹣100時,表明股價已經進入另一個非常態區間——超賣區間,投資者可以逢低吸納股票。
購買條件結果表:guess_indicators_lite_buy_daily
購買條件結果表:guess_indicators_lite_sell_daily
每日股票指標數據計算17個指標如下(數據表 guess_indicators_daily):
計算指標
說明
1,交易量delta指標分析
The Volume Delta (Vol ?)
2,計算n天差
可以計算,向前n天,和向后n天的差。
3,n天漲跌百分百計算
可以看到,-n天數據和今天數據的百分比。
4, CR指標
http://wiki.mbalib.com/wiki/CR%E6%8C%87%E6%A0%87 價格動量指標 CR跌穿a、b、c、d四條線,再由低點向上爬升160時,為短線獲利的一個良機,應適當賣出股票。 CR跌至40以下時,是建倉良機。而CR高于300~400時,應注意適當減倉。
5,最大值,最小值
計算區間最大值 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)一般是根據統計學的原理,通過一個特定的周期(常為9日、9周等)內出現過的最高價、 最低價及最后一個計算周期的收盤價及這三者之間的比例關系,來計算最后一個計算周期的未成熟隨機值RSV, 然后根據平滑移動平均線的方法來計算K值、D值與J值,并繪成曲線圖來研判股票走勢。 (3)在使用中,常有J線的指標,即3乘以K值減2乘以D值(3K-2D=J),其目的是求出K值與D值的最大乖離程度, 以領先KD值找出底部和頭部。J大于100時為超買,小于10時為超賣。
7,SMA指標
http://wiki.mbalib.com/wiki/Sma 簡單移動平均線(Simple Moving Average,SMA) 可以動態輸入參數,獲得幾天的移動平均。
8, MACD指標
http://wiki.mbalib.com/wiki/MACD 平滑異同移動平均線(Moving Average Convergence Divergence,簡稱MACD指標),也稱移動平均聚散指標 MACD 則可發揮其應有的功能,但當市場呈牛皮盤整格局,股價不上不下時,MACD買賣訊號較不明顯。 當用MACD作分析時,亦可運用其他的技術分析指標如短期 K,D圖形作為輔助工具,而且也可對買賣訊號作雙重的確認。
10, RSI指標
http://wiki.mbalib.com/wiki/RSI 相對強弱指標(Relative Strength Index,簡稱RSI),也稱相對強弱指數、相對力度指數 2)強弱指標保持高于50表示為強勢市場,反之低于50表示為弱勢市場。 (3)強弱指標多在70與30之間波動。當六日指標上升到達80時,表示股市已有超買現象,如果一旦繼續上升,超過90以上時,則表示已到嚴重超買的警戒區,股價已形成頭部,極可能在短期內反轉回轉。
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)所創造的,是一種重點研判股價偏離度的股市分析工具。 1、當CCI指標從下向上突破﹢100線而進入非常態區間時,表明股價脫離常態而進入異常波動階段, 中短線應及時買入,如果有比較大的成交量配合,買入信號則更為可靠。 2、當CCI指標從上向下突破﹣100線而進入另一個非常態區間時,表明股價的盤整階段已經結束, 將進入一個比較長的尋底過程,投資者應以持幣觀望為主。 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)是取一定時間周期內的股價波動幅度的移動平均值,主要用于研判買賣時機。
14, DMA指標
http://wiki.mbalib.com/wiki/DMA DMA指標(Different of Moving Average)又叫平行線差指標,是目前股市分析技術指標中的一種中短期指標,它常用于大盤指數和個股的研判。 DMA, difference of 10 and 50 moving average stock[‘dma’]
15, DMI,+DI,-DI,DX,ADX,ADXR指標
http://wiki.mbalib.com/wiki/DMI 動向指數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 平均方向指數評估(ADXR)實際是今日ADX與前面某一日的ADX的平均值。ADXR在高位與ADX同步下滑,可以增加對ADX已經調頭的盡早確認。 ADXR是ADX的附屬產品,只能發出一種輔助和肯定的訊號,并非入市的指標,而只需同時配合動向指標(DMI)的趨勢才可作出買賣策略。 在應用時,應以ADX為主,ADXR為輔。
16, TRIX,MATRIX指標
http://wiki.mbalib.com/wiki/TRIX TRIX指標又叫三重指數平滑移動平均指標(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),是一項通過分析股價上升日成交額(或成交量,下同)與股價下降日成交額比值, 從而掌握市場買賣氣勢的中期技術指標。
使用方法(依賴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 數據庫,需要配置變量方式:
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
說明,啟動容器后,會調用。run_init.sh 進行數據初始化,同時第一次執行后臺執行當日數據。
以后每日18點(只有18點左右才有今日的數據)進行股票數據抓取并計算。
本地訪問端口
查看jupyter的密碼:
docker exec -it stock bash
查看登錄 token 問題:
jupyter notebook list
# 就可以看到 token 了,然后可以登錄了。
1,股票系統設計
2,架構設計
全系使用python實現。因為都是python的類庫,互相之間調用方便。
從數據抓取,數據處理,到數據展示數據運算都是python實現。
最終的數據都到前端展示出來。主要分為4個文件夾。
jobs 抓取數據并存儲實現類。
libs 通用工具類。
web 前端展示框架。
supervisor 進程管理工具。
3,應用部署
需要mysql數據庫啟動。項目放到/data/stock 目錄。
CREATE DATABASE IF NOT EXISTS `stock_data` CHARACTER SET utf8 COLLATE utf8_general_ci;
使用 :
3,web使用datatable顯示報表
通用數據配置,在 libs/stock_web_dic.py 配置數據之后,可以實現動態加載菜單,根據數據庫表的行列顯示數據。
不用一個表一個表進行開發,通用數據展示。
4,使用pandas處理重復數據
data = ts.get_report_data(year, quarter)
# 處理重復數據,保存最新一條數據。
data.drop_duplicates(subset="code", keep="last")
5,增加多字段排序
1,點擊是單個字段進行排序。
2,按照【shift】,點擊多個,即可完成多字段排序。
3,服務端分頁排序。
4,按照多個字段進行篩選查詢。
6,開發環境執行
sh startStock.sh 1
9,解決跑數據問題
# 通過數據庫鏈接 engine。
def conn():
try:
db = MySQLdb.connect(MYSQL_HOST, MYSQL_USER, MYSQL_PWD, MYSQL_DB, charset="utf8")
# db.autocommit = True
except Exception as e:
print("conn error :", e)
db.autocommit(on=True)
return db.cursor()
之前升級過代碼,造成 db.cursor() 問題。
8,解決日志打印問題
配置 main.py
tornado.options.parse_command_line()
然后啟動配置參數:
/usr/local/bin/python3 /data/stock/web/main.py -log_file_prefix=/data/logs/web.log
10,升級 bokeh 到 2.1.1 版本
https://pypi.org/project/bokeh/#files
11,解決 Bokeh JS兼容問題。
升級 bokeh 到 2.1.1 版本
升級JS,因為 lib 包升級導致問題。
總結
以上是生活随笔為你收集整理的python做股票系统_GitHub - hetingqin/stock: stock,股票系统。使用python进行开发。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tomcat跳转报错_微信小程序开发:使
- 下一篇: 文字转wav_这6款超良心语音转文字工具