Ⅰ 關於股票逐筆成交數據的小技巧
搭建逐筆成交資料庫並挖掘逐筆數據因子是獲取股票Alpha信息的有效途徑。在操作過程中,需先准備一台支持計算任務的電腦,並找到數據源。逐筆數據通常以交易日命名,包含數千個CSV文件,每個文件對應一個股票。數據量龐大,需要分塊處理,以避免內存不足。舉例,以平安銀行為例,一天的交易數據量可達近7千萬行,數據處理難度大。數據應分塊存儲,每個交易日的數據存為一個文件夾,內含若干數據塊,每塊約200萬行,以支持並行處理。Python+Pandas處理數據時,推薦使用feather文件格式,因其壓縮率高且讀取速度快。因子計算通常分為兩步:首先形成sub_factor,然後匯總為最終factor。此過程需將所有sub_factor並行計算,並邊計算邊保存。最終匯總所有sub_factor,完成因子計算。此方法提高了因子計算的效率和可行性。
Ⅱ [銀華富有基金]python同花順股票及時數據!求教python量化買賣時用到的股票天天逐筆買賣數據若何爬取
在Python量化交易中,爬取股票每天的逐筆交易數據,可以通過以下步驟實現:
選擇數據來源:
- 同花順API:同花順提供了API介面,可以獲取實時和歷史股票數據。但需要注意的是,這些API可能需要付費,並且有一定的使用限制。
- 網頁爬蟲:如果對API的使用有限制或成本考慮,可以通過網頁爬蟲技術從同花順的網頁上抓取數據。但這種方法可能涉及法律問題(如違反網站的使用條款),並且數據格式和位置可能隨時發生變化。
使用API獲取數據:
- 注冊與認證:在同花順官網或相關平台注冊賬號,並申請API許可權。
- 調用API:根據同花順提供的API文檔,編寫Python代碼調用相應的介面,獲取逐筆交易數據。
- 數據解析:API返回的數據通常是JSON或XML格式,需要使用相應的庫(如json或xml.etree.ElementTree)進行解析。
使用網頁爬蟲獲取數據:
- 分析網頁結構:使用瀏覽器的開發者工具(如Chrome的DevTools)分析同花順網頁上逐筆交易數據的HTML結構。
- 編寫爬蟲代碼:使用Python的requests庫發送HTTP請求,獲取網頁內容;使用BeautifulSoup或lxml等庫解析HTML,提取所需數據。
- 處理反爬蟲機制:同花順等網站可能有反爬蟲機制,如驗證碼驗證、IP地址封鎖等。需要採取相應措施(如使用代理IP、增加請求間隔等)來規避這些機制。
數據保存與處理:
- 保存數據:將抓取到的數據保存到本地文件(如CSV、Excel等)或資料庫中,以便後續分析和處理。
- 數據清洗:對抓取到的數據進行清洗和整理,去除無效或重復數據。
- 數據分析:使用Python的數據分析庫(如pandas、numpy等)對清洗後的數據進行統計分析、可視化等操作。
注意事項:
- 合法合規:在抓取數據時,務必遵守相關法律法規和網站的使用條款。
- 數據質量:網頁爬蟲獲取的數據可能不如API穩定可靠,需要定期檢查和驗證數據的准確性。
- 性能優化:對於大規模的數據抓取任務,需要考慮如何提高爬蟲的效率和穩定性。
Ⅲ 如何下載股票歷史成交數據到Excel或txt
以華中智能股票軟體為例:(以Think pad X13 銳龍版筆記本電腦,Windows 10 操作為例)首先切換到要下載數據的股票K線形態,按「F1」進入「日線某某股票歷史成交」,點擊滑鼠右鍵->數據導出->導出所有數據->在「請選擇導出的類型」中選擇excel或txt
補充資料:
如何獲取所有股票歷史數據:
如果要對股市進行分析,首先就要獲取所有股票的歷史數據,只有通過股票的歷史數據,我們才能分析出股市的規律。
(以Think pad X13 銳龍版筆記本電腦,Windows 10 操作為例)
一、工具/原料
1、EXCEL2007或者以上版本,不能使用WPS
2、電腦1g內存1核處理器及以上配置
3、擁有較強邏輯分析能力以及少量智慧及以上的大腦一顆
方法/步驟:
第一步,獲取股票代碼,復制其中一部分到第一個工作表A4到A127,然後通過程序把每一個代碼寫入到不同的工作表A2位置,並對該工作表以該股票代碼命名。程序如下:
Sub 工作表命名()
For i = 4 To 127
Sheets(i).Range("a2") = "'" & Sheets(1).Range("a" & i)
Next i
For i = 4 To Sheets.Count
Sheets(i).Name = Sheets(i).Range("a2").Value
Next
End Sub
第二步,獲取股票歷史數據。代碼如下:
Private Function GetSource(sURL As String) As String
Dim oXHTTP As Object
Set oXHTTP = CreateObject("MSXML2.XMLHTTP")
oXHTTP.Open "GET", sURL, False
oXHTTP.Send
GetSource = oXHTTP.responsetext
Set oXHTTP = Nothing
End Function
Sub 歷史數據()
Dim objXML As Object
Dim txtContent As String
Dim i As Integer
Dim strCode As String
Dim gp As String
Dim kaishihang
Dim arr, arr1, arr2, arr3, arr4, arr5, arr6, arr7, arr8, arr9, arr10, arr11
On Error Resume Next
EndRow = Range("a65536").End(xlUp).Row
startRow = 4
If startRow <= EndRow Then
Range(Cells(startRow, 1), Cells(EndRow, 11)).Value = ""
Else
Exit Sub
End If
Set objXML = CreateObject("Microsoft.XMLHTTP")
gp = [A2]
For h = 1 To 4
For m = 1 To 4
kaishihang = [A65535].End(xlUp).Row
nian = Replace(Str(Year(Now) + 1 - h), " ", "")
ji = Replace(Str(4 + 1 - m), " ", "")
With objXML
.Open "GET", "http://quotes.money.163.com/trade/lsjyj_" + gp + ".html?year=" + nian + "&season=" + ji + "", False
.Send
If objXML.Status = 200 Then
txtContent = .responsetext
arr = Split(txtContent, "'>
") For i = 1 To UBound(arr) arr1 = Split(arr(i), " | Cells(i + kaishihang, 1) = Right(Left(arr1(0), 10), 10) arr2 = Split(arr1(1), Chr(60)) Cells(i + kaishihang, 2) = Mid(arr2(0), InStr(arr2(0), ">") + 1) arr3 = Split(arr1(2), Chr(60)) Cells(i + kaishihang, 3) = Mid(arr3(0), InStr(arr3(0), ">") + 1) arr4 = Split(arr1(3), Chr(60)) Cells(i + kaishihang, 4) = Mid(arr4(0), InStr(arr4(0), ">") + 1) arr5 = Split(arr1(4), Chr(60)) Cells(i + kaishihang, 5) = Mid(arr5(0), InStr(arr5(0), ">") + 1) arr6 = Split(arr1(5), Chr(60)) Cells(i + kaishihang, 6) = Mid(arr6(0), InStr(arr6(0), ">") + 1) arr7 = Split(arr1(6), Chr(60)) Cells(i + kaishihang, 7) = Mid(arr7(0), InStr(arr7(0), ">") + 1) arr8 = Split(arr1(7), Chr(60)) Cells(i + kaishihang, 8) = Mid(arr8(0), InStr(arr8(0), ">") + 1) arr9 = Split(arr1(8), Chr(60)) Cells(i + kaishihang, 9) = Mid(arr9(0), InStr(arr9(0), ">") + 1) arr10 = Split(arr1(9), Chr(60)) Cells(i + kaishihang, 10) = Mid(arr10(0), InStr(arr10(0), ">") + 1) arr11 = Split(arr1(10), Chr(60)) Cells(i + kaishihang, 11) = Mid(arr11(0), InStr(arr11(0), ">") + 1) Next i End If End With Next m Next h Set objXML = Nothing End Sub 第三步,獲取上證歷史數據,並獲取所有股票的歷史數據。程序如下: Sub 所有股票歷史數據獲取() Application.ScreenUpdating = False Dim s As String, gp As String, nian As String, ji As String, s1 As String Dim arr, arr1, arr2, arr3, arr4, arr5, arr6, arr7, arr8, arr9 Dim i, h As Long Dim kaishihang Dim LastRow As Long, r As Long On Error Resume Next EndRow = Sheet2.Range("a65536").End(xlUp).Row startRow = 4 If startRow <= EndRow Then Sheet2.Range(Sheet2.Cells(startRow, 1), Sheet2.Cells(EndRow, 9)).Value = "" Else Exit Sub End If For h = 1 To 5 For m = 1 To 4 kaishihang = Sheet2.[A65535].End(xlUp).Row nian = Replace(Str(Year(Now) + 1 - h), " ", "") ji = Replace(Str(4 + 1 - m), " ", "") s1 = "http://quotes.money.163.com/trade/lsjysj_shu_000001.html?year=" + nian + "&season=" + ji + "" s = GetSource(s1) arr = Split(s, "'> | ") For i = 1 To UBound(arr) arr1 = Split(arr(i), " | Sheet2.Cells(i + kaishihang, 1) = Right(Left(arr1(0), 4), 4) & "-" & Right(Left(arr1(0), 6), 2) & "-" & Right(Left(arr1(0), 10), 2) arr2 = Split(arr1(1), Chr(60)) Sheet2.Cells(i + kaishihang, 2) = Mid(arr2(0), InStr(arr2(0), ">") + 1) arr3 = Split(arr1(2), Chr(60)) Sheet2.Cells(i + kaishihang, 3) = Mid(arr3(0), InStr(arr3(0), ">") + 1) arr4 = Split(arr1(3), Chr(60)) Sheet2.Cells(i + kaishihang, 4) = Mid(arr4(0), InStr(arr4(0), ">") + 1) arr5 = Split(arr1(4), Chr(60)) Sheet2.Cells(i + kaishihang, 5) = Mid(arr5(0), InStr(arr5(0), ">") + 1) arr6 = Split(arr1(5), Chr(60)) Sheet2.Cells(i + kaishihang, 6) = Mid(arr6(0), InStr(arr6(0), ">") + 1) arr7 = Split(arr1(6), Chr(60)) Sheet2.Cells(i + kaishihang, 7) = Mid(arr7(0), InStr(arr7(0), ">") + 1) arr8 = Split(arr1(7), Chr(60)) Sheet2.Cells(i + kaishihang, 8) = Mid(arr8(0), InStr(arr8(0), ">") + 1) arr9 = Split(arr1(8), Chr(60)) Sheet2.Cells(i + kaishihang, 9) = Mid(arr9(0), InStr(arr9(0), ">") + 1) Next i Next m Next h Application.ScreenUpdating = True n = Worksheets.Count For i = 4 To n Worksheets(i).Activate 歷史數據 Next End Sub 第四步,保存工作簿,並對該工作簿命名為1,然後復制該工作簿27份,把所有股票代碼寫入每一個工作簿第一個工作表的A3到A127列。然後根據第一步對工作簿內的工作表命名,並在每一個工作表A2單元格內寫入股票代碼。 第五步,把這些工作簿存放到炒股文件夾下的資料庫文件下。然後在炒股文件夾下新建一個工作簿,命名為「一鍵更新表格」,寫入如下代碼: Sub 所有股票歷史數據更新() Dim wb As Workbook For i = 1 To 27 Set wb = Workbooks.Open(ThisWorkbook.Path & "資料庫" & i & "".xlsb"") Application.Run ""'"" & wb.Path & """" & i & "".xlsb'!所有股票歷史數據獲取"" wb.Save wb.Close Next i End sub 當啟動這一段代碼以後,程序會自動一個一個的打開對應的工作簿然後獲取裡面所有股票的歷史數據,存放在對應的工作表當中。 第六步,對相應的程序添加按鈕,這樣,我們在啟動對應程序時,只需要點一下對應的按鈕就可以實現了。這樣,我們通過多個工作簿就實現了獲取所有股票歷史數據的方法。而後面,我們只需要通過獲取對應股票每一天的歷史數據,我們就能夠在任意一天很快速的能夠擁有所有股票的歷史數據了。 注意事項 1、在後續需要對這些數據進行分析,裡面會加入很多計算,所以啟動所有歷史數據更新時,我們應該要關閉自動更新。 2、因為歷史數據很大,所以這里只獲取四年的數據,想要獲取更多數據,可以更改程序裡面 「For h = 1 To 5」的那個5即可。 3、歷史數據的獲取需要較長的時間,要提前做好准備。 4、如果你想要弄清楚用EXCEL建立炒股系統的整套方法,請看後續內容。"
Ⅳ 關於股票逐筆成交數據的小技巧
股票逐筆成交數據蘊含豐富的投資信息,但挖掘這些信息並非易事。本文旨在教你如何構建逐筆成交資料庫並掌握數據挖掘技巧。
首先,你需要一台配置良好的電腦,同時找到可靠的數據源。逐筆數據通常以壓縮包形式存在,包含數千個CSV文件,每隻股票對應一個文件。例如,平安銀行(000001)2023年9月22日的數據,單日就有50,000多行,數據密集,處理難度大。
處理這類大數據的關鍵在於分塊。逐筆數據計算因子,特別是日頻因子(解釋股票收益的橫截面),通常只需要單個交易日的數據。因此,應將一個交易日的數據分為小文件,每個約200萬行,便於電腦並行處理。使用Python的Pandas和feather格式,以及joblib的Parallel並行計算,可以提高效率。
因子計算通常分為兩步:第一步,基於單日數據形成sub_factor;第二步,匯總過去20個交易日的數據。建議在計算sub_factor時進行並行處理,實時保存結果,最後匯總得到最終的factor。這樣的方法有助於節省計算資源,提高處理速度。
與股票逐筆成交資料庫相關的資料
熱點內容
股票走勢趨勢
發布:2025-05-28 23:40:31
瀏覽:294
|