主要開發擷取台灣股市(TWSE)股價資料
Authors: | Toomore Chiang |
---|---|
Version: | 0.5.2 of 2014/04/12 |
Python Version: | Python 2.7, PyPy |
Docs: | http://grs-docs.toomore.net/ |
- python-dateutil==1.5
- grs Online: http://grs.toomore.net/
簡單計算
from grs import Stock stock = Stock('2618') # 擷取長榮航股價 print stock.moving_average(5) # 計算五日均價與持續天數 print stock.moving_average_value(5) # 計算五日均量與持續天數 print stock.moving_average_bias_ratio(5, 10) # 計算五日、十日乖離值與持續天數
擷取 12 個月份資料
stock = Stock('2618', 12)
輸出 CSV 檔
stock.out_putfile('/dev/shm/2618.csv')
擷取上櫃股價資訊
from grs import Stock stock = Stock('8446') # 擷取華研股價 print stock.moving_average(5) # 計算五日均價與持續天數 print stock.moving_average_value(5) # 計算五日均量與持續天數 print stock.moving_average_bias_ratio(5, 10) # 計算五日、十日乖離值與持續天數
如果已確定該代碼為上市或上櫃股票,可以直接指定參數跳過查表動作。
stock = Stock('2618', twse=True) # 擷取長榮航股價 stock = Stock('8446', otc=True) # 擷取華研股價
適用於其他時區查詢台灣當地時間。
from grs import TWTime what_time = TWTime() what_time.now() # 顯示台灣此刻時間 what_time.localtime() # 顯示當地此刻時間
from grs import TWSEOpen from datetime import datetime open_or_not = TWSEOpen() open_or_not.d_day(datetime.today()) # 判斷今天是否開市 # 回傳 True or False open_or_not.d_day(datetime(2012, 12, 22)) # 判斷 2012/12/22 是否開市
from grs import RealtimeStock realtime_stock = RealtimeStock('2618') # 擷取長榮航即時股價 realtime_stock.raw # 原始資料 realtime_stock.real # 回傳 type: dict(如下表)
name: | 股票名稱 Unicode |
---|---|
no: | 股票代碼 |
range: | 漲跌價 |
ranges: | 漲跌判斷 True, False |
time: | 取得時間 |
max: | 漲停價 |
min: | 跌停價 |
unch: | 昨日收盤價 |
pp: | 漲跌幅 % |
o: | 開盤價 |
h: | 當日最高價 |
l: | 當日最低價 |
c: | 成交價/收盤價 |
value: | 累計成交量 |
pvalue: | 該盤成交量 |
top5buy: | 最佳五檔買進價量資訊 |
top5sell: | 最佳五檔賣出價量資訊 |
crosspic: | K線圖 by Google Chart |
from grs import RealtimeWeight realtime_weight = RealtimeWeight() # 擷取即時大盤資訊 realtime_weight.raw # 原始檔案 realtime_weight.real # 回傳 type: dict(如下表)
原始檔案包含其他資訊請參閱 對照表
no: | 編號 |
---|---|
date: | 日期 |
time: | 時間 |
c: | 加權指數 |
value: | 成交金額(億) |
range: | 漲跌指數 |
ud: | 回傳漲(True)、跌(False) |
回傳上市股票代碼與搜尋
from grs import TWSENo twse_no = TWSENo() twse_no.all_stock # 所有股票名稱、代碼 type: dict twse_no.all_stock_no # 所有股票代碼 type: list twse_no.all_stock_name # 所有股票名稱 type: list twse_no.industry_code # 回傳類別代碼 type: dict twse_no.industry_comps # 回傳類別所屬股票代碼 type: dict twse_no.search(u'中') # 搜尋股票名稱,回傳 type: dict twse_no.searchbyno(23) # 搜尋股票代碼,回傳 type: dict twse_no.last_update # 回傳列表最後更新時間(非同步)type: str
適用於設定 cache 時間。
from grs import Countdown countdown = Countdown(hour=14, minutes=30) # 預設為 14:30 countdown.nextday # 下一個 14:30 日期 countdown.countdown # 到數秒數 countdown.exptime # 下一個 14:30 日期時間(type: datetime) countdown.lastmod # 前一個 14:30 日期時間(type: datetime)
判斷乖離轉折點
from grs import Stock stock = Stock('2618') data = stock.moving_average_bias_ratio(3, 6)[0] # 取得 3-6 乖離值 type: list # 計算五個區間負乖離轉折點 check_data = stock.check_moving_average_bias_ratio(data, sample=5, positive_or_negative= False) print check_data # (T/F, 第幾轉折日, 乖離轉折點值) type: tuple
判斷是否為技術分析的四大買賣點,條件成立,回傳條件結果,判斷結果僅供參考!
from grs import BestFourPoint from grs import Stock stock = Stock('2618') result = BestFourPoint(stock) result.best_four_point_to_buy() # 判斷是否為四大買點 result.best_four_point_to_sell() # 判斷是否為四大賣點 result.best_four_point() # 綜合判斷
全部上市股票檢視
from grs import BestFourPoint from grs import Stock from grs import TWSENo stock_no_list = TWSENo().all_stock_no for i in stock_no_list: try: best_point, info = BestFourPoint(Stock(i)).best_four_point() if best_point: # 買點 print 'Buy: {0} {1}'.format(i, info) else: # 賣點 print 'Sell: {0} {1}'.format(i, info) except: # 不作為或資料不足 print 'X: {0}'.format(i)
當原有的月份資料不夠時,不需要從頭抓取,只需要給予增額月份值即可。
from grs import Stock stock = Stock('2618') # 預設為抓取3個月份資料 stock.moving_average(60) IndexError: list index out of range # 資料不足 len(stock.raw) # 回傳 51 個值 stock.plus_mons(1) # 在抓取一個月資料 len(stock.raw) # 回傳 66 個值 stock.moving_average(60) # 計算成功
- 修正:字串判斷使用 basestring.
- 修正:套件遺漏 csv 檔案
- 新增:上櫃資訊( 櫃台買賣中心 )
- 修正:股票代碼列表回傳(TWSENo)代碼值改為 string.
- 新增: grs 文件.
- 修正:Stock
stock_no
, RealtimeStockno
必須為 string. Issues #9
- 修正:Countdown().countdown 秒數問題
- 新增:twse_no, twse_open, twse_realtime, countdown into unittest
- 移除:Support Python 2.6
- 修正:Naming Convention
- 修正:Coding style to fit PEP8
- 新增:For PyPy
- 更新:股票代碼列表
- 更新:2014 年集中交易市場開(休)市日期表
- 修正:部分資料改用 tuple
- 修正:輸出中文統一使用 Unicode
- 修正:需要套件 python-dateutil 調整為 1.5
- 修正:Web Demo 網站網址
- 新增:Stock.plusMons() 擴充月份資料
- 修正:每月首日無資料抓取問題
- 修正:Countdown 倒數時間計算錯誤(dateutil.relativedelta)
- 修正:grs 倒數時間計算錯誤(dateutil.relativedelta)