❶ 在编程中如何能能获得股票的数据 例如当前价,最高价,最低价,当前成交量等等
要看使和什么数据了,每个软件数据的存储格式不同,有的还是加密存储的(如指南针)。
以常见的钱龙数据来说吧(钱龙是最简单的存储格式)当前价,最高价,最低价,当前成交量等等都是以随机文件存储的长整型数据。下面是读取钱龙数据的C源码,你可以参考一下:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
typedef struct { ------->定义数据类型
unsigned long date; ------->定义日期为长整
unsigned long open; ------->定义开盘为..
unsigned long high; ------->定义最高为..
unsigned long low; ------->定义最低为..
unsigned long close; ------->定义收盘为..
unsigned long travl; ------->定义成交量..
unsigned long traca; ------->定义成交额..
char unuse[12];
} RECORD;
RECORD reco;
int readrec(FILE *);
void main()
{
FILE *fp;
if((fp = fopen("000001.day","rb")) == NULL) // 打开深发展日线
{ printf("Error: Can't open 000001.DAY !\n");
exit(0); }
readrec(fp);
fclose(fp);
if(getch()==0) getch();
exit(0);
}
int readrec(FILE *fp)
{
float fn;
while (! feof(fp)) {
fread(&reco,sizeof(RECORD),1,fp);
printf("%10lu ",reco.date);
fn=float(reco.open)/1000;
printf("%8.2f ",fn);
fn=float(reco.high)/1000; .
printf("%8.2f ",fn); .
fn=float(reco.low)/1000; .
printf("%8.2f ",fn); .
fn=float(reco.close)/1000; .
printf("%8.2f ",fn); .
printf("%8lu ",reco.travl); .
printf("%8lu\n",reco.traca);
}
printf("\n");
return 0;
❷ 通达信中,请问如何用公式获取股票某天的价格 如条件选股时用 2010.12.21的收盘价大于15
设置参数N 最小值1070101,最大值9999999,缺省值1101221
NN:=BARSLAST(DATE=N);
VAR2:REF(C,NN)>15;
若要设置另外某一天,只要调整参数N就可以了。
这个指标的意思是选取2010年12月21日那一天的收盘价大于15的股票。
PS:不知道是不是你要用的公式~~
❸ 请问用C#如何提取新浪等网站的股票实时动态行情数据
找到一个利用webservice的方法,希望能够帮助你
声明: 这篇文章适合在C#命令行编译器下的开发借鉴,对于已经装了MS.NET的朋友,开发客户端时将会更容易一些,我随后对登出我自己的开发程序,这篇文章为我摘录的.摘录URL:http://www.knowsky.com/2016.html
(一)
Web Services,即Web服务,是微软.NET战略中非常重要的一个概念。它的目的是将Web站点转变为集组织、应用、服务以及设备于一体的可设计Web站点,使Web站点不再处于被动的地位。
本文将介绍如何建立和使用一个在.NET 平台上提供股票报价的Web服务。我们将使用Yahoo的一项以CSV(以逗号分隔的值)的格式提供股票报价的免费服务,将其包含在我们的web 服务中。
注意:这个报价服务例程的运行大约延迟15分钟,只用于教学目的。
建立Web服务
下面将采用逐步讲解代码的形式来帮助你理解在.NET 中Web服务的编程模式。我们可以使用notepad等任何文本编辑器来编写 这里的Web服务例程代码,最后将文件存储为StockQuote.asmx。请注意:所有的Web服务文件保存时都使用扩展名 *.asmx。
<%@ WebService Language="C#" class="DailyStock" %>
代码的第一行定义了一个 Web 服务,使用的语言是C#。class属性用来指示Web服务应该调用和使用的类。如果在Web服务中使用了许多类,那么就应该用这个属性来表明Web服务应该首先调用的类。
using System ;
using System.Web.Services ;
using System.Net ;
using System.IO ;
using System.Text ;
以上代码负责引入必要的名称空间。 请记住永远都要引入System.Web.Services这个名称空间。根据类的需要,再引入保留的名称空间。
public class DailyStock : WebService
{
......
....
}
这里我们将公共类定义为 DailyStock,它扩展了 System.Web.Services.WebService 类。所有想暴露为 Web服务的类都应该扩展System.Web.Services.WebServices类。 另外,Web 服务的存取修饰语永远都是public。
[WebMethod]
public string GetQuote(string symbol)
{
........
........
}
以上我们定义了一个公共Web方法 GetQuote。同类的定义一样,Web 方法也都要用 public这个修饰语来声明。 [WebMethod] 属性呈现出将要被用在Web服务中的一些潜在方法,希望客户存取的所有方法都应该用[WebMethod] 属性进行标记。GetQuote方法接受一个字符串输入参数,它包含了使用者所需要的报价符号。这个方法返回一个字符串,其中包含股票报价或错误
string ret;
try
{
// The Path to the Yahoo Quotes Service
string fullpath = @"http://
// Create a HttpWebRequest object on the Yahoo url
HttpWebRequest webreq = (HttpWebRequest)WebRequestFactory.Create(fullpath);
// Get a HttpWebResponse object from the Yahoo url
HttpWebResponse webresp = (HttpWebResponse)webreq.GetResponse();
// Create a StreamReader object and pass the Yahoo Server stream as a parameter
StreamReader strm = new StreamReader(webresp.GetResponseStream(), Encoding.ASCII);
// Read a single line from the stream (from the server)
// We read only a single line, since the Yahoo server returns all the
// information needed by us in just one line.
ret= strm.ReadLine();
// Close the stream to the server and free the resources.
strm.Close();
}
catch(Exception)
{
// If exception occurred inform the user
ret="Exception Occurred" ;
}
file://Return the Quote or Exception
return ret ;
以上是GetQuote 方法的内容。这里使用一个 try-catch模块来截获从Yahoo中得到股票报价的过程中可能发生的错误。在 try-catch模块内部声明了一个字符串变量,这个变量中保存着获取yahoo服务的完整路径,用户提供的symbol字符串变量被加到这个连接字符串上。
路径建立好之后,就要从连接字符串中构造一个 HttpWebRequest对象和一个 HttpWebResponse 对象。接着,用StreamReader打开一个到Yahoo
(二)
配置Web服务
配置Web 服务与一个配置ASP.NET应用程序相同。如果自己有Web服务器,那么就创建一个称为stockquote 的虚拟目录,然后将 StockQuote.asmx复制到这个目录中。如此就完成了Web 服务的配制。要调用Web服务,首先启动浏览器,然后键入Web 服务的路径,如 http://localhost/stockquote/StockQuote.asmx,接着看到的页面就是由Web服务运行时间环境自动生成的结果。在文本框中键入符号,例如AOL 或 MS,再点击invoke按钮,这时就会弹出一个新的窗口,在其中向你显示了Web服务的输出信息。
使用Web服务
基本上有两种使用Web 服务的方法。可以通过浏览器直接调用 Web 服务,并按照上面介绍的方法来使用它。或者,也可以在应用程序使用它。下面就看看如何建立一个Web 应用程序和一个控制台应用程序,通过它们来使用Web服务。当然,也可以使用Win Form 应用程序作为替代来使用Web 服务。
获取服务的描述
为了与Web服务进行通信,客户应该知道这个Web服务支持哪种方法以及如何与它们进行通信。.NET 上的Web服务自动用SDL(服务描述语言)产生一个 XML格式文档,这样就使客户能够获取与Web服务通信时所需要的信息。 在Web 服务URL之后附加 ?SDL 使Web服务生成客户能够使用的SDL文档。要查阅这里接受的Web 服务的SDL,可以在浏览器中键入http://localhost/stockquote/StockQuote.asmx?SDL。
(三)
构造代理库
.NET 平台上的应用程序可以使用代理库来调用Web服务上的方法,这样使用Web服务就非常容易。生成代理库的第一步是从SDL中生成一个Web服务的代理类。.NET SDK提供了一个叫做WebServiceUtil.exe的工具,它能够帮助我们生成一个代理类。要生成Web服务的代理类,首先进入命令行环境,然后转到将要开发客户应用程序的那个目录,接着输入以下命令:
WebServiceUtil /c:proxy /pa:http://localhost/stockquote/StockQuote.asmx?SDL /n:Quotes
以上命令执行后,会在运行这个命令的目录中生成一个 C# 源代码文件,叫做 DailyStock.cs (要记住Web服务类的名称也是 DailyStock,)。现在来看这些自变量的含义:
l /c:proxy:告诉WebServiceUtil生成一个代理类
l /pa:http://localhost/stockquote/StockQuote.asmx?SDL:向SDL提供Web服务的路径。如果已经将Web服务的SDL 保存到了硬盘上,我们甚至可以提供SDL文件的本地路径。
l /n:Quotes:告诉WebServiceUtil将代理类放在 Quotes名称空间。这样做的目的是为了更容易地管理和使用代理库。
代理库准备好之后,我们使用C# 编译器从上面步骤中刚创建的代理类中生成一个代理库:
csc /target:library /r:System.dll;System.Web.Services.dll;System.Net.dll;
System.IO.dll;System.Xml.Serialization.dll DailyStock.cs
生成代理库的时候,我们使用了 /target:library开关以表示想要输出一个库文件。我们还引用一些曾经在Web服务中使用过的集合。编译器将在运行命令所在目录中生成一个名为DailyStock.dll 的dll 库。
(四)
创建 Web应用程序用户
下面创建一个Web应用程序StockConsumer.aspx,它作为这个StockQuote(股票报价) Web服务的第一个用户。
<%@ Page language="C#" %>
<%@ Import Namespace="System.Xml" %>
<%@ Import Namespace="Quotes" %>
以上引入必要的名称空间。要记住也要引入 Quotes名称空间,它是代理库的名称空间。
<html>
<head>
<script runat=server>
// Wire up the onClick event for a button
protected void button1_Click(object sender, EventArgs e)
{
file://Create a object of the class DailyStock (the proxy class)
DailyStock ds = new DailyStock();
// Call the GetQuote method of the proxy class DailyStock and
// pass the symbol string from the textbox
string res = ds.GetQuote(symbol.Text);
// The returned string has values which are separated
// by commas.
// Hence we split the returned string into parts
char[] splitter = {','} ;
string[] temp = res.Split(splitter);
// Check if the string array returned has more than one
// elements since if there are less than one elements
// then an exception must have been returned
if(temp.Length >1)
{
// The WebService returns a lot of information about the
// stock. We only show the relevant portions
// Set the label to current Index
curindex.Text = "Current Index :"+temp[1];
// Set the label to current Date Time
curdate.Text ="Last Update on"+temp[2]+" at "+temp[3];
}
else
{
error.Text = "Error :"+res ; file://set the error label
}
}
</script>
以上ASP.NET页面代码中,首先对Web 服务DailyStock进行例示。由于已经生成了代理库,因此Web服务的调用方法与其它任何库的调用方法都相同。调用DailyStock 类的GetQuote()方法后,将返回一个字符串,其中包含了以逗号分隔的列表符号的完整信息。
我们将限制显示给客户的信息为只显示当前指数和所报告指数的日期/时间。为了将字符串分成若干不同的部分,这里使用了字符串类的Split方法,在出现逗号的地方将字符串分割成部分。并且,将分割开的字符串组成数组之后,再使用相关的数值为Web页面设置不同的标签。
代码的其余部分
<body>
<center>
<h2>.NET101 Stock Quote Consumer </h2>
<form runat=server >
<table border=1 celspacing=1>
<tr><th>Please enter the symbol below</th></tr>
<tr><td>
<asp:textbox id=symbol runat=server />
<asp:button id=button1 text="Get Quote" onClick="button1_Click" runat=server />
</td></tr>
<tr><td><asp:label id=curindex runat=server /></td></tr>
<tr><td><asp:label id=curdate runat=server /></td></tr>
<tr><td><asp:label id=error runat=server /></td></tr>
</table>
</form>
</center>
</body>
</html>
(五)
小结
下面总结一下配置Web应用程序的步骤:
l 创建一个叫做StockConsumer的虚拟目录
l 将 StockConsumer.aspx 文件复制到这个虚拟目录下
l 在wwwroot 文件夹中创建一个 bin 虚拟目录
l 设置bin目录以执行代码的权限
l 将代理 dll 文件DailyStock.dll复制到这个目录下,ASP.NET 运行时间引擎会自动从Bin目录中选择对外部库的引用。这里的例子中,这个外部库是DailyStock.dll。
现在调用文件 http://localhost/StockConsumer/StockConsumer.aspx,然后键入股票的符号,点击 "Get Quote"(获取报价)按钮,就能看到正在使用的Web服务了。注意:Web服务应该能够使用yahoo服务器,否则它就会返回一个错误信息。
❹ 请教大神股票程序编写:怎样获取某一天的(如10天内最高价这一天的开盘价(O) 或收盘价(C),这句怎样写
{10天内最高价这一天的开盘价}
REF(O,HHVBARS(H,10));
===============
{10天内最高价这一天的收盘价}
REF(C,HHVBARS(H,10));
❺ C语言(股价预测函数)
#include <stdlib.h>
#include <time.h>
float prediction(float x, int n){//从x随机行走n步
static float delta=0.01;
static char first=1;//定义静态局部变量
int i;
if(first){//如果第一次运行
srand(time(NULL));//用系统时间初始化随机数发生器
first=0;
}
for(i=0;i<n;++i){
x+=rand()/(1.0+RAND_MAX)*2*delta-delta; //x加上一个[-Δ,Δ)之间的随机小数
}
return x;
}
❻ 求股票价格是如何计算出来的
(卖出股票的价钱-买如股票的价钱)乘以*你买的股数=基本上的你的利润(里面包含印花税)
计算股票指数时,往往把股票指数和股价平均数分开计算。按定义,股票指数即股价平均数。但从两者对股市的实际作用而言,股价平均数是反映多种股票价格变动的一般水平,通常以算术平均数表示。人们通过对不同的时期股价平均数的比较,可以认识多种股票价格变动水平。而股票指数是反映不同时期的股价变动情况的相对指标,也就是将第一时期的股价平均数作为另一时期股价平均数的基准的百分数。通过股票指数,人们可以了解计算期的股价比基期的股价上升或下降的百分比率。由于股票指数是一个相对指标,因此就一个较长的时期来说,股票指数比股价平均数能更为精确地衡量股价的变动。
1. 股价平均数的计算
股票价格平均数反映一定时点上市股票价格的绝对水平,它可分为简单算术股价平均数、修正的股价平均数、加权股价平均数三类。人们通过对不同时点股价平均数的比较,可以看出股票价格的变动情况及趋势。
(1)简单算术股价平均数
简单算术股价平均数是将样本股票每日收盘价之和除以样本数得出的,即:
简单算术股价平均数=(P1+P2+P3+…+ Pn)/n
世界上第一个股票价格平均——道·琼斯股价平均数在1928年10月1日前就是使用简单算术平均法计算的。
现假设从某一股市采样的股票为A、B、C、D四种,在某一交易日的收盘价分别为10元、16元、24元和30元,计算该市场股价平均数。将上述数置入公式中,即得:
股价平均数=(P1+P2+P3+P4)/n
=(10+16+24+30)/4
=20(元)
简单算术股价平均数虽然计算较简便,但它有两个缺点:一是它未考虑各种样本股票的权数, 从而不能区分重要性不同的样本股票对股价平均数的不同影响。二是当样本股票发生股票分割派发红股、增资等情况时,股价平均数会产生断层而失去连续性,使时间序列前后的比较发生困难。例如,上述D股票发生以1股分割为3股时,股价势必从30元下调为10元, 这时平均数就不是按上面计算得出的20元, 而是(10+16+24+10)/4=15(元)。这就是说,由于D股分割技术上的变化,导致股价平均数从20元下跌为15元(这还未考虑其他影响股价变动的因素),显然不符合平均数作为反映股价变动指标的要求。
(2)修正的股份平均数
修正的股价平均数有两种:
一是除数修正法,又称道式修正法。 这是美国道·琼斯在1928年创造的一种计算股价平均数的方法。该法的核心是求出一个常数除数,以修正因股票分割、增资、发放红股等因素造成股价平均数的变化,以保持股份平均数的连续性和可比性。具体作法是以新股价总额除以旧股价平均数,求出新的除数,再以计算期的股价总额除以新除数,这就得出修正的股介平均数。即:
新除数=变动后的新股价总额/旧的股价平均数
修正的股价平均数=报告期股价总额/新除数
在前面的例子除数是4,经调整后的新的除数应是:
新的除数=(10+16+24+10)/20=3,将新的除数代入下列式中,则:
修正的股价平均数=(10+16+24+10)/3=20(元)得出的平均数与未分割时计算的一样,股价水平也不会因股票分割而变动。
二是股价修正法。股价修正法就是将股票分割等,变动后的股价还原为变动前的股价,使股价平均数不会因此变动。美国《纽约时报》编制的500 种股价平均数就采用股价修正法来计算股价平均数。
(3)加权股价平均数
加权股价平均数是根据各种样本股票的相对重要性进行加权平均计算的股价平均数,其权数(Q) 可以是成交股数、股票总市值、股票发行量等。
2.股票指数的计算
股票指数是反映不同时点上股价变动情况的相对指标。通常是将报告期的股票价格与定的基期价格相比,并将两者的比值乘以基期的指数值,即为该报告期的股票指数。股票指数的计算方法有三种:一是相对法,二是综合法,三是加权法。
(1)相对法
相对法又称平均法,就是先计算各样本股票指数。再加总求总的算术平均数。其计算公式为:
股票指数=n个样本股票指数之和/n
英国的《经济学家》普通股票指数就使用这种计算法。
(2)综合法
综合法是先将样本股票的基期和报告期价格分别加总,然后相比求出股票指数。即:
股票指数=报告期股价之和/基期股价之和
代入数字得:
股价指数=(8+12+14+18)/(5+8+ 10 + 15) = 52/38=136.8%
即报告期的股价比基期上升了36.8%。
从平均法和综合法计算股票指数来看,两者都未考虑到由各种采样股票的发行量和交易量的不相同,而对整个股市股价的影响不一样等因素,因此,计算出来的指数亦不够准确。为使股票指数计算精确,则需要加入权数,这个权数可以是交易量,亦可以是发行量。
(3)加权法
加权股票指数是根据各期样本股票的相对重要性予以加权,其权数可以是成交股数、股票发行量等。按时间划分,权数可以是基期权数,也可以是报告期权数。以基期成交股数(或发行量)为权数的指数称为拉斯拜尔指数;以报告期成交股数(或发行量)为权数的指数称为派许指数。
拉斯拜尔指数偏重基期成交股数(或发行量),而派许指数则偏重报告期的成交股数(或发行量)。目前世界上大多数股票指数都是派许指数。
❼ 如何用C程序实现 读取DAT股票文件数据
int a = 0x19554c32;
这样就能拿到数据,但读文件的时要二进制打开读,就是fopen("数据文件名“,"rb");
然后fread读,都到一个buf里,让后将buf按照你的类型强转就行。
❽ 股票当前的价格是怎么计算的
一、目前A股市场上股票上市的定价方法是建立在企业当年的预测利润基础上,比过去采用前三年利润的平均值来确定股价相对科学一些,因为投资者是投资未来的业绩而非过去的回忆。目前国内A股股票上市价格计算公式为:
发行价格P=每股利润EPS*市盈率R
其中:每股利润=发行当年预测利润/发行当年加权股本数
二、决定股票上市价格主要有以下几个因素:
(1)上市企业的整体评估价值V(主要是企业核心技术的评估价值)。此因素是决定股票上市价格的重中之重,其评估方法和结果不但要得到二板上市委员会的认可,而且必须通过投资者的最后检验,因为只有投资者才是购买股票的顾客,是上帝。研究上市企业的整体评估价值是目前内地券商研究机构必须重点研究的二板市场课题。
(2)投资者对上市企业价值的认可度M1。此因素决定于保荐人向潜在投资者宣传企业价值的营销战略是否成功。
(3)上市时企业所属国家和地区、上市地和全球政治、经济、金融形势,称之为宏观影响系数M2。很明显,亚洲金融危机的爆发对潜在投资者在亚洲的投资决策的影响难以估量,直接影响到股票的发行价格乃至发行成功与否。
(4)投资者在一级市场申购新股的合理投资回报率R。若没有诱人的投资回报,谁会动用资金去申购具有更大风险的二级市场股票呢?风险资金的成本一般是比较高的。
❾ 如何使用 Yahoo Finance stock API 获取股票数据
1、通过API获取实时数据
请求地址
http://finance.yahoo.com/d/quotes.csv?s=<股票名称>&f=<数据列选项>
参数
s – 表示股票名称,多个股票之间使用英文加号分隔,如”XOM+BBDb.TO+JNJ+MSFT”,罗列了四个公司的股票:XOM, BBDb.TO, JNJ, MSFT。
f – 表示返回数据列,如”snd1l1yr”。更详细的参见雅虎股票 API f 参数对照表。
2、通过API获取历史数据
请求地址
http://ichart.yahoo.com/table.csv?s=<string>&a=<int>&b=<int>&c=<int>&d=<int>&e=<int>&f=<int>&g=d&ignore=.csv
参数
s – 股票名称
a – 起始时间,月
b – 起始时间,日
c – 起始时间,年
d – 结束时间,月
e – 结束时间,日
f – 结束时间,年
g – 时间周期。Example: g=w, 表示周期是’周’。d->’日’(day), w->’周’(week),m>’月’(mouth),v->’dividends only’一定注意月份参数,其值比真实数据-1。如需要9月数据,则写为08。
3、通过API获取深沪股票数据
雅虎的API是国际性的,支持查询国内沪深股市的数据,但代码稍微变动一下,如浦发银行的代号是:600000.SS。规则是:上海市场末尾加.ss,深圳市场末尾加.sz。