今天要寫些甚麼?
新手小白要講講
用TA-Lib 這個套件來算一些常見的指標 
再結合 matplotlib 將這些美麗的指標畫出來


安裝的部分 我會放到後面
先來看看 範例吧~

首先我們先把使用的資料調出來
如果你看過 新手小白的 爬蟲系列文 1~3 

[Python來爬蟲系列文3] 
連結 : https://goo.gl/UzKsfC

那你手邊應該有"data.db" 這個資料庫
就可以抓裡面的資料了~

import pandas as pd
import sqlite3
import os

# 先建立一個連線 os.path 會將現行目錄抓出來 
# 然後 再找現行目錄底下的 data 這個資料夾 裡面的 "data.db" 這個資料庫
conn = sqlite3.connect(os.path.join('data', "data.db"))  

'''
這邊再回憶一下怎麼讀資料
# 用read_sql 這個語法 有幾種讀法
### 抓資料最簡單的寫法~ select * from price 
df = pd.read_sql('select * from price',conn) 
#這是全抓 會比較久一點
###進階一點 挑出stock_id 這個欄位裡面是 2337 的資料
df = pd.read_sql('select * from price where stock_id="2337"',conn) 
# 當然會比全抓得少囉~
###再進階 把*改成只想要的欄位 
df = pd.read_sql('select xxx from price where stock_id = "0050"', conn)
#XXX 可以試我想要的欄位 例如 stock_id, date, 開盤價, 收盤價, 最高價, 最低價, 成交股數
###最後 我們可以設定 index_col
###還有利用 parse_dates這寫法 把資料欄裡的data變成時間的資料格式
'''

df = pd.read_sql('select stock_id, date, 開盤價, 收盤價, 最高價, 最低價, 成交股數 from price where stock_id="2337"', conn,
                index_col=['date'], parse_dates=['date'])
#改一下欄位名稱 這樣比較潮~
df.rename(columns={'收盤價':'close', '開盤價':'open', '最高價':'high', '最低價':'low', '成交股數':'volume'}, inplace=True)
df.head()

 

## 畫個股價圖看一下吧~

%matplotlib inline
import matplotlib.pyplot as plt
df['close'].plot()

## 看起來還不錯~


##接著 TA-Lib 登場~~
from talib import abstract   # abstract  是 talib 裡面計算指標用的

# 首先最簡單的 SMA5
abstract.SMA(df,5)  # 一句指令就搞定~

## 如果你看一下 SMA10 SMA30 這些要怎麼調整
## 可以直接用print 看看這個指標吃那些參數 又會吐甚麼東西出來

print(abstract.SMA)

### 所以你就可以知道 喔喔~ 他只吃一個參數 就是 timeperiod
##MACD 就比較複雜 
print(abstract.MACD )
## 他有快線 慢線 跟 ?signalperid 這不知是什麼@@ 應該是參考線吧? (有請高人指點了!!)

##其他查了一下官網~ 還有一堆指標
##也是一行指令就幫你算好了~~ 夠神奇吧!


## 那畫這些指標圖怎麼辦呢?
## 因為有前人的智慧 Author: Daniel Treiman
## 幫忙寫了一個 plot_candles 的函數
## 讓我們可以很簡單的將 指標畫在一起 
## 我會跟整段code放在最後的連結裡

## 我先把一些指標 算出來 
SMA = abstract.SMA(df)
RSI = abstract.RSI(df)
STOCH = abstract.STOCH(df)     ## STOCH是 KD 線

plot_candles(
             start_time='2017-01-01',      ## 開始時間
             end_time='2018-01-01',       ## 結束時間
             pricing=df,                            ## dataframe 只吃 ['open_price', 'close_price', 'high', 'low', 'volume']
             title='Candles',                      ## 名稱而已
             volume_bars=True,               ## 畫不畫 量圖
             overlays=[SMA],                    ##  跟股價圖 疊起來的是什麼指標
             technicals = [RSI, STOCH],    ## 其他圖要畫甚麼
             technicals_titles=['RSI', 'KD'] ## 其他圖的名稱
            )

## 畫出來的結果~~ 美呆了^^


最後講講怎麼安裝吧~~
1. 點官網的連結 : https://github.com/mrjbq7/ta-lib
2. 找一下 Dependencies => Windows 
    你可以看到他寫說  You might also try these unofficial windows binaries for both 32-bit and 64-bit:
    意思是他有分 32-bit 和 64-bit 的版本啦~
    你看一下你電腦上的目錄 有沒有 (x86) 這個資料夾~  有的話就是64-bit了
    

3. 下載安裝檔 

因為不知道會不會更新連結 你先點這邊

然後你可以看到他有很多版本
我載的是紅框的那版 
原因是 我的python 是 3.6 版 然後電腦 64-bit
對應的檔名裡面就有 cp 36 / amd64 這兩個關鍵字

你如果不知道 自己python是哪一版
可以用這個指令
import sys
sys.version

就知道我是3.6.5版的~~ 順便一提 他也有講我是 64 bit

4. 進行安裝
將檔案放在使用者資料夾 一般就是download的上一層
像我的就是:

然後在 anaconda prompt 鍵入 pip install XXX 
      注: XXX 為下載的檔案名稱
這樣就可以安裝了

5. 確認安裝

很簡單啊 就 import 看看就知道了
隨便新增一個 .ipynb 檔
打 import talib
如果沒出現error 那就表示你安裝成功囉~~
可以跑跑看我上面的範例了!!

 


以上就是 今天要跟大家介紹 的內容
code一樣放在 :  http://ge.tt/3h3Ffqp2
名稱 : Talib_Ref_DB

今天又是元氣滿滿的一天~

 

 

 

 

創作者介紹
創作者 Markjong001 的頭像
Markjong001

新手小白用Python來做資料分析是否搞錯了什麼

Markjong001 發表在 痞客邦 留言(0) 人氣()