股票软件开发教程(股票软件开发流程)

软件开发 1593
今天给各位分享股票软件开发教程的知识,其中也会对股票软件开发流程进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: 1、开发炒股软件,从哪里获得股票数据

今天给各位分享股票软件开发教程的知识,其中也会对股票软件开发流程进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

开发炒股软件,从哪里获得股票数据

目前市场上有很多股票行情交易软件,各种软件提供了丰富的分析和展示功能,而且基本上是免费的。但这些数据都是在线的、无法统一地下载到本地进行分析,于是上网找了些资料,有的是将程序到新浪搜狐的财经频道或其他财经类网站抓取并分析网页,这种方法操作性不强而且准确率较低,遇到广告或网页变动时风险较大。于是找到了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;icu.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;if.length;i++){

if(f[i].getName().endsWith(".csv"))

l.add(f[i]);

}

Iterator it = l.iterator();

while(it.hasNext()){

File ff = (File)it.next();

test.run(path.toString()+File.separator+ff.getName());

}

}catch (Exception e){

}

}

}

股票软件开发,股票知识,股票入门基础知识?

呵呵,都是忽悠人的,记住低买高卖,不追高,早盘看尾盘买,耐心,股市缺的就是耐心,永远不缺资金,告诉我QQ我给你发几本书,但是分得给我

我想请大神帮忙开发一个股票软件 就是增加一个后台管理系统

做这样的软件,自己得有服务器,软件客户端才能和客户端才能连接。通达信肯定有自己的数据,可以直接下载,而如果去下载别人的数据的话,软件根本不稳定。做这个,还是要大投入才行。

请问股票交易软件或程序的制作需要什么类型的程序?设计者需要具备什么样的技能门槛?

和田熏

和田熏可以说是日本动漫音乐少壮派的代表人。1962年生于日本山口县下关市的和田熏,从17岁便开始自学作曲与和声,获得了一些小奖项后于1981年进入东京音乐大学,师从伊福部昭和池野成氏学作曲并在汐泽安彦门下学习指挥。毕业后即旅居欧洲,在那里观察数个国家交响乐团的活动与运作。1985年,和田开始接触电子音乐和乐队。一年后,和田熏到音乐圣地欧洲去学习交流,在阿姆斯特丹等地举办了多场音乐会获得了成功,后来又来北美演出,获得了一致好评。到了1988年,他的作品「民族舞蹈组曲(Folkloric Dance Suite for Orchestra)」的序曲在瑞典由瑞典马尔默交响乐团(Malmo Symphony Orchestra)演出,之后陆续在荷兰、法国、英国、瑞士、西班牙、德国、丹麦、挪威、美国与日本等国家演出,并于1990年在德国发行。回到日本之后,和田熏便投身于电影音乐与动画音乐的制作。他于1989年创建了“和田音乐Office”,开始为电影电视动画等作曲,以及担任新星日本交响乐团的策划、构成和作曲工作,在民乐等领域造诣颇丰。在动画方面,他就为除《犬夜叉》外,如《三只眼》、《圣斗士星矢》、《机神兵团》、《新吸血姬美夕》等日本知名动画配过乐。

和田熏的配乐风格铿锵激昂,明显属于正统一派的,多用号,等管弦乐器来表现雄赳赳,气昂昂的英雄气概。而紧张时刻的音乐也多是使用像扣人心弦的提琴颤音,不规则的鼓点,低沉的圆号在不同音阶慢慢重复一段曲调,或者来个蜂鸣似的大混乱,而这样达到的配乐效果也相当好。另外,他配乐的舒缓部分也相当不错,古朴而带有幻想的气味,相对于菅野洋子这位善于从世界各国民乐中收集素材的作曲家,和田熏则更为偏传统音乐一些,日本传统的箫、笛、太鼓乃至中国的二胡都能在他的音乐中找到发挥空间,像在《犬夜叉》的配乐中他就充分运用这些乐器,使《犬夜叉》的音乐带有日式特有的古典韵味。

