① 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的話百分之百用不了。
代碼的思路是,每個月底進行調倉,選出市值最小的股票交易,去掉ST/*ST/停牌/漲停的股票,然後選擇最小市值的10隻,基準是創業板綜指,看看結果。
python構建數據獲取方法是:
這里使用為了接下來的操作需要將一定歷史范圍的股票數據下載下來,這里下載起始時間為20160101,截至時間為運行代碼的時間范圍的歷史日線數據。
這里以tushare為例, tushare獲取歷史數據有兩種方式。
第一種是以迭代歷史交易日的方式獲取所有歷史數據,假設獲取三年的歷史數據,一年一般220個交易日左右,那麼3年需要請求660多次左右,如果以這種方式的話,就下載數據的時間只需要1分鍾多點的樣子。
第二種是以迭代所有股票代碼的方式獲取所有歷史數據,股票數量有大概3800多個,需要請求3800多次,但是在積分有限的情況下一分鍾最多請求500次,也就意味著僅下載數據的時間至少需要大概8分鍾時間。
理論上,你獲取的歷史范圍超過17.3年,那麼使用第一種方式才比第二種方式快。
③ python中stock的用法
首先證券公司會提供一些API給你,使用的時tushare這個庫。
首先安裝tushare這個庫
pip install tushare
打開IDE,使用的時pycharm這個工具。
import tushare, time #導入tushare庫
data = tushare.get_realtime_quotes('600519') #獲取股票代碼為000581的股票信息
print(data)
④ 如何用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])
⑤ 報錯TypeError: 'NoneType' object is not subscriptable尋求解決辦法
該錯誤意味著您正在嘗試使用方括弧(例如 )訪問對象的元素,但該對象支持且不支持此操作。TypeError: 'NoneType' object is not subscriptableobject[index]None
在這種伍逗特定情況下,看起來函數正在返回而不是預期的數據框。這可能是由於Tushare API或網路連接出現問題。ts.get_hs300s()None
要修復此錯誤,您可以嘗試以下操作:
查看圖共享API文檔,以確保您正確使用該函數。get_hs300s()
檢查您的網路連接並確保其穩定可靠。
在互動式 Python shell 中使用該函數以查看它是否返回預期的數據框。ts.get_hs300s()
如果函數仍返回 ,請嘗試使用其他 API 或數據集來獲取所需的股票代碼。ts.get_hs300s()None
下面是如何修改代碼以處理返回的情況的示例:ts.get_hs300s()None
在這個例子中,我們在嘗試訪問它的「code」列之前檢查變數是否不是。如果數腔念賣據框是 ,我們通過高嘩列印消息來處理這種情況。這可以防止發生錯誤。hs300NoneNoneTypeError: 'NoneType' object is not subscriptable
回答不易望請採納
⑥ 如何選取過去每個月股票的市值 python
類似,可以修改一下
股票漲跌幅數據是量化投資學習的基本數據資料之一,下面以python代碼編程為工具,獲得所需要的歷史數據。主要步驟有:
(1) #按照市值從小到大的順序活得N支股票的代碼;
(2) #分別對這一百隻股票進行100支股票操作;
(3) #獲取從2016.05.01到2016.11.17的漲跌幅數據;
(4) #選取記錄大於40個的數據,去除次新股;
(5) #將文件名名為「股票代碼.csv」。
具體代碼如下:
# -*- coding: utf-8 -*-
"""
Created on Thu Nov 17 23:04:33 2016
獲取股票的歷史漲跌幅,並分別存為csv格式
@author: yehxqq151376026
"""
import numpy as np
import pandas as pd
#按照市值從小到大的順序活得100支股票的代碼
df = get_fundamentals(
query(fundamentals.eod_derivative_indicator.market_cap)
.order_by(fundamentals.eod_derivative_indicator.market_cap.asc())
.limit(100),'2016-11-17', '1y'
)
#分別對這一百隻股票進行100支股票操作
#獲取從2016.05.01到2016.11.17的漲跌幅數據
#選取記錄大於40個的數據,去除次新股
#將文件名名為「股票代碼.csv」
for stock in range(100):
priceChangeRate = get_price_change_rate(df['market_cap'].columns[stock], '20160501', '20161117')
if priceChangeRate is None:
openDays = 0
else:
openDays = len(priceChangeRate)
if openDays > 40:
tempPrice = priceChangeRate[39:(openDays - 1)]
for rate in range(len(tempPrice)):
tempPrice[rate] = "%.3f" %tempPrice[rate]
fileName = ''
fileName = fileName.join(df['market_cap'].columns[i].split('.')) + '.csv'
fileName
tempPrice.to_csv(fileName)
⑦ python用什麼方法或者庫可以拿到全部股票代碼
首先你需要知道哪個網站上有所有股票代碼,然後分析這個網站股票代碼的存放方式,再利用python寫一個爬蟲去爬取所有的股票代碼