Ⅰ 关于股票逐笔成交数据的小技巧
搭建逐笔成交数据库并挖掘逐笔数据因子是获取股票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。这样的方法有助于节省计算资源,提高处理速度。
与股票逐笔成交数据库相关的资料
|