當前位置:股票大全官網 - 股票投資 - 混合型\股票型基金有什麽辦法可以實時查看漲跌走勢? 和指數型基金壹樣。

混合型\股票型基金有什麽辦法可以實時查看漲跌走勢? 和指數型基金壹樣。

下文我主要是以股票代碼舉例,換成基金代碼也是可以的,實時關註!

Ref===>tushare

系統:Ubuntu 15.04 Python:2.7 環境包:Anaconda,僅供娛樂...

最近在學習Python語言,剛好也想學學炒股,因此學習了壹些基礎知識後,打算做壹些股票相關的demo練手,第壹個要解決的問題當然是數據采集。

翻遍了網絡,看了壹些朋友的代碼片段,知道了向API請求數據的格式大概是這樣的:', 'ifeng': 'ifeng.com'}

URL_ERROR_MSG = '獲取失敗,請檢查網絡狀態,或者API端口URL已經不匹配!'

get_hist_data.py

# -*- coding: utf-8 -*-

"""

Created on Thu Jul 23 09:15:40 2015

@author: jet

"""

import const as ct

import pandas as pd

import json

from urllib2 import urlopen,Request

def get_hist_data(code = None, start = None, end = None, ktype = 'D'):

"""

功能:

獲取個股歷史交易數據

--------

輸入:

--------

code:string

股票代碼 比如:601989

start:string

開始日期 格式:YYYY-MM-DD 為空時取到API所提供的最早日期數據

end:string

結束日期 格式:YYYY-MM-DD 為空時取到最近壹個交易日數據

ktype:string(default=D, 函數內部自動統壹為大寫)

數據類型 D=日K線,W=周K線,M=月K線,5=5分鐘,15=15分鐘

30=30分鐘,60=60分鐘?

輸出:

--------

DataFrame

date 日期

open 開盤價

high 最高價

close 收盤價

low 最低價

chg 漲跌額?

p_chg 漲跌幅

ma5 5日均價

ma10 10日均價

ma20 20日均價

vma5 5日均量

vma10 10日均量

vma20 20日均量

turnover換手率(指數無此項)

"""?

code = code_to_APIcode(code.upper())

ktype = ktype.upper()

url = ''?

url = get_url(ktype, code)?

print(url)

js = json.loads(ping_API(url))

cols = []

if len(js['record'][0]) == 14:

cols = ct.INDEX_DAY_PRICE_COLS

else:

cols = ct.DAY_PRICE_COLS

df = pd.DataFrame(js['record'], columns=cols)

if ktype in ct.K_TYPE_KEY:

df = df.applymap(lambda x:x.replace(u',', u''))

for col in cols[1:]:

df[col]=df[col].astype(float)

if start is not None:

df = df [df.date >= start]

if end is not None:

df = df[df.date <= end]

df = df.set_index('date')

return df?

def code_to_APIcode(code):

"""

功能:

驗證輸入的股票代碼是否正確,若正確則返回API對應使用的股票代碼

"""

print(code)

if code in ct.INDEX_KEY:

return ct.INDEX_LIST[code]

else:

if len(code) != 6:

raise IOError('code input error!')

else:

return 'sh%s'%code if code[:1] in ['5', '6'] else 'sz%s'%code

def get_url(ktype, code):

"""

功能:

驗證輸入的K線類型是否正確,若正確則返回url

"""?

if ktype in ct.K_TYPE_KEY:

url = ct.DAY_PRICE_URL % (ct.PAGE_TYPE['http'], ct.PAGE_DOMAIN['ifeng'],

ct.K_TYPE[ktype], code)

return url

elif ktype in ct.K_TYPE_MIN_KEY:

url = ct.MIN_PRICE_URL % (ct.PAGE_TYPE['http'], ct.PAGE_DOMAIN['ifeng'],

code, ktype)

return url

else:

raise IOError('ktype input error!')

def ping_API(url):

"""

功能:

向API發送數據請求,若鏈接正常返回數據

"""

text = ''

try:

req = Request(url)

text = urlopen(req,timeout=10).read()?

if len(text) < 15:

raise IOError('no data!')?

except Exception as e:

print(e)

else:

return text

#測試入口

print(get_hist_data('601989','2015-07-11','2015-07-22'))