『壹』 如何用python獲取股票數據
在Python的QSTK中,是通過s_datapath變數,定義相應股票數據所在的文件夾。一般可以通過QSDATA這個環境變數來設置對應的數據文件夾。具體的股票數據來源,例如滬深、港股等市場,你可以使用免費的WDZ程序輸出相應日線、5分鍾數據到s_datapath變數所指定的文件夾中。然後可使用Python的QSTK中,qstkutil.DataAccess進行數據訪問。
『貳』 股票池如何用python構建
股票池用python構建的方法是:使用第三方平台,目前可以使用的是聚寬,對比一下聚寬、優礦、大寬網(已經倒閉了),都大同小異,選哪個都一樣。
雖然這些平台都大同小異,但是代碼可不能簡單復制粘貼,因為底層函數庫是不一樣的,有可能在別的平台根本用不了某個函數,並且簡單復制到自己電腦中的python的話百分之百用不了。
代碼的思路是,每個月底進行調倉,選出市值最小的股票交易,去掉ST/*ST/停牌/漲停的股票,然後選擇最小市值的10隻,基準是創業板綜指,看看結果。
python構建數據獲取方法是:
這里使用為了接下來的操作需要將一定歷史范圍的股票數據下載下來,這里下載起始時間為20160101,截至時間為運行代碼的時間范圍的歷史日線數據。
這里以tushare為例, tushare獲取歷史數據有兩種方式。
第一種是以迭代歷史交易日的方式獲取所有歷史數據,假設獲取三年的歷史數據,一年一般220個交易日左右,那麼3年需要請求660多次左右,如果以這種方式的話,就下載數據的時間只需要1分鍾多點的樣子。
第二種是以迭代所有股票代碼的方式獲取所有歷史數據,股票數量有大概3800多個,需要請求3800多次,但是在積分有限的情況下一分鍾最多請求500次,也就意味著僅下載數據的時間至少需要大概8分鍾時間。
理論上,你獲取的歷史范圍超過17.3年,那麼使用第一種方式才比第二種方式快。
『叄』 python 讀取股票代碼 怎麼正常顯示
簡單說一下,文件的詳細信息你可以從os.stat中獲取,具體要做成什麼樣子,自己格式化一下字元串就好了,這里獲取的是所有者名稱、創建時間、最後修改時間:
import os,sys,pwd
file = sys.argv[1]
stat = os.stat(file)
uid = stat.st_uid
print pwd.getpwuid(uid)[0] , stat.st_ctime , stat.st_mtime
『肆』 如何用python代碼判斷一段范圍內股票最高點
Copyright © 1999-2020, CSDN.NET, All Rights Reserved
登錄
python+聚寬 統計A股市場個股在某時間段的最高價、最低價及其時間 原創
2019-10-12 09:20:50
開拖拉機的大寶
碼齡4年
關注
使用工具pycharm + 聚寬數據源,統計A股市場個股在某時間段的最高價、最低價及其時間,並列印excel表格輸出
from jqdatasdk import *
import pandas as pd
import logging
import sys
logger = logging.getLogger("logger")
logger.setLevel(logging.INFO)
# 聚寬數據賬戶名和密碼設置
auth('username','password')
#獲取A股列表,包括代號,名稱,上市退市時間等。
security = get_all_securities(types=[], date=None)
pd2 = get_all_securities(['stock'])
# 獲取股票代號
stocks = list(get_all_securities(['stock']).index)
# 獲取股票名稱
stocknames = pd2['display_name']
start_date = -01-01'
end_date = -12-31'
def get_stocks_high_low(start_date,end_date):
# 新建表,表頭列
# 為:"idx","stockcode","stockname","maxvalue","maxtime","lowvalue","lowtime"
result = pd.DataFrame(columns=["idx", "stockcode", "stockname", "maxvalue", "maxtime", "lowvalue", "lowtime"])
for i in range(0,stocks.__len__()-1):
pd01 = get_price(stocks[i], start_date, end_date, frequency='daily',
fields=None, skip_paused=False,fq='pre', count=None)
result=result.append(pd.DataFrame({'idx':[i],'stockcode':[stocks[i]],'stockname':
[stocknames[i]],'maxvalue':[pd01['high'].max()],'maxtime':
[pd01['high'].idxmax()],'lowvalue': [pd01['low'].min()], 'lowtime':
[pd01['low'].idxmin()]}),ignore_index=True)
result.to_csv("stock_max_min.csv",encoding = 'utf-8', index = True)
logger.warning("執行完畢!
『伍』 python 設計一個名為Stock的類來表示一個公司的股票
class Stock():
def __init__(self):
self.__no = ""
self.__name = ""
self.previousClosingPrice = 0
self.currentPrice = 0
def creatStock(self,stockInfo):
self.__no = stockInfo[0]
self.__name = stockInfo[1]
self.previousClosingPrice = stockInfo[2]
self.currentPrice = stockInfo[3]
def getStockName(self):
return(self.__name)
def getStockNo(self):
return(self.__no)
def setPreviousClosingPrice(self,price):
self.previousClosingPrice = price
def getPreviousClosingPrice(self):
return(self.previousClosingPrice)
def setCurrentPrice(self,price):
self.currentPrice = price
def getCurrentPrice(self):
return(self.currentPrice)
def getChangePercent(self):
return((self.currentPrice - self.previousClosingPrice)/self.currentPrice)
stock = Stock()
stock.creatStock(["601318","中國平安",63.21,64.39])
print(stock.getStockNo())
print(stock.getStockName())
print(stock.getCurrentPrice())
print(stock.getPreviousClosingPrice())
『陸』 python用什麼方法或者庫可以拿到全部股票代碼
首先你需要知道哪個網站上有所有股票代碼,然後分析這個網站股票代碼的存放方式,再利用python寫一個爬蟲去爬取所有的股票代碼
『柒』 怎樣用python處理股票
用Python處理股票需要獲取股票數據,以國內股票數據為例,可以安裝Python的第三方庫:tushare;一個國內股票數據獲取包。可以在網路中搜索「Python tushare」來查詢相關資料,或者在tushare的官網上查詢說明文檔。
『捌』 如何用python 爬蟲抓取金融數據
獲取數據是數據分析中必不可少的一部分,而網路爬蟲是是獲取數據的一個重要渠道之一。鑒於此,我拾起了Python這把利器,開啟了網路爬蟲之路。
本篇使用的版本為python3.5,意在抓取證券之星上當天所有A股數據。程序主要分為三個部分:網頁源碼的獲取、所需內容的提取、所得結果的整理。
一、網頁源碼的獲取
很多人喜歡用python爬蟲的原因之一就是它容易上手。只需以下幾行代碼既可抓取大部分網頁的源碼。
為了減少干擾,我先用正則表達式從整個頁面源碼中匹配出以上的主體部分,然後從主體部分中匹配出每隻股票的信息。代碼如下。
pattern=re.compile('<tbody[sS]*</tbody>')
body=re.findall(pattern,str(content)) #匹配<tbody和</tbody>之間的所有代碼pattern=re.compile('>(.*?)<')
stock_page=re.findall(pattern,body[0]) #匹配>和<之間的所有信息
其中compile方法為編譯匹配模式,findall方法用此匹配模式去匹配出所需信息,並以列表的方式返回。正則表達式的語法還挺多的,下面我只羅列所用到符號的含義。
語法 說明
. 匹配任意除換行符「 」外的字元
* 匹配前一個字元0次或無限次
? 匹配前一個字元0次或一次
s 空白字元:[<空格> fv]
S 非空白字元:[^s]
[...] 字元集,對應的位置可以是字元集中任意字元
(...) 被括起來的表達式將作為分組,裡面一般為我們所需提取的內容
正則表達式的語法挺多的,也許有大牛隻要一句正則表達式就可提取我想提取的內容。在提取股票主體部分代碼時發現有人用xpath表達式提取顯得更簡潔一些,看來頁面解析也有很長的一段路要走。
三、所得結果的整理
通過非貪婪模式(.*?)匹配>和<之間的所有數據,會匹配出一些空白字元出來,所以我們採用如下代碼把空白字元移除。
stock_last=stock_total[:] #stock_total:匹配出的股票數據for data in stock_total: #stock_last:整理後的股票數據
if data=='':
stock_last.remove('')
最後,我們可以列印幾列數據看下效果,代碼如下
print('代碼',' ','簡稱',' ',' ','最新價',' ','漲跌幅',' ','漲跌額',' ','5分鍾漲幅')for i in range(0,len(stock_last),13): #網頁總共有13列數據
print(stock_last[i],' ',stock_last[i+1],' ',' ',stock_last[i+2],' ',' ',stock_last[i+3],' ',' ',stock_last[i+4],' ',' ',stock_last[i+5])
『玖』 怎麼學python爬取財經信息
本程序使用Python 2.7.6編寫,擴展了Python自帶的HTMLParser,自動根據預設的股票代碼列表,從Yahoo Finance抓取列表中的數據日期、股票名稱、實時報價、當日變化率、當日最低價、當日最高價。
由於Yahoo Finance的股票頁面中的數值都有相應id。
例如納斯達克100指數ETF(QQQ)
其中實時報價的HTML標記為
[html]view plain
<spanid="yfs_l84_qqq">87.49</span>
<spanid="yfs_l84_spy">187.25</span>
05/05/(IBB)233.281.85%225.34233.28
05/05/(SOCL)17.480.17%17.1217.53
05/05/(PNQI)62.610.35%61.4662.74
05/05/2014xsdSPDRS&PSemiconctorETF(XSD)67.150.12%66.2067.41
05/05/2014itaiSharesUSAerospace&Defense(ITA)110.341.15%108.62110.56
05/05/2014iaiiSharesUSBroker-Dealers(IAI)37.42-0.21%36.8637.42
05/05/(VBK)119.97-0.03%118.37120.09
05/05/2014qqqPowerSharesQQQ(QQQ)87.950.53%86.7687.97
05/05/2014ewiiSharesMSCIItalyCapped(EWI)17.86-0.56%17.6517.89
05/05/(DFE)62.33-0.11%61.9462.39
05/05/(PBD)13.030.00%12.9713.05
05/05/(EIRL)38.52-0.16%38.3938.60
而標普500指數ETF(SPY)
其中實時報價的HTML標記為
[html]view plain
因此本數據抓取程序根據相應的id字元串來查找數據。具體來說就是先繼承HTMLParser,然後在自定義的子類中重載handle_data(self, data)方法,查找包含相應id字元串(例如實時報價的id字元串為"yfs_l84_"+股票代碼)的HTML標記,並輸出這個HTML標記中的數據(例如qqq的<span id="yfs_l84_qqq">87.49</span>,其中的數據87.49就是實時報價。)
樣本輸出:
數據依次是
數據日期 股票代碼 股票名稱 實時報價 日變化率 日最低價 日最高價
[python]view plain
『拾』 怎麼用python計算股票
作為一個python新手,在學習中遇到很多問題,要善於運用各種方法。今天,在學習中,碰到了如何通過收盤價計算股票的漲跌幅。
第一種:
讀取數據並建立函數:
import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import spline
from pylab import *
import pandas as pd
from pandas import Series
a=pd.read_csv('d:///1.csv',sep=',')#文件位置
t=a['close']
def f(t):
s=[]
for i in range(1,len(t)):
if i==1:
continue
else:
s.append((t[i]-t[i-1])/t[i]*100)
print s
plot(s)
plt.show()
f(t)
第二種:
利用pandas裡面的方法:
import pandas as pd
a=pd.read_csv('d:///1.csv')
rets = a['close'].pct_change() * 100
print rets
第三種:
close=a['close']
rets=close/close.shift(1)-1
print rets
總結:python是一種非常好的編程語言,一般而言,我們可以運用構建相關函數來實現自己的思想,但是,眾所周知,python中裡面的有很多科學計算包,裡面有很多方法可以快速解決計算的需要,如上面提到的pandas中的pct_change()。因此在平時的使用中應當學會尋找更好的方法,提高運算速度。