服务器端炒股(电脑炒股)
比如公务员上班时间上网炒股,是利用什么技术手段查到的
如果是通过电脑上网炒股票,查到的技术手段有两种:
1、技术人员查看你的电脑,安装了股票软件,就可以认定你在炒股。
2、技术人员查看网络服务器(就是管理你们内部网的那台电脑),上面有你的电脑的IP地址访问过股票网站(包括证券公司的),或者你的IP地址向服务器提出过访问申请(你只要访问股票网站,电脑自动就有这个申请),就可以认定你在炒股。
股票(stock)是股份公司所有权的一部分,也是发行的所有权凭证,是股份公司为筹集资金而发行给各个股东作为持股凭证并借以取得股息和红利的一种有价证券。股票是资本市场的长期信用工具,可以转让,买卖,股东凭借它可以分享公司的利润,但也要承担公司运作错误所带来的风险。每股股票都代表股东对企业拥有一个基本单位的所有权。每家上市公司都会发行股票。同一类别的每一份股票所代表的公司所有权是相等的。每个股东所拥有的公司所有权份额的大小,取决于其持有的股票数量占公司总股本的比重。
股票是股份公司资本的构成部分,可以转让、买卖,是资本市场的主要长期信用工具,但不能要求公司返还其出资。股票是一种有价证券,是股份公司在筹集资本时向出资人发行的股份凭证,代表着其持有者(即股东)对股份公司的所有权,购买股票也是购买企业生意的一部分,即可和企业共同成长发展。这种所有权为一种综合权利,如参加股东大会、投票表决、参与公司的重大决策、收取股息或分享红利差价等,但也要共同承担公司运作错误所带来的风险。获取经常性收入是投资者购买股票的重要原因之一,分红派息是股票投资者经常性收入的主要来源。
大多数股票的交易时间是:交易时间4小时,分两个时段,为:周一至周五上午9:30至11:30和下午13:00至15:00。上午9:15开始,投资人就可以下单,委托价格限于前一个营业日收盘价的加减百分之十,即在当日的涨跌停板之间。9:25前委托的单子,在上午9:25时撮合,得出的价格便是所谓“开盘价”。9:25到9:30之间委托的单子,在9:30才开始处理。如果你委托的价格无法在当个交易日成交的话,隔一个交易日则必须重新挂单。休息日:周六、周日和上证所公告的休市日不交易。(一般为五一国际劳动节、十一国庆节、春节、元旦、清明节、端午节、中秋节等国家法定节假日)
在电脑上怎样炒股,要下载什么软件吗
可以下载同花顺买股票。
1、打开同花顺APP。
2、进入页面中,选择右下角“交易”。
3、登陆自己的账户。
4、进入页面,选择“买入”。
5、输入自己想要买入的股票代码,也可以在行情页面选择股票,可根据股票价格进行排序,选择自己想要买入的股票即可。
6、选择购买的数量,点击箭头所指处的“买入”就可以了。
开发炒股软件,从哪里获得股票数据
目前市场上有很多股票行情交易软件,各种软件提供了丰富的分析和展示功能,而且基本上是免费的。但这些数据都是在线的、无法统一地下载到本地进行分析,于是上网找了些资料,有的是将程序到新浪搜狐的财经频道或其他财经类网站抓取并分析网页,这种方法操作性不强而且准确率较低,遇到广告或网页变动时风险较大。于是找到了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){
}
}
}