雖然同花順之類的金融理財應用的數據足夠好了,但仍是有本身定製的衝動, 數據天然不會不會比前者好不少,可是按照本身的想法來定製仍是不錯的。python
經過免費的數據接口獲取數據,每日增量更新標的歷史交易數據, 而後經過Kibana作可視化及數據分析.git
其實本身經過echarts之類的可視化框架作可視化也是個不錯的選擇,不過前期成本太大。還有就是pandas+matplotlib已經足以應付大部分需求了,但是交互感太弱,因此藉助一個可視化應用是頗有必要的,這裏選擇的是kibana, 它的競品有Grafana.github
這個目標應該會一直下去吧,你們能夠經過如下連接獲取代碼docker
https://github.com/youerning/stock_playgroundjson
Python3(推薦Anaconda安裝)api
安裝相關依賴:echarts
pip install -r requirement.txt
配置eleasticsearch, kibana環境(推薦使用docker)框架
Elasticsearch, Logstash, Kibana 7.2.0elasticsearch
獲取數據的方式有不少種,收費或者免費,做爲業餘愛好者天然選擇免費的,這裏選擇 tushare.pro, 但其實tushare會有一點限制, 如獲取數據的頻率有必定的限制,而且接口也有限制, 須要不少積分。若是你們對這個有興趣註冊,就經過個人推薦連接註冊唄, 這樣我能夠跟你們分享更多關於數據可視化的內容,以及將我下載下來的數據分享出來。ide
https://tushare.pro/register?reg=277890
值得注意的是, tushare其實也是有幾乎沒限制的免費版本的. 可是pro版本數據更全,爲了不後期維護成本,因此選擇pro版本。
其實還有其餘的免費的數據獲取方式的,你們能夠本身嘗試
配置本身的token
import tushare as ts ts.set_token("<your_token>") pro = ts.pro_api("<your_token>")
關於Token的獲取能夠參考一下連接
嘗試手動獲取數據
經過日期取歷史某一天的所有歷史 df = pro.daily(trade_date='20190725') df.head() ts_code trade_date open high low close pre_close change pct_chg vol amount value 0 000032.SZ 20190725 9.49 9.60 9.47 9.56 9.49 0.07 0.7376 12658.35 12075.625 8906.981000 1 000060.SZ 20190725 4.39 4.40 4.35 4.36 4.39 -0.03 -0.6834 129331.65 56462.292 -38586.330353 2 000078.SZ 20190725 3.37 3.38 3.35 3.38 3.37 0.01 0.2967 76681.00 25795.633 7653.564311 3 000090.SZ 20190725 5.66 5.66 5.56 5.61 5.64 -0.03 -0.5319 105582.72 59215.389 -31496.665409 4 000166.SZ 20190725 4.97 4.98 4.93 4.96 4.97 -0.01 -0.2012 268122.48 132793.120 -26717.975744 獲取某一隻股票的日線行情數據 data = ts.pro_bar(ts_code="601668.SH", adj='qfq', start_date="20120101") data.head() ts_code trade_date open high low close pre_close change pct_chg vol amount 0 601668.SH 20190726 6.01 6.06 5.98 6.03 6.04 -0.01 -0.17 696833.16 419634.547 1 601668.SH 20190725 6.05 6.07 6.02 6.04 6.04 0.00 0.00 543074.55 327829.380 2 601668.SH 20190724 6.09 6.11 6.02 6.04 6.05 -0.01 -0.17 788228.12 477542.609 3 601668.SH 20190723 5.93 6.07 5.92 6.05 5.94 0.11 1.85 1077243.46 650250.021 4 601668.SH 20190722 6.02 6.03 5.92 5.94 6.00 -0.06 -1.00 811369.73 485732.343
數據的獲取天然是須要自動化的,可是因爲接口的限制,因此須要考慮如下問題。
關鍵代碼部分
def save_data(code, start_date, fp): print("下載股票(%s)日線數據到 %s" % (code, fp)) try: data = ts.pro_bar(ts_code=code, adj='qfq', start_date=start_date) # 當超過調用次數限制返回None if data is None: time.sleep(10) return pass_set.add(code) except Exception: time.sleep(10) print("股票: %s 下載失敗" % code) return if len(data) == 0: pass_set.add(code) return try: data.trade_date = pd.to_datetime(data.trade_date) data = data.sort_values("trade_date") if path.exists(fp): data.to_csv(fp, mode="a", header=False, index=False) else: data.to_csv(fp, index=False) except Exception: print("股票:%s 保存失敗" % code)
你們能夠參考我GitHub倉庫的save_data.py, 經過如下命令就能夠自動下載數據了
python save_data.py
代碼裏面配置的起始時間是2012-01-01,有須要的課自行更改,值得注意的是須要在同級目錄配置一個config.json, 內容以下
{ "token": "<your_token>" }
配上本身的token
這裏使用的是docker進行配置。
# 拉取鏡像 docker pull sebp/elk:720 # 啓動docker環境 docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -v /home/elasticsearch/:/var/lib/elasticsearch -itd sebp/elk:720
將數據上傳到elasticsearch裏面以便數據分析
配置settings.py
# 將ip:port改爲本身elasticsearch地址,如192.168.56.102:9200 config["es_host"] = ["ip:port"]
運行代碼
# 上傳股票數據 python cmd.py dump # 上傳上證指數數據 python cmd.py dump_index
配置kibana是須要必定的時間的,好在kibana如今是大多數配置都支持導入導出,因此你們能夠經過我倉庫的export.ndjson文件直接導入
因爲如今接口受限,獲取的股票因子有限,因此等個人積分更多了,我會加入更多的dashboard, 以及visualization.
但願能夠完成本身的從無到有搭建交易系統系列文章, 而後通向工做時間地點自由之路.
不求絕對財富自由, 希望時間地點自由^_^