.jpg)
目前市场上有很多股票行情交易软件,各种软件提供了丰富的分析和展示功能,而且基本上是免费的。但这些数据都是在线的、无法统一地下载到本地进行分析,于是上网找了些资料,有的是将程序到新浪搜狐的财经频道或其他财经类网站抓取并分析网页,这种方法操作性不强而且准确率较低,遇到广告或网页变动时风险较大。于是找到了Sina股票数据接口,这个接口是通过在IE端输入""+相应股票代码网站返回一个文件形式的数据,也可以通过JS获取该文件中的变量得到想要的数据字符串。
以大秦铁路(股票代码:601006)为例,如果要获取它的最新行情,只需访问新浪的股票数据接口:这个url会返回一串文本,例如:
var hq_str_sh601006="大秦铁路, 27.55, 27.25, 26.91, 27.55, 26.20, 26.91, 26.92,
22114263, 589824680, 4695, 26.91, 57590, 26.90, 14700, 26.89, 14300,
26.88, 15100, 26.87, 3100, 26.92, 8900, 26.93, 14230, 26.94, 25150, 26.95, 15220, 26.96, 2008-01-11, 15:05:32";
这个字符串由许多数据拼接在一起,不同含义的数据用逗号隔开了,按照程序员的思路,顺序号从0开始。
0:”大秦铁路”,股票名字;
1:”27.55″,今日开盘价;
2:”27.25″,昨日收盘价;
3:”26.91″,当前价格;
4:”27.55″,今日最高价;
5:”26.20″,今日最低价;
6:”26.91″,竞买价,即“买一”报价;
7:”26.92″,竞卖价,即“卖一”报价;
8:”22114263″,成交的股票数,由于股票交易以一百股为基本单位,所以在使用时,通常把该值除以一百;
9:”589824680″,成交金额,单位为“元”,为了一目了然,通常以“万元”为成交金额的单位,所以通常把该值除以一万;
10:”4695″,“买一”申请4695股,即47手;
11:”26.91″,“买一”报价;
12:”57590″,“买二”
13:”26.90″,“买二”
14:”14700″,“买三”
15:”26.89″,“买三”
16:”14300″,“买四”
17:”26.88″,“买四”
18:”15100″,“买五”
19:”26.87″,“买五”
20:”3100″,“卖一”申报3100股,即31手;
21:”26.92″,“卖一”报价
(22, 23),(24, 25),(26,27),(28, 29)分别为“卖二”至“卖四的情况”
30:”2008-01-11″,日期;
31:”15:05:32″,时间;
相应地,也可以获得深市相关股票信息,但是这种方法的弊病是只能获得最新的或者是当天的股票数据,无法将历史数据导入到数据库,当然,你也可以以某一天为起始点自己重新创造历史数据。所以继续寻找其他网站接口,终于找到了雅虎财经网站,它提供的接口可以直接把股票历史数据导成Excel,真实太方便了!直接在浏览器地址中数据网址即可股票代码,但是如果手动输入再逐一下载保存简直是太麻烦了,光上证股票就800多个,估计刚手动下载完就又开盘了还得重新下载。所以我的思路是,1、利用多线程方法下载股票文件。2、将这些文件统一导入数据库。
1.1文件下载类:
import java.io.*;
import java.net.*;
import java.util.List;
import fatowen.stocksystem.sysconfig.data.DownLoadVO;
public class HttpDownFile{
private static int BUFFER_SIZE= 8096;
/**根据URL下载文件并保存
*@param destUrl String
*@param fileName String
*@throws Exception
*/
public void saveToFile(String destUrl, String fileName) throws IOException{
FileOutputStream fos= null;
BufferedInputStream bis= null;
HttpURLConnection httpUrl= null;
URL url= null;
byte[] buf= new byte[BUFFER_SIZE];
int size= 0;
url= new URL(destUrl);
httpUrl=(HttpURLConnection) url.openConnection();
httpUrl.connect();
bis= new BufferedInputStream(httpUrl.getInputStream());
fos= new FileOutputStream(fileName);
while((size= bis.read(buf))!=-1)
fos.write(buf, 0, size);
fos.close();
bis.close();
httpUrl.disconnect();
}
}
1.2多线程实现下载类:
import java.util.ArrayList;
import java.util.List;
public class HisDataAddThread extends Thread{
boolean runFlag= true;
List myParamList= null;
String downLoadData="";
String baseUrl="";
String result="";
String savePath="";
public HisDataAddThread(List paramList,String savePath){
this.myParamList= paramList;
this.savePath= savePath;
}
public void run(){
while(runFlag){
downLoadData= PublicDataUtil.getDownLoadData(myParamList);
if(!Lib.isEmpty(downLoadData)){
HttpDownFile oInstance= new HttpDownFile();
try{
oInstance.saveToFile(baseUrl+ downLoadData, savePath+ downLoadData+".csv");
}catch(Exception err){
System.out.println(err.toString());
}
}else{
runFlag= false;
}
try{
Thread.sleep(1000);
} catch(InterruptedException e){
e.printStackTrace();
}
}
}
public List getFailureList(){
return failureList;
}
public void setFailureList(List failureList){
this.failureList= failureList;
}
public List getSuccessList(){
return successList;
}
public void setSuccessList(List successList){
this.successList= successList;
}
}
2.将下载完的文件统一保存到数据库工具类
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class CSVUtitl{
private BufferedReader bufferedreader= null;
private List list= new ArrayList();
public CSVUtitl(){
}
public CSVUtitl(String filename) throws IOException{
bufferedreader= new BufferedReader(new FileReader(filename));
String stemp;
while((stemp= bufferedreader.readLine())!= null){
list.add(stemp);
}
}
public List getList() throws IOException{
return list;
}
//得到csv文件的行数
public int getRowNum(){
return list.size();
}
//得到csv文件的列数
public int getColNum(){
if(!list.toString().equals("[]")){
//csv文件中,每列之间的是用','来分隔的
if(list.get(0).toString().contains(",")){
return list.get(0).toString().split(",").length;
}else if(list.get(0).toString().trim().length()!= 0){
return 1;
}else{
return 0;
}
}else{
return 0;
}
}
//取得指定行的值
public String getRow(int index){
if(this.list.size()!= 0)
return(String) list.get(index);
else
return null;
}
//取得指定列的值
public String getCol(int index){
if(this.getColNum()== 0){
return null;
}
StringBuffer scol= new StringBuffer();
String temp= null;
int colnum= this.getColNum();
if(colnum> 1){
for(Iterator it= list.iterator(); it.hasNext();){
temp= it.next().toString();
scol= scol.append(temp.split(",")[index]+",");
}
}else{
for(Iterator it= list.iterator(); it.hasNext();){
temp= it.next().toString();
scol= scol.append(temp+",");
}
}
String str=new String(scol.toString());
str= str.substring(0, str.length()- 1);
return str;
}
//取得指定行,指定列的值
public String getString(int row, int col){
String temp= null;
int colnum= this.getColNum();
if(colnum> 1){
temp= list.get(row).toString().split(",")[col];
}else if(colnum== 1){
temp= list.get(row).toString();
}else{
temp= null;
}
return temp;
}
public void CsvClose() throws IOException{
this.bufferedreader.close();
}
public void run(String filename) throws IOException{
CSVUtitl cu= new CSVUtitl(filename);
for(int i=0;i<cu.getRowNum();i++){
String SSCCTag= formatData(cu.getString(i,1));//得到第i行.第一列的数据.
String SiteName= formatData(cu.getString(i,2));//得到第i行.第二列的数据.
String StationId= formatData(cu.getString(i,3));
//将数据保存到数据库中
......
......
......
}
cu.CsvClose();
}
public String formatData(String baseData){
String result= null;
if(!"".equals(baseData)&& baseData!= null){
if(baseData.length()> 1){
result= baseData.substring(1,baseData.length());
result= result.substring(0, result.length()-1);
}else{
result= baseData;
}
}else{
result="";
}
return result.trim();
}
public static void main(String[] args) throws IOException{
CSVUtitl test= new CSVUtitl();
try{
File path= new File("e:\\data");
File[] f= path.listFiles();
List l= new ArrayList();
for(int i=0;i<f.length;i++){
if(f[i].getName().endsWith(".csv"))
l.add(f[i]); www.2cto.com
}
Iterator it= l.iterator();
while(it.hasNext()){
File ff=(File)it.next();
test.run(path.toString()+File.separator+ff.getName());
}
}catch(Exception e){
}
}
}
1.网站上显示的数据来自上海和深圳证券交易所。
2.每个证券公司都有你所说的中国股市的行情数据,和他们公司各自所有客户的交易持仓数据。注意他们有自己的席位号。
3.上海、深圳证券交易所分别开发了level2的高频明细行情数据,通过通达信、大智慧、指南针这样的信息服务公司销售。
4.全部股市的投资者持仓数据包括股票,在证券登记公司两个分公司。这个交易所也没有。
PS:你需要复合股票信息公开披露的权限。这个权限你很难拿到。必须已公司形式取得。如果你用黑客形式,那么很快被抓。
量化交易,借助数学模型、统计学方法及计算机技术辅助决策,其核心在于分析与预测市场数据,制定交易策略。获取与处理数据在量化交易中至关重要。本文探讨数据来源与处理方法,阐述如何有效利用数据提升交易效益。
量化交易强调自动化决策,通过智能系统执行交易策略,减少情绪波动影响。其优势包括系统化分析、高效决策、精准执行与风险控制,以及策略优化。
应用范围广泛,量化交易面向各类投资者,提供科学、高效交易方式。然而,进行量化交易时需充分评估风险,检验策略,以避免风险。
数据来源包括交易所数据、第三方服务商数据、互联网数据及私有数据。交易所提供实时行情、历史数据等,第三方服务商则整合、加工数据,提供标准化接口。互联网数据通过爬虫抓取财经信息,私有数据由团队或机构拥有,提供独特竞争优势。
数据处理包括清洗、整合、转换、标准化、特征提取与选择,构建数据模型。数据清洗剔除无效信息,标准化消除量纲差异,特征选择提高预测精度。构建模型分析市场走势,预测价格变化。
处理数据时需关注数据质量、数据安全与隐私保护,以及模型验证与优化。确保数据来源可靠、准确,遵守法律法规,保护数据安全。通过回测与交叉验证优化模型,提高预测准确性。
综上所述,量化交易依赖数据获取与高效处理,旨在提升决策科学性与交易效益。在应用过程中,需谨慎管理风险,确保数据与模型的高质量与合法性。
OE交易所商家,赋能数字经济新生态,共筑价值增长之路 随着数字经济的蓬勃发展,加密货币及数字资产交易已成为全球金融领域的重要组成,在这一浪潮中,OE交易所凭借其技术创新、安全合规及用户友好的服务理念,迅速崛起为行业内的标杆平台,而作为生态系统的核心参与者,OE交
狗狗币在沙特能用吗?知乎上的答案与实际情况解析 近年来,加密货币的普及让狗狗币(DOGE)成为全球投资者关注的焦点,而沙特阿拉伯作为中东重要经济体,其加密货币政策也备受关注,在知乎等平台上,“狗狗币在沙特能用吗”这一问题频繁出现,答案并非简单的“能”或“不能”
Uniswap交易所平台币UNI下载指南,开启去中心化交易新体验 在去中心化金融(DeFi)浪潮中,Uniswap作为全球领先的DEX(去中心化交易所),其平台币UNI不仅是生态系统的核心权益凭证,更已成为投资者布局DeFi的重要标的,本文将详细介绍UNI币的获取方式、钱包下载与安全存储要
1.APU币价格:$0.00072 2.2024年11月01日 APU币今日行情走势0.0051币价格:0.0051 3.24H最高:0.0058 4.24H成交额:6609.15万 5.最大发行量:4206.9亿 6.24H换手:3.98% 7.24H最低:0.0050 8.24H成交量:129.75亿 9.当前发行量:3378.92亿 10.24H波幅:17.3% 11.历史最高:
亿联欧派衣柜官网首页,开启定制家居的品质生活之旅 在当今追求个性化与品质生活的时代,家居空间已不仅是居住的载体,更是生活态度与审美品味的延伸,作为定制家居行业的领军品牌之一,亿联欧派衣柜以其卓越的设计理念、精湛的工艺技术和对用户需求的深刻洞察,打造出独具特色
一、非洲十大城市vs南美洲十大城市毫无疑问,排名第一的是开罗,拥有600万人口,GDP上千亿美元,唯一一个能进世界前100的非洲城市;排名第二的也不用怀疑,约翰内斯堡,南非的经济中心,一座充满生机和活力的城市,非洲少数几座能拿的出手的;第三名,也不用说,开普敦,贫穷
重磅登陆!Chia正式上线欧洲首个加密货币交易所,开启欧洲市场新篇章 在加密货币市场持续演变与扩张的浪潮中,一个备受瞩目的名字——Chia Network,再次传来重大利好,Chia(XCH)正式宣布上线欧洲领先的加密货币交易所之一,此举不仅标志着其全球化战略迈出了坚实的一步,也
欧亿交易所如何使用交易券 在数字资产交易中,交易券是欧亿交易所为用户提供的福利工具,能有效降低交易成本、提升交易体验,以下是欧亿交易所交易券的具体使用方法及注意事项: 获取交易券的途径 用户可通过多种渠道获取交易券: 活动奖励:参与交易所新用户注册、节日活动、
一、挖矿是什么游戏挖矿并不是一种游戏。挖矿是一种通过对特定数据或加密算法的反复计算来解出数字解决方案的过程,主要出现在数字资产领域,特别是在区块链技术中,例如比特币等加密货币的挖矿过程。它不是一种传统意义上的游戏,因为游戏通常具有娱乐性、规则性和竞技性,而
欧联交一所1.9版下载指南,安全获取与实用技巧全解析 在数字化办公和学习日益普及的今天,高效、便捷的工具软件成为提升生产力的重要助力。“欧联交一所”作为一款专注于文档处理、信息整合与协作交流的实用工具,凭借其简洁的操作界面和强大的功能适配性,受到了不少用户的好
狗狗币与Meme,谁更值得期待? 在加密货币的“狂野西部”,狗狗币(DOGE)和Meme币无疑是两大最具话题性的标签,前者凭借“狗狗”IP和马斯克的“带货”成为加密世界的“平民英雄”,后者则以层出不穷的社区狂欢和病毒式传播不断刷新市场认知,两者谁更有潜力?答案或许藏在基
一、环球币能提到火币交易所交易吗环球币不能提到火币交易所交易。环球币是中国骗子专门给自以为买了骗子们发行的数字货币就可以赚大钱的韭菜们而发行的,火币交易所是国外的骗子们开的交易所,所以不行!港交所披露易显示,港股主板上市公司桐成控股(3.08,0.00,0.00%)(01
以太坊矿工年薪揭秘,风光背后,挑战与变革并存 在加密货币的世界里,以太坊(Ethereum)作为第二大加密货币,其矿工群体一直是生态系统中不可或缺的一环,他们通过提供算力,维护网络安全,并处理交易,从而获得相应的奖励,而“以太坊矿工年薪”这一话题,也常常成为市场关
以太坊,区块链革新的先锋 在区块链技术的波澜壮阔的历史长河中,以太坊无疑是一颗耀眼的新星,它不仅仅是一个平台,更是一个革命性的创新,为去中心化应用(DApps)和智能合约提供了坚实的基础,这个引领时代潮流的技术是谁发明出来的呢?答案指向一位杰出的程序员、企业家以
一、冷钱包可以转到交易所吗不可以。冷钱包并不直接支持转账到交易所的功能,交易所需要与网络进行交互以完成转账操作,需要先将冷钱包中的数字资产转到支持转账到交易所的数字钱包中,再通过交易所的充值功能将数字资产充值到交易所账户,而无法通过冷钱包直接转到交易所。二
以太坊 My Wallet,您的数字资产守护者 在数字浪潮席卷全球的今天,以太坊(Ethereum)作为全球第二大加密货币平台,早已超越了单纯的“数字黄金”范畴,它是一个庞大的去中心化应用(DApps)生态系统,一个承载着无数创新和价值的数字世界,要真正踏入这个世界,一把安全可靠
OKX交易所能提现吗?全面解析提现规则、流程与注意事项 在加密货币交易领域,OKX(原OKEx)作为全球知名的数字资产交易平台,为用户提供了丰富的交易品种和功能服务,对于许多OKX用户而言,一个至关重要的问题是:“OKX交易所能提现吗?” 答案是肯定的,OKX交易所支持用户提现
O意交易所APP最新版2026,苹果手机用户专属下载安装指南与前沿功能解析 随着数字经济的蓬勃发展和加密资产交易需求的持续增长,专业的数字资产交易平台已成为投资者不可或缺的工具。O意交易所凭借其安全稳定、功能全面及用户体验优化等优势,在全球范围内积累了大量用户,备受
1.AVAIL币价格:$0.12 2.2024年11月07日 AVAIL币今日行情走势0.87币价格:0.87 3.24H最高:0.87 4.24H成交额:2731.74万 5.最大发行量:101.62亿 6.24H换手:1.7% 7.24H最低:0.78 8.24H成交量:3133.34万 9.当前发行量:101.62亿 10.24H波幅:11.65% 11.历史最高:1.7 12.
殴易平台app安卓最新版1.10上线,功能升级体验优化,暂无官方下载渠道需警惕 一款名为“殴易平台”的应用程序(app)在特定用户群体中引起了关注,其安卓最新版本1.10被提及,与许多新兴应用类似,殴易平台app”的官方下载渠道目前尚不明确,相关信息中多标注“暂无下载”,这