① 开发炒股软件,从哪里获得股票数据
目前市场上有很多股票行情交易软件,各种软件提供了丰富的分析和展示功能,而且基本上是免费的。但这些数据都是在线的、无法统一地下载到本地进行分析,于是上网找了些资料,有的是将程序到新浪搜狐的财经频道或其他财经类网站抓取并分析网页,这种方法操作性不强而且准确率较低,遇到广告或网页变动时风险较大。于是找到了Sina股票数据接口,这个接口是通过在IE端输入"http://hq.sinajs.cn/list="+相应股票代码网站返回一个文件形式的数据,也可以通过JS获取该文件中的变量得到想要的数据字符串。
以大秦铁路(股票代码:601006)为例,如果要获取它的最新行情,只需访问新浪的股票数据接口:http://hq.sinajs.cn/list=sh601006这个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,真实太方便了!直接在浏览器地址中数据网址即可http://table.finance.yahoo.com/table.csv?s=股票代码,但是如果手动输入再逐一下载保存简直是太麻烦了,光上证股票就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 = "http://table.finance.yahoo.com/table.csv?s=";
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){
}
}
}
② 股票软件怎么用键盘翻页
没有专门的,翻页键盘!一般来说,这都是电脑上那个上下左右键,回啊,那个一般上下左答右键可以实现翻页功能啊!
啊,其实很多股票软件的,他有那个快捷方式,
啊,你可以设置快捷键啊,来实现快速的翻页啊,或者查其他的资料,
啊f,三键的就是看大盘,
哦,f识字看个股资料,F5或者f8的话,可以切换啊,K线图
啊总之你摸索一下就会熟悉运用的!
③ 关于股票的经典书籍有哪些推荐
推荐如下:
《冰与火,中国股市记忆》,这本书正是讲述中国股市成长经历的实录。它的独特之处在于,作为历史题材的文本,它既非按部就班的"编年体",也不是座次分明的"纪传体",而是一种"口述化"的历史。和平铺直叙的描述相比,这些当事人的讲述,或许更能唤起投资人的共鸣;
《证券市场基础知识》,投资是一门学问或者说是手艺,就像医学和法律一样,不是简单认识几种技术指标和会算算市盈率等等基本面指标就能立于不败之地的简单玩意。想要扎扎实实的学好这门手艺,基本功必须扎实。市面上大多数关于股票的书籍,技术分析的一般都是从K线讲起,基本面的都是从投资理念讲起。很少有一本畅销的证券类书籍会把市场中所有最基本的概念明晰的清楚明白,帮你打好基本功的;
《聪明的投资者》,巴菲特的老师,本杰明,格雷厄姆的毕生力作,如果是《股市大作手操盘术》是整个股市的圣经的话,那么《聪明的投资者》就是价值分析和价值投资这一门类的圣经。基本上涵盖了所有关于价值和基本面分析所需要使用一切知识和技巧;
《上市公司财务报表解读》,内容上和《聪明的投资者》有交叉,但是是专门对财务报表方面的专业细化。对于想进一步深入掌握价值和基本面分析的同学们来说,这是必不可少的一本书;
《滚雪球》,在实战中的案例和整个投资体系的建立和优化还是巴菲特的这本传记里有更多的内容。而且格雷厄姆毕竟是20世纪初期生活的人,他的分析和投资理念带有那个年代出现的第一代价值投资的特有的过度小心和谨慎。所以想学好价值投资,巴菲特的书就不得不读了。
④ 网络安全概念股票有哪些
网络信息安全概念股一览(截止时间2015-08-13):
股票名称 股票代码 所属概念
华胜天成 600410 信息安全概念股
亿阳信通 600289 信息安全概念股
北信源 300352 信息安全概念股
任子行 300311 信息安全概念股
启明星辰 002439 信息安全概念股
美亚柏科 300188 信息安全概念股
卫士通 002268 信息安全概念股
蓝盾股份 300297 信息安全概念股
网络信息安全概念股解析:
华胜天成
提供的整体数据信息解决方案,采用先进的EMCCLARIION+EMCMIRRORVIEW软件产品,实现了公司从北京至上海的远程容灾集中存储备份,极大提升了企业信息化管理及数据安全策略。
亿阳信通
公司作为国内领先的应用安全解决方案提供商之一,拥有自主知识产权的身份与访问管理平台4A(集中帐号/集中认证/集中授权/集中审计)、综合审计系统、安全管理平台(SOC)产品,同时结合自主产权的防火墙、VPN等硬件产品和专业的安全服务,为中国联通(600050)、中国电信,金融、政府、中国移动(18省)及众多企业用户提供整体安全解决方案。全资子公司亿阳安全技术有限公司取得国家保密局颁发的涉及国家秘密的计算机信息系统集成(甲级)资质。
北信源
公司是一家拥有自主知识产权的信息安全企业通过不断地技术创新,在终端安全管理产品、数据安全管理产品、安全管理平台产品及安全服务整体解决方案等方面形成多项核心技术,公司已成为国内最具技术创新和产品开发实力的信息安全主要厂商之一。公司主营产品为终端安全管理产品、数据安全管理产品和安全管理平台产品等。
任子行
公司目前主要从事网络内容与行为审计和监管产品的研发、生产、销售,并提供安全集成和安全审计相关服务,客户主要包括网吧、宾馆、电信运营商、政府和企事业单位。公司主要产品的两大系列为网络内容与行为审计系列产品和网络内容与行为监控系列产品,其中网络内容与行为审计产品包括专用安全审计产品和通用安全审计产品。
启明星辰
公司是信息安全行业龙头,主营入侵检测与入侵防御产品,曾为北京奥运会官方网站、央视国际网站等提供信息安全服务,公司还参与制订国家及行业网络安全标准。 返回首页
美亚柏科
公司从事信息安全行业中电子数据取证和网络信息安全的技术研发、产品销售与整体服务。是国内最早进入电子数据取证行业的企业之一,公司的电子数据取证产品占据国内同类产品市场份额的40%以上,是国内领先的电子数据取证产品和服务提供商,也是目前国内电子数据取证行业中少有的具有全系列自主研发产品的企业。
卫士通
公司处于信息安全领域,其密码产品占据信息加密和身份认证细分市场逾20%的份额。公司日前公告,其申报的2012年国家下一代互联网信息安全专项的“高性能VPN设备研发与产业化”项目,被列入国家高技术产业发展项目计划,并获国家补助800万元,将由国家发改委分批下达投资计划并拨付资金。
蓝盾股份
公司从事提供信息安全领域一体化解决方案,包括企业级信息安全产品研发与销售并提供安全集成、安全服务等业务,是华南地区最大的信息安全产品及服务总和提供商。企业级信息安全产品主要包括防火墙、VPN、IDS/IPS、UTM、安全审计、信息加密、身份认证、终端安全管理、安全管理平台等,广泛应用于政府、电信、金融、能源、教育等领域。
⑤ 股票均线如何设置
6.10日最新补充回答:新建指标的方法:
1、摁CTRL+F打开[公式编辑器],选择[新建]。
2、在弹出的窗口中的左上角有个[公式名称],在其后面输入自己喜欢指标名称,如:GGG。
3、在[公式名称]下面一点有个[参数名],分别将其1、2、3、4、5、6中输入M1、M2、M3、M4、M5、M6,在后面的[最小]中的6个文本框中输入全部输入2,在[最大]中的全部输入500,[缺省]中从上至下依次输入5、10、30、60、120、250,这些分别是5、10、30、60、120、250日线,当然你也可以把它们设为自己喜欢的均线值。
4、在下面的空白区域中,也就是源码区,输入:
MA1:MA(CLOSE,M1);
MA2:MA(CLOSE,M2);
MA3:MA(CLOSE,M3);
MA4:MA(CLOSE,M4);
MA5:MA(CLOSE,M5);
MA6:MA(CLOSE,M6);
5、选择右上角部分的[画线方法],将原来的[副图]修改为[主图叠加],这是为了让所建指标和K线在同一窗口下出现。
6、点击窗口右侧的[测试公式],如果在源码区下面的[动态翻译]中显示测试成功则可以点击右上角的[确定]并退出了。
这样你关闭软件再打开后,输入GGG,回车,就能看见新建立的GGG指标了。
当然楼下的那位兄弟说的你可以参考,就是输入MA2,这个指标是有6条线的平均线,你可以修改它们的参数,放心,修改参数是不会被系统保护的,也就是说是可以保存下来的。
上面几位都没弄清楚楼主的问的是什么
楼主你确定你是在原有的移动平均线上加上了半年线和年线吗?
如果是,我下面回答你:
您在修改指标以后总得点[确定]的吧?那么点了[确定]以后系统是不是提示你“系统公式在程序退出后将恢复为缺省,请对修改另做保存。推荐新建公式时使用引入指标公式的方法来修改!”?如果是这样,那么问题就简单了,您现在需要摁CTRL+F,打开[公式管理器],选择[新建],然后把系统的[MA]指标里的源码、参数和您已经修改过的源码全部复制到这里。我看您能修改[MA]的源码,说明您还是懂一些指标方面的知识的,所以建立步骤我就不说了。
保存好新建的指标,退出软件,再打开软件,输入新建指标的名称。
怎么样?OK了吧?
因为系统的指标公式通达信软件都会进行保护,每次用户修改过以后下次启动还是默认的状态。