㈠ 股市走勢圖k線怎麼看
看股票K線是炒股最常用的方法之一。用K線找「規律」也是大家比較多用到的方法,股市風險大炒股還是要謹慎,才能分析清楚進而更好投資,獲得收益。
下面就來跟大家詳細說明一下K線,從哪幾個方面去分析它。
分享之前,先免費送給大家幾個炒股神器,能幫你收集分析數據、估值、了解最新資訊等等,都是我常用的實用工具,建議收藏:炒股的九大神器免費領取(附分享碼)
一、 股票K線是什麼意思?
K線圖有許多別的稱呼,像是蠟燭圖、日本線、陰陽線等,最為普遍常見的叫法是--K線,它起初是為了計算米價的趨向而出現的,之後股票、期貨、期權等證券市場都有它的一席之地。
影線和實體構成形為柱狀的k線。影線在實體上方的部分叫上影線,下方的部分叫下影線,實體分陽線和陰線。
Ps:影線代表的是當天交易的最高和最低價,實體表示的是當天的開盤價和收盤價。
陽線的表示方法很多,最常用的有紅色、白色柱體還有黑框空心,然而陰線通常用實體柱做代表,顏色一般為綠色、黑色或者藍色,
另外,「十字線」被我們看到時,就可以認為一條線是實體部分改變後的形態
其實十字線很容易理解的,它表示的是當天的的收盤價=開盤價。
認識了K線,我們對找出買賣點就會很在行(K線也是有指導價值的,雖然說是股市無法預測),對於新手來說也是最好操控的。
這里大家應該值得注意的是,K線分析起來,沒有想像中那麼容易,如果你對K線不清楚,建議用一些輔助工具來幫你判斷一隻股票是否值得買。
比如說下面的診股鏈接,輸入你中意的股票代碼,就能自動幫你估值、分析大盤形勢等等,我剛開始炒股的時候就用這種方法來過渡,非常方便:【免費】測一測你的股票當前估值位置?
下面我來簡單講解幾個K線分析的小技巧,一些簡單的內容幫助你盡快知道。
二、怎麼用股票K線進行技術分析?
1、實體線為陰線
這個時候股票的成交量就需要分析一下,出現那種成交量不大的情況,表明股價可能會短期下降;而成交量很大的話,那股價很有可能要長期下跌了。
2、實體線為陽線
實體線為陽線就意味著股價上漲動力更足,至於是不是長期上漲必須結合其他指標進行判斷。
比如說大盤形式、行業前景、估值等等因素/指標,但是由於篇幅問題,不能展開細講,大家可以點擊下方鏈接了解:新手小白必備的股市基礎知識大全
應答時間:2021-08-27,最新業務變化以文中鏈接內展示的數據為准,請點擊查看
㈡ 股票里的LW&R怎麼看
LW&R 威廉指標
1.LWR2<30,超買;LWR2>70,超賣。
2.線LWR1向下跌破線LWR2,買進信號; 線LWR1向上突破線LWR2,賣出信號。
3.線LWR1與線LWR2的交叉發生在30以下,70以上,才有效。
4.LWR指標不適於發行量小,交易不活躍的股票;對大盤和熱門大盤股有極高准確性。
㈢ 在股市中,KDJ、MACD、OBV、DMA、VR、CR、WR、VOL、KD、RSI、EPS、PE分別指的是什麼
kdj
隨機指標(KDJ指標的中文名稱是隨機指數)最早起源於期貨市場,由喬治·萊恩首創的,它在通過當日或最近幾日最高價、最低價及收盤價等價格波動的波幅,反映價格趨勢的強弱。
macd
MACD稱為指數平滑異同移動平均線,是從雙移動平均線發展而來的,由快的移動平均線減去慢的移動平均線,MACD的意義和雙移動平均線基本相同,但閱讀起來更方便。當MACD從負數轉向正數,是買的信號。當MACD從正數轉向負數,是賣的信號。當MACD以大角度變化,表示快的移動平均線和慢的移動平均線的差距非常迅速的拉開,代表了一個市場大趨勢的轉變。
OBV
OBV的英文全稱是:On Balance Volume,中英名稱可翻譯為:平衡交易量,是由美國的投資分析家Joe Granville所創。該指標通過統計成交量變動的趨勢來推測股價趨勢。OBV以「N」字型為波動單位,並且由許許多多「N」型波構成了OBV的曲線圖,對一浪高於一浪的「N」型波,稱其為「上升潮」(UP TIDE),至於上升潮中的下跌回落則稱為「跌潮」(DOWN FIELD)
dma
DMA指標又叫平行線差指標,是目前股市分析技術指標中的一種中短期指標,它常用於大盤指數和個股的研判。
買賣原則:
DMA線向上交叉AMA線,做買。
DMA線向下交叉AMA線,做賣。
DMA指標也可觀察與股價的背離。
VR
VR(Volitility Volumle Ratio)中文名稱:成交量變異率,主要的作用在於以成交量的角度測量股價的熱度,不同於AR、BR、CR的價格角度,但是卻同樣基於「反市場操作」的原理為出發點。和VR指標同性質的指標還有PVT、PVI、NVI、 A/DVOLUME……等
cr
CR指標又叫中間意願指標,它和AR、BR指標又很多相似之處,但更有自己獨特的研判功能,是分析股市多空雙方力量對比、把握買賣股票時機的一種中長期技術分析工具
CR指標同AR、BR指標有很多相似的地方,如計算公式和研判法則等,但它與AR、BR指標最大不同的地方在於理論的出發點有不同之處。CR指標的理論出發點是:中間價是股市最有代表性的價格。
為避免AR、BR指標的不足,在選擇計算的均衡價位時,CR指標採用的是上一計算周期的中間價。理論上,比中間價高的價位其能量為「強」,比中間價低的價位其能量為「弱」。CR指標以上一個計算周期(如N日)的中間價比較當前周期(如日)的最高價、最低價,計算出一段時期內股價的「強弱」,從而在分析一些股價的異常波動行情時,有其獨到的功能。
另外,CR指標不但能夠測量人氣的熱度、價格動量的潛能,而且能夠顯示出股價的壓力帶和支撐帶,為分析預測股價未來的變化趨勢,判斷買賣股票的時機提供重要的參考。
wr
WR指標,中文稱威廉指標,股票術語,表示當天的收盤價在過去一段日子的全部價格範圍內所處的相對位置,是一種兼具超買超賣和強弱分界的指標。它主要的作用在於輔助其他指標確認訊號。
WR1一般是6天買賣強弱指標;
WR2一般是10天買賣強弱指標。
以N日威廉指標為例,
WR(N) = 100 * [ HIGH(N)-C ] / [ HIGH(N)-LOW(N) ]
C:當日收盤價
HIGH(N):N日內的最高價
LOW(n):N日內的最低價
vol
股市中的VOL是成交量指標,成交量是指個股和大盤的成交總手,在形態上用一根立式的柱子來表示。左面的坐標值與柱子的橫向對應處,就是當日當時的成交總手。如當天收盤價高於當天均價,成交柱呈紅色;反之,成交柱呈綠色。 藍柱表示的是當天收盤指數是下跌的,紅柱則表示當天是上漲的。(5,10,20)分別代表5天,10天,20天的平均成交量。 VOL,是成交量類指標中最簡單、最常用得指標,它以成交量柱線和三條簡單平均線組成
kd
KDJ指標的中文名稱是隨機指數,是技術分析指標的一種,最早起源於期貨市場,是在WMS的基礎上發展起來的
rsi
RSI最早被用於期貨交易中,後來人們發現用該指標來指導股票市場投資效果也十分不錯,並對該指標的特點不斷進行歸納和總結。現在,RSI已經成為被投資者應用最廣泛的技術指標之一。投資的一般原理認為,投資者的買賣行為是各種因素綜合結果的反映,行情的變化最終取決於供求關系,而RSI指標正是根據供求平衡的原理,通過測量某一個期間內股價上漲總幅度占股價變化總幅度平均值的百分比,來評估多空力量的強弱程度,進而提示具體操作的。RSI的應用法則表面上比較復雜,包括了交叉、數值、形態和背離等多方面的判斷原則。
EPS
是每股盈餘(Earnings Per Share)的縮寫,指普通股每股稅後利潤。 EPS(每股盈餘)=盈餘/流通在外股數,傳統的每股收益指標計算公式為:每股收益=期末凈利潤÷期末總股本。EPS為公司獲利能力的最後結果。每股盈餘高代表著公司每單位資本額的獲利能力高,這表示公司具有某種較佳的能力——產品行銷、技術能力、管理能力等等,使得公司可以用較少的資源創造出較高的獲利。 本業的每股獲利,通常也代表著該年度所能配發的股利。如果以股利收入的角度來選股,則可以eps作為替代變數。
eps每股盈餘 :(稅後純益-特別股股利)/發行在外普通股股數。即每股獲利。稅後凈利=營業收入+營業外收入-營業成本-營業費用-營業外支出(Earnings Per Share)的縮寫,每股收益。每股收益是指本年凈收益與普通股份總數的比值,根據股數取值的不同,有全面攤薄每股收益和加權平均每股收益。全面攤薄每股收益是指計算時取年度末的普通股份總數,理由是新發行的股份一般是溢價發行的,新老股東共同分享公司發行新股前的收益。加權平均每股收益是指計算時股份數用按月對總股數加權計算的數據,理由是由於公司投入的資本和資產不同,收益產生的基礎也不同。
每股收益=利潤/總股數
並不是每股收益越高越好,因為還要考慮每股的股價
例如:利潤100W,股數100W股 10元/股,此時假設企業股價反映了總資產為1000W
總資產收益率=100/1000*100%=10%
每股收益=100W/100W=1元
另一企業利潤100W,股數50W股 40元/股,企業總資產為2000W
總資產收益率=100/2000*100%=5%
每股收益=100W/50W=2元
每股收益突出了分攤到每一份股票上的盈利數額,是股票市場上按市盈率定價的基礎。如果一家公司的凈利潤很大,但每股盈利卻很小,表明它的業績被過分稀釋,每股價格通常不高。
市盈率=每股市價/每股利潤
pe
市盈率指在一個考察期(通常為12個月的時間)內,股票的價格和每股收益的比率。投資者通常利用該比例值估量某股票的投資價值,或者用該指標在不同公司的股票之間進行比較。「P/E Ratio」表示市盈率;「Price per Share」表示每股的股價;「Earnings per Share」表示每股收益。即股票的價格與該股上一年度每股稅後利潤之比(P/E),該指標為衡量股票投資價值的一種動態指標。
㈣ 如何編程從免費股票軟體中提取實時數據
自己寫程序的話,一種方法是從已提供的信息源,例如webservice獲取數據。還有種辦法就是去連接提供即時信息的網頁硬解析。
代碼舉例如下:
Created on Thu Jul 23 09:17:27 2015
@author: jet
"""
DAY_PRICE_COLS = ['date', 'open', 'high', 'close', 'low', 'volume',
'chg', '%chg', 'ma5', 'ma10', 'ma20',
'vma5', 'vma10', 'vma20', 'turnover']
DAY_PRICE_URL = '%sapi.finance.%s/%s/?code=%s&type=last'
INDEX_KEY = ['SH', 'SZ', 'HS300', 'SZ50', 'GEB', 'SMEB']
INDEX_LIST = {'SH': 'sh000001', '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/akmin?scode=%s&type=%s'
PAGE_TYPE = {'http': 'http://', 'ftp': 'ftp://'}
PAGE_DOMAIN = {'sina': 'sina.com.cn', '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'))
㈤ 股票交易行情中B、W、M分別是指什麼
在股票交易系統中,B一般是指買入股票,W和M都是K線形態,W底對應著M頭,是個別股的支撐、壓力位。
例如:A股票今天的成交量是51.42M,B股票今天的成交量是1.52B
成交量51.42M就對應是5142萬股,成交量1.52B,就是15.2億股。
股票的市場價格由市場決定的。股票的面值和市值往往是不一致的。股票價格可以高於面值,也可以低於面值,但股票第一次發行的價格一般不低於面值。股票價格取決於預期股息的多少,銀行利息率的高低,及股票市場的供求關系。股票市場是一個波動的市場,股票市場價格亦是不斷波動的。
股票的市場交易價格主要有:開市價,收市價,最高價,最低價。收市價是最重要的,是研究分析股市以及抑制股票市場行情圖表採用的基本數據。
㈥ 股票K線圖上的TOW,KDJ,RSI 各代表什麼意思啊 怎麼運用 請高手指點
TOW是寶塔線指標;KDJ是隨機指標,由K線、D線和J線這三條曲線共同構成;RSI是相對強弱指標。
經常炒股的人都知道要看股票K線。用K線找「規律」也是大家比較多用到的方法,股市風險大炒股還是要謹慎,這樣可以更好的進行投資決策,獲取收益。
下面跟大家來詳細說明一下什麼是K線,教大家如何分析它。
分享之前,先免費送給大家幾個炒股神器,能幫你收集分析數據、估值、了解最新資訊等等,都是我常用的實用工具,建議收藏:炒股的九大神器免費領取(附分享碼)
一、 股票K線是什麼意思?
K線圖被稱作蠟燭圖、日本線、陰陽線等,我們常叫K線,它最先用於分析米價的趨勢的,後來被應用到了股票、期貨、期權等證券市場。
K線是一條柱狀的線條,由影線和實體組成。影線在實體上方的部分叫上影線,下方的部分叫下影線,實體分陽線和陰線。
Ps:影線代表的是當天交易的最高和最低價,實體表示的是當天的開盤價和收盤價。
其中陽線的表示方法有三種,分別是:紅色、白色柱體還有黑框空心,而常見的陰線表示方法是用綠色、黑色或者藍色實體柱。
除了講的這些以外,大家目測到「十字線」的時候,就意味著是實體部分轉換成一條線。
其實十字線很容易理解的,其實就是收盤的價格和開盤時一樣。
將K線研究透,我們可以敏銳地找出買賣點(K線也是有指導價值的,雖然說是股市無法預測),對於新手來說也是最好操控的。
這里我要一下提醒大家,K線分析是比較難的,對於炒股小白來說,建議用一些輔助工具來幫你判斷一隻股票是否值得買。
比如說下面的診股鏈接,輸入你中意的股票代碼,就能自動幫你估值、分析大盤形勢等等,我剛開始炒股的時候就用這種方法來過渡,非常方便:【免費】測一測你的股票當前估值位置?
下面有幾個關於K線分析的小妙招,接下來我就給大家講講,幫助你快速進入初級階段。
二、怎麼用股票K線進行技術分析?
1、實體線為陰線
股票成交量是怎樣的,這個時候是我們要重視的,萬一成交量不大,這就表示著股價可能會短期下降;如果成交量很大,估計股價要長期下跌了。
2、實體線為陽線
實體線為陽線代表了什麼?代表股價上漲動力更足,但是否是長期上漲,還要結合其他指標進行判斷。
比如說大盤形式、行業前景、估值等等因素/指標,但是由於篇幅問題,不能展開細講,大家可以點擊下方鏈接了解:新手小白必備的股市基礎知識大全
應答時間:2021-09-24,最新業務變化以文中鏈接內展示的數據為准,請點擊查看
㈦ 怎樣自動導出通達信股票數據
方法:打開一個股票的K線圖,34,【數據導出】,【高級導出】,【添加股票】,把滬A、深A的股票全部選上,選擇好路徑,選擇【開始導出】即可。
股票是股份公司發行的所有權憑證,是股份公司為籌集資金而發行給各個股東作為持股憑證並藉以取得股息和紅利的一種有價證券。每股股票都代表股東對企業擁有一個基本單位的所有權。每支股票背後都有一家上市公司。同時,每家上市公司都會發行股票的。
同一類別的每一份股票所代表的公司所有權是相等的。每個股東所擁有的公司所有權份額的大小,取決於其持有的股票數量占公司總股本的比重。
股票是股份公司資本的構成部分,可以轉讓、買賣,是資本市場的主要長期信用工具,但不能要求公司返還其出資。
㈧ 股票中𠃊〇W是什麼意思
你好,股票low通常是指股價被低估的一類股票。這類股票通常具有低市盈率與市凈率、高股息的特徵。
風險揭示:本信息部分根據網路整理,不構成任何投資建議,投資者不應以該等信息取代其獨立判斷或僅根據該等信息作出決策,不構成任何買賣操作,不保證任何收益。如自行操作,請注意倉位控制和風險控制。
㈨ 股票技術分析中的MACD,KDJ,RSI,BOLL,OBV,W&R,DMI,ASI,MIKE,VR,EXPMA,ARBR,SAR,BETA分別代表什麼意思
我跟你說主要的吧!
MACD根據兩條不同速度的指數平滑移動平均線來計算兩者之間的離差狀況作為行情研判的基礎,實際是運用快速與慢速移動平均線聚合與分離的徵兆,來判斷買進與賣出的時機與信號。MACD使用滯後性的均線指標,來顯示趨勢特徵。當用長均線減去短均線後,這些滯後指標就成為了一個動力振盪指標(Momentum oscillator)。其結果是它構造了一根在零點線上下擺動的振盪線,並且沒有上下幅度限制。在實際操作中,MACD指標不但具備抄底(價格、MACD背離時)、捕捉強勢上漲點(MACD連續二次翻紅時買入)的功能,而且能夠捕捉最佳賣點,幫助投資者成功逃頂。
KDJ指標的應用法則KDJ指標是三條曲線,在應用時主要從五個方面進行考慮:KD的取值的絕對數字;KD曲線的形態;KD指標的交叉;KD指標的背離;J指標的取值大小。
第一,從KD的取值方面考慮。KD的取值范圍都是0~100,將其劃分為幾個區域:80以上為超買區,20以下為超賣區,其餘為徘徊區。
根據這種劃分,KD超過80就應該考慮賣出了,低於20就應該考慮買入了。應該說明的
是,上述劃分只是一個應用KD指標的初步過程,僅僅是信號,完全按這種方法進行操作很容易招致損失。
第二,從KD指標曲線的形態方面考慮。當KD指標在較高或較低的位置形成了頭肩形和多重頂(底)時,是採取行動的信號。注意,這些形態一定要在較高位置或較低位置出現,位置越高或越低,結論越可靠。
第三,從KD指標的交叉方面考慮。K與D的關系就如同股價與MA的關系一樣,也有死亡交叉和黃金交叉的問題,不過這里交叉的應用是很復雜的,還附帶很多其他條件。
以K從下向上與D交叉為例:K上穿D是金叉,為買入信號。但是出現了金叉是否應該買
入,還要看別的條件。第一個條件是金叉的位置應該比較低,是在超賣區的位置,越低越好。
第二個條件是與D相交的次數。有時在低位,K、D要來回交叉好幾次。交叉的次數以2次為最少,越多越好。
第三個條件是交叉點相對於KD線低點的位置,這就是常說的「右側相交」原則。K是在D已經抬頭向上時才同D相交,比D還在下降時與之相交要可靠得多。
第四,從KD指標的背離方面考慮。在KD處在高位或低位,如果出現與股價走向的背離,則是採取行動的信號。
第五,J指標取值超過100和低於0,都屬於價格的非正常區域,大於100為超買,小0為超賣。
RSI的原理簡單來說是以數字計算的方法求出買賣雙方的力量對比,譬如有100個人面對一件商品,如果50個人以上要買,競相抬價,商品價格必漲。相反,如果50個人以上爭著賣出,價格自然下跌。
強弱指標理論認為,任何市價的大漲或大跌,均在0-100之間變動,根據常態分配,認為RSI值多在30-70之間變動,通常80甚至90時被認為市場已到達超買狀茶(Overbought),至此市場價格自然會回落調整。當價格低跌至30以下即被認為是超賣(Oversold),市價將出現反彈回升。
㈩ 如何編程從免費股票軟體中提取實時數據
自己寫程序的話,一種方法是從已提供的信息源,例如webservice獲取數據。還有種辦法就是去連接提供即時信息的網頁硬解析。
代碼舉例如下:
Created on Thu Jul 23 09:17:27 2015
@author: jet
"""
DAY_PRICE_COLS = ['date', 'open', 'high', 'close', 'low', 'volume',
'chg', '%chg', 'ma5', 'ma10', 'ma20',
'vma5', 'vma10', 'vma20', 'turnover']
DAY_PRICE_URL = '%sapi.finance.%s/%s/?code=%s&type=last'
INDEX_KEY = ['SH', 'SZ', 'HS300', 'SZ50', 'GEB', 'SMEB']
INDEX_LIST = {'SH': 'sh000001', '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/akmin?scode=%s&type=%s'
PAGE_TYPE = {'http': 'http://', 'ftp': 'ftp://'}
PAGE_DOMAIN = {'sina': 'sina.com.cn', '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'))