《犬夜叉》的故事主要是以两条主线相互缠绕构成基本的情节的,一条是寻找四魂之玉,一条就是犬夜叉与桔梗、戈薇三人的感情纠葛。而这一点也体现在《犬夜叉》的原声音乐中。第一条主线走的是少年动漫式的热血路线,因此与此相关的音乐也保持了罗德岛的铿锵激昂,大量管乐器的使用更让人觉得激情澎湃,而日本的传统乐器间或的穿插又使这种激情带上几丝阴影、几分不安,暗示着他们前进途中的各种凶险。而第二条主线由于是讲感情为主,所以虽然也以管乐为主,而且也有不少节奏轻快的部分,但都处理得比较平和舒缓。另外,加入的人声以及竹笛、二胡等传统乐器,既表现了他们剪不断理还乱的感情纠葛,又与在这段三角恋中三个主人公的苦涩心情相呼应。可以说,为了配合《犬夜叉》这一“刚”一“柔”的两条主线,和田熏也努力使配乐“刚柔并济”。

和田薫(Kaoru Wada)

1962年生于日本山口县下关市。从17岁起便自学作曲、和声等。1981年进入东京音乐大学学习。1986年赴欧洲,到了阿姆斯特丹及柏林等地学习,参与音乐活动加深交流。1989年,和田音乐工作室成立,专为电影、电视等配乐,并组织了如新星日本交响乐团的交响乐团。同时创作了一批包扩受本打乐器协会、日本交响乐团、新典音乐协会、国立音乐大学、新星日本交响乐团等委托所作的音乐。

在和田薫所作的配乐中,为我们最熟知的也许就是《犬夜叉》了。其实和田熏的作品还有很多,单就动画配乐而言,还有《绚烂舞踏祭》、《金田一少年事件簿》、《3X3 EYES》、《罗德岛战记--英雄骑士传》、《驱魔少年》以及《宇宙骑士》等。

推荐曲目:

想谭诗(BGM)--犬夜叉

时代を越える想い(BGM)--犬夜叉

半妖犬夜叉(BGM)--犬夜叉

和田薰的原创音乐作品

Gunnm

Jûbei ninpûchô

四谷怪谈 Chushingura gaiden yotsuya kaidan

Kikaidâ Zero Wan: The Animation

Inuyasha - Toki wo koeru omoi

"Gakkô no kaidan"

"Inuyasha"

Harlock Saga: Nibelung no yubiwa 'Rhein no ôgon'

"To Heart"

3回答者: 心篱 - 五级 2008-6-14 21:53

个人可以开发股票交易软件进行下单吗?

1.、如果券商能提供接口,那非常简单。不过对绝大多数人,这是废话,一是券商不给提供,二是即使提供了,你的程序也得到营业部去跑。

2、券商不提供接口,那就只能从交易软件客户端来想办法了

方法一:keyboard和mouse模拟的办法,比较笨的办法,速度快不起来。按我以往的经验,这种模拟keyboard和mouse的操作,因为要和UI打交道,很多地方得Sleep,不然很容易出错,自动下单,出错了可不是好玩的,那损失的都是钱。要想尽量减少出错,stresstest的时候每步的sleep时间都得足够长,但这样一来,要足够可靠的话,整个过程估计3-5秒也完成不了。这个办法虽然是笨点,但如果对速度和可靠性的要求不高,也是可以接受的,毕竟要比手动操作要快。(对可靠性有担心的,可以留着交易软件每次下单前的确认窗口,这样还可以有最后一次人工确认的机会,但这样一来,批量下单就下不了了)。

方法二:跳过交易软件的UI层,直接调用下层的函数完成交易。大致方法是,1,得要codeinjection,进程注入,你的代码得在交易软件的context下运行才行,2.用debugger慢慢去看,了解交易软件自身是如何调用下层的函数去完成下单,比方说通达信的交易软件,与交易相关的函数,基本在tc.dll和tcapi.dll里面。这个办法弄通了,那下单估计可以在100ms以内完成,就完全和UI无关了。

方法三:从基于web和wap的交易上面动脑筋,这个渠道的下单方式,应该是httppost了一些数据回server,研究一下具体的格式就可以了。这条途径,从client来讲,下单的速度应该和方法二差不多。

3、FIX协议也是一种可能的突破口,部分柜台系统供应商已有现成的FIX产品,有基金、QFII客户的部分券商有采购(如中信证券),可以尝试一下。

关于股票软件开发教程和股票软件开发流程的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

扫码二维码