當前位置:股票大全官網 - 股票投資 - 如何編程從免費股票軟件中提取實時數據?

如何編程從免費股票軟件中提取實時數據?

如果妳自己寫程序,壹種方法是從提供的信息源獲取數據,比如webservice。另壹種方法是連接到提供即時信息的網頁。

代碼示例如下:

創建於2007年7月23日星期四09:17:27 2015

@作者:jet

"""

DAY_PRICE_COLS = ['date ',' open ',' high ',' close ',' low ',' volume ',

' chg ',' %chg ',' ma5 ',' ma10 ',' ma20 ',

vma5 ',' vma10 ',' vma20 ','營業額']

DAY _ PRICE _ URL = ' % SAPI . finance . % s/% s/?代碼= % s & amp' type=last '

INDEX_KEY = ['SH ',' SZ ',' HS300 ',' SZ50 ',' GEB ',' SMEB']

INDEX _ LIST = { ' SH ':' SH 000001 ',' SZ': 'sz399001 ',' HS300': 'sz399300 ',

' SZ50': 'sh000016 ',' GEB': 'sz399006 ',' SMEB': 'sz399005'}

INDEX_DAY_PRICE_COLS= ['date ',' open ',' high ',' close ',' low ',' volume ',

' chg ',' %chg ',' ma5 ',' ma10 ',' ma20 ',

vma5 ',' vma10 ',' vma20']

K_TYPE_KEY = ['D ',' W ',' M']

K_TYPE_MIN_KEY = ['5 ',' 15 ',' 30 ',' 60']

K_TYPE = {'D': 'akdaily ',' W': 'akweekly ',' M': 'akmonthly'}

MIN _ PRICE _ URL = ' % SAPI . finance . % s/AK MIN?scode = % s & amp類型=%s

PAGE_TYPE = { ' ',' ifeng': 'ifeng.com'}

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

獲取_歷史_數據. py

# -*-編碼:utf-8 -*-

"""

創建於2007年7月23日星期四09:15:40 2015

@作者:jet

"""

將常數作為聯系類型導入

進口熊貓作為pd

導入json

從urllib2導入urlopen,請求

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

"""

功能:

獲取個股歷史交易數據

-

輸入:

-

代碼:字符串

股票代碼,例如:601989。

開始:字符串

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

結束:字符串

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

Ktype:string(默認=D,函數自動統壹為大寫)

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

30=30分鐘,60=60分鐘

輸出:

-

數據幀

日期日期

開盤價

最高價

收盤價格

最低價格

Chg波動

P_chg漲跌

Ma5五天平均價格

Ma10 10日平均價格

Ma20 20天平均價格

VMA5的5天平均值

Vma10日平均

Vma20 20日平均

周轉率(該指數沒有這壹項)

"""

code = code _ to _ API code(code . upper())

ktype = ktype.upper()

url = ' '

url = get_url(ktype,code)

打印(url)

js = json.loads(ping_API(url))

cols = []

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

cols = ct。指數_日_價格_列

否則:

cols = ct。日價格欄

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

如果ct中的ktype。K_TYPE_KEY:

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

對於列中的列[1:]:

df[col]=df[col]。astype(浮點型)

如果開始不是無:

df = df[df . date & gt;=開始]

如果end不是None:

df = df[df . date & lt;=結束]

df = df.set_index('date ')

返回df

def code_to_APIcode(代碼):

"""

功能:

驗證輸入的股票代碼是否正確,如果正確,返回API使用的股票代碼。

"""

打印(代碼)

ct中的if代碼。INDEX_KEY:

返回ct。INDEX _ LIST[代碼]

否則:

if len(代碼)!= 6:

引發IOError('代碼輸入錯誤!')

否則:

如果代碼[:1]在['5 ',' 6'] else 'sz%s'%code中,則返回' sh%s'%code

def get_url(ktype,code):

"""

功能:

驗證輸入的k線類型是否正確,如果正確則返回url。

"""

如果ct中的ktype。K_TYPE_KEY:

url = ct。日價格網址%。PAGE_TYPE['http'],ct。PAGE_DOMAIN['ifeng'],

ct。K_TYPE[ktype],代碼)

返回url

聯系類型中的elif ktype。K_TYPE_MIN_KEY:

url = ct。最低價格URL %。PAGE_TYPE['http'],ct。PAGE_DOMAIN['ifeng'],

代碼,ktype)

返回url

否則:

引發IOError('ktype輸入錯誤!')

定義ping_API(url):

"""

功能:

向API發送數據請求,如果鏈接正常則返回數據。

"""

text = ' '

嘗試:

req =請求(url)

text = urlopen(req,timeout=10)。閱讀()

if len(text)& lt;15:

引發IOError('無數據!')

例外情況為e:

打印(e)

否則:

返回文本

#測試門戶

print(get _ hist _ data(' 601989 ',' 2015-07-11 ',' 2015-07-22 '))