.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:你需要复合股票信息公开披露的权限。这个权限你很难拿到。必须已公司形式取得。如果你用黑客形式,那么很快被抓。
量化交易,借助数学模型、统计学方法及计算机技术辅助决策,其核心在于分析与预测市场数据,制定交易策略。获取与处理数据在量化交易中至关重要。本文探讨数据来源与处理方法,阐述如何有效利用数据提升交易效益。
量化交易强调自动化决策,通过智能系统执行交易策略,减少情绪波动影响。其优势包括系统化分析、高效决策、精准执行与风险控制,以及策略优化。
应用范围广泛,量化交易面向各类投资者,提供科学、高效交易方式。然而,进行量化交易时需充分评估风险,检验策略,以避免风险。
数据来源包括交易所数据、第三方服务商数据、互联网数据及私有数据。交易所提供实时行情、历史数据等,第三方服务商则整合、加工数据,提供标准化接口。互联网数据通过爬虫抓取财经信息,私有数据由团队或机构拥有,提供独特竞争优势。
数据处理包括清洗、整合、转换、标准化、特征提取与选择,构建数据模型。数据清洗剔除无效信息,标准化消除量纲差异,特征选择提高预测精度。构建模型分析市场走势,预测价格变化。
处理数据时需关注数据质量、数据安全与隐私保护,以及模型验证与优化。确保数据来源可靠、准确,遵守法律法规,保护数据安全。通过回测与交叉验证优化模型,提高预测准确性。
综上所述,量化交易依赖数据获取与高效处理,旨在提升决策科学性与交易效益。在应用过程中,需谨慎管理风险,确保数据与模型的高质量与合法性。
ARENA币一天挖几个?深入解析其产量机制与影响因素 在加密货币领域,“挖矿”是获取代币的核心方式之一,而新项目ARENA币的出现,让不少投资者和矿工关注其单日产量问题,要回答“ARENA币一天挖几个”,需从其共识机制、总量设计、网络难度等多维度分析,同时结合当前市场动态
欧亿交易所还能用吗?用户需警惕多重风险 “欧亿交易所还能用吗”成为不少加密货币用户关注的焦点,作为一家曾活跃于市场的交易平台,欧亿交易所的现状及安全性引发广泛讨论,从公开信息来看,用户在使用前需谨慎评估多重风险,避免资产损失。 平台合规性存疑是核心问题,欧亿
1.UNI币价格:$7.58 2.2024年11月02日 UNI币今日行情走势53.87币价格:53.87 3.24H最高:57.0 4.24H成交额:24.59亿 5.最大发行量:10.0亿 6.24H换手:7.6% 7.24H最低:53.8 8.24H成交量:4565.11万 9.当前发行量:10.0亿 10.24H波幅:5.94% 11.历史最高:319.25 12.最大市
Oyiokex交易所最新动态解析 随着数字货币市场的不断发展,各类交易所如雨后春笋般涌现,Oyiokex交易所作为新兴的交易平台,近期吸引了众多投资者的目光,本文将为您带来Oyiokex交易所的最新信息,帮助您更好地了解这一平台。 从技术层面来看,Oyiokex交易所近期进行了一系列的
灰度投资公司(Grayscale Investments)CEO Michael Sonnenshein今日在达沃斯世界经济论坛期间表示,在已批准的11只现货比特ETF中,大部分都将无法存活。灰度比特币信托ETF是世界上最大的比特币ETF,持有价值超过250亿美元的比特币。本月早些时候,当美国证券交易委员会(SEC
1.RVN币价格:$0.02 2.2024年10月30日 RVN币今日行情走势0.13币价格:0.13 3.24H最高:0.13 4.24H成交额:9873.62万 5.最大发行量:210.0亿 6.24H换手:5.28% 7.24H最低:0.12 8.24H成交量:7.63亿 9.当前发行量:210.0亿 10.24H波幅:8.0% 11.历史最高:2.03 12.最大市值:
WEN币上市了吗?最新进展与投资者须知 关于“WEN币是否上市”的讨论在加密货币社区持续升温,作为备受关注的潜力项目,WEN币自概念提出以来便凭借其独特的生态定位和社区运营模式引发热议,WEN币尚未在主流加密货币交易所正式上线,但项目方已释放出多项积极信号,引发市场对
新手小白必看,一分钟搞定易欧平台注册,附超详细图文教程 在当今全球化的浪潮下,跨境电商已成为许多企业和个人创业者掘金海外市场的首选赛道,而一个高效、稳定且功能强大的平台,是开启跨境之旅的第一步,我们就来为大家详细讲解如何轻松完成“易欧”(Eeasyou)平台的注册
一、ltc用什么钱包LTC可以使用多种钱包进行存储,推荐使用的钱包包括:Loafwallet、Coldcard钱包以及硬件钱包Ledger Nano S。Loafwallet钱包是一款轻量级且非常友好的手机应用钱包,专为莱特币等数字货币设计。它具有高度安全性和稳定性,可以轻松管理和接收LTC。用户友好的界
欧亿交易所商家,掘金数字经济的先锋力量 在全球数字经济浪潮席卷而来,区块链技术与数字资产交易日益成为全球焦点的大背景下,加密货币交易所作为连接资本、项目与用户的“数字枢纽”,其重要性不言而喻,在这片充满机遇与挑战的蓝海市场中,欧亿交易所商家正以其独特的优势和
21年狗狗币多少钱?一场全民狂欢的财富密码回溯 2021年,加密货币市场掀起了一场席卷全球的“狗狗币狂潮”,作为最早以“梗文化”出圈的加密货币,狗狗币(DOGE)在这一年的价格走势堪称“过山车”,从年初的默默无闻到年底的巅峰时刻,无数投资者与“狗粉”在其中见证了财富的
一、现货黄金交易十大平台现货黄金交易十大平台有:金荣中国、亚太金业、安信金控、铸博皇御贵金属、天誉金号、亨达金银、万洲金业、金盛贵金属、第一亚洲商人、中融金业。作为财富的象征,黄金一直是人们收藏的首选,不过,随着金融业的发展,现在黄金也成为了投资产品的一种
深入以太坊核心,通过源码与CLI掌握区块链交互的艺术 以太坊,作为全球领先的智能合约平台和去中心化应用(DApps)的基石,其复杂的架构和精妙的设计一直吸引着无数开发者和研究者的目光,要真正理解以太坊的运作机制,阅读其源码无疑是最高效的途径之一,而以太坊命令行界面(
COM币恐慌与贪婪指数,市场情绪的温度计与投资警示灯 在加密货币市场的波动浪潮中,COM币(假设为某主流代币)的恐慌与贪婪指数(Fear & Greed Index)已成为投资者洞察市场情绪的重要工具,这一指数通过量化市场参与者的心理状态,以0-100的数值区间划分情绪极值:0-24为“极
如何在OE交易所安全高效地提现 在数字货币交易中,选择一个可靠的交易所至关重要,OE交易所作为市场上的一员,提供了多种数字货币交易服务,对于许多用户来说,如何从OE交易所安全高效地提现可能是一个令人困惑的问题,本文将详细介绍OE交易所的提现流程,帮助您顺利完成资金提
POCHITA发了什么币?从动漫符号到加密新宠的狂热探索 当《 Chainsaw Man》(电锯人)中那个粉身碎骨却永远挂着天真笑容的恶魔“波奇塔”(POCHITA),突然成为加密货币世界的焦点时,无数动漫迷与加密玩家同时陷入困惑:这个只会摇尾巴、说“电锯”的可爱角色,到底发了什么币
Ouyi,全球领先的数字资产交易平台引领行业新未来 在数字经济浪潮席卷全球的今天,数字资产交易已成为金融科技领域的核心赛道,作为全球领先的数字资产交易平台,Ouyi凭借技术创新、安全合规与全球化服务,为用户打造了一个高效、透明、可信赖的数字资产交易生态,持续推动行
欧联交一所官网1.0,全新启航,连接你我,共筑未来 备受瞩目的“欧联交一所”官方网站1.0版本正式上线啦!这不仅是欧联交一所发展历程中的一个重要里程碑,更是其致力于打造高效、透明、便捷交流平台的重要一步,官网1.0版本的推出,旨在为所有关注者、合作伙伴及用户提供一个
ouyi—全方位保障让您交易更放心 在数字化交易日益普及的今天,安全与信任已成为用户选择平台的核心诉求,ouyi深谙用户对“放心交易”的期待,以全方位保障体系为基石,从技术、资金、服务、合规四大维度构建安全闭环,让每一次交易都安心无忧。 技术安全是第一道防线,ouyi采
2060s的一天能挖多少狗狗币?答案可能让你意外 在2060年代,当我们回望“一天能挖多少狗狗币”这个问题时,答案或许会让许多期待“暴富”的人感到意外:几乎为零,这并非技术倒退,而是加密货币生态自然演化的必然结果。 挖矿终结:从“工作量证明”到“权益证明” 狗狗币(DO