需要注意的这个只是获取单只股票
代码的用处,通过这个代码有炒股的朋友就可以写出简单的自动止损和按一定价格入场的程序了。(国内正规券商不支持这种功能,可能是为了防止一些东西。)
我们先来看一下股票信息的类
namespace Qianfa.net.Library.Entity
{
/*http://hq.sinajs.cn/list=sh600066 sh上海 sz深圳
* 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″,时间;
*/
public class StockInfo
{
public string Name
{
get;
set;
}
public decimal TodayOpen
{
get;
set;
}
public decimal YesterdayClose
{
get;
set;
}
public decimal Current
{
get;
set;
}
public decimal High
{
get;
set;
}
public decimal Low
{ get; set; }
/// <summary>
/// 竟买价 买1
/// </summary>
public decimal Buy
{ get; set; }
/// <summary>
/// 竟卖价 卖1
/// </summary>
public decimal Sell { get; set; }
/// <summary>
/// 成交数 单位股数 通常除于100成为手
/// </summary>
public int VolAmount { get; set; }
/// <summary>
/// 成交多少钱,单位元
/// </summary>
public decimal VolMoney { get; set; }
/// <summary>
/// 新浪是可以看到5个,5档看盘 ,买1-买5
/// </summary>
public List<GoodsInfo> BuyList { get; set; }
/// <summary>
/// 卖1-卖5
/// </summary>
public List<GoodsInfo> SellList { get; set; }
/// <summary>
/// Date and Time
/// </summary>
public DateTime Time { get; set; }
public override string ToString()
{
return Name + ": " + VolAmount + ":" + Current;
}
}
}
namespace Qianfa.net.Library
{
///股票数据获取接口,你可以自己实现新浪yahoo...
public interface IDataService
{
StockInfo GetCurrent(string stockCode);
}
}
namespace Qianfa.net.DataServices
{
public class Sina : IDataService
{
private const string dataurl = "http://hq.sinajs.cn/list=%7B0}";
#region IStockInfo Members
HttpClient client;
private StockInfo PrevInfo;
public StockInfo GetCurrent(string stockCode)
{
try
{
if (client == null)
{
client = new HttpClient();
}
if (stockCode.Substring(0, 2) == "60")//上海是600打头
{
stockCode = "sh" + stockCode;
}
else if(stockCode.Substring(0,2)=="00")//深圳
{
stockCode = "sz" + stockCode;
}
else if (stockCode.Substring(0, 2) == "51")//上海基金
{
stockCode = "sh" + stockCode;
}
string url = string.Format(dataurl, stockCode);
string data = client.DownloadString(string.Format(url, stockCode));
PrevInfo = Parse(data);
return PrevInfo;
}
catch
{
return PrevInfo;
}
}
/// <summary>
/// Parse Sina data to stock Info
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public static StockInfo Parse(string content)
{
// var hq_str_sh600066 = "宇通客车,9.27,9.35,9.76,9.80,9.27,9.77,9.78,4567858,44306952,3100,9.77,1200,9.76,20500,9.75,1400,9.74,15300,9.73,10030,9.78,28093,9.79,156827,9.80,2800,9.81,6400,9.82,2009-01-09,15:03:32";
int start = content.IndexOf('"')+1;
int end = content.IndexOf('"',start);
string input = content.Substring(start, end - start);
string[] temp = input.Split(',');
if (temp.Length != 32)
{
return null;
}
StockInfo info = new StockInfo();
info.Name = temp[0];
info.TodayOpen = decimal.Parse(temp[1]);
info.YesterdayClose = decimal.Parse(temp[2]);
info.Current = decimal.Parse(temp[3]);
info.High = decimal.Parse(temp[4]);
info.Low = decimal.Parse(temp[5]);
info.Buy = decimal.Parse(temp[6]);
info.Sell = decimal.Parse(temp[7]);
info.VolAmount = int.Parse(temp[8]);
info.VolMoney = decimal.Parse(temp[9]);
info.BuyList = new List<GoodsInfo>(5);
int index = 10;
for (int i = 0; i < 5; i++)
{
GoodsInfo goods = new GoodsInfo();
goods.State = GoodsState.Buy;
goods.Amount = int.Parse(temp[index]);
index++;
goods.Price = decimal.Parse(temp[index]);
index++;
info.BuyList.Add(goods);
}
info.SellList = new List<GoodsInfo>(5);
for (int i = 0; i < 5; i++)
{
GoodsInfo goods = new GoodsInfo();
goods.State = GoodsState.Sell;
goods.Amount = int.Parse(temp[index]);
index++;
goods.Price = decimal.Parse(temp[index]);
index++;
info.SellList.Add(goods);
}
info.Time = DateTime.Parse(temp[30] + " " + temp[31]);
return info;
}
#endregion
}
}
public class GoodsInfo
{
public int Amount
{ get; set; }
public decimal Price
{
get;
set;
}
public GoodsState State { get; set; }
}
如果C#新浪的股票接口满足不了你需要的话你还可以了解一些商业的股票接口
千发股票C#接口
分享到:
相关推荐
首先,要从Sina股票接口获取信息,你需要了解HTTP请求和响应的工作原理。C#提供了多种方式来发送HTTP请求,如使用`System.Net.WebClient`类或者`System.Net.Http.HttpClient`类。`HttpClient`是更现代且推荐的方法,...
新浪API接口对于C#开发者来说,是一个非常实用的工具,它允许程序员利用新浪提供的服务来构建各种应用程序。本文将深入探讨如何在C#环境中使用新浪API,并通过.NET 4.0框架实现相关功能。 首先,我们需要了解新浪...
本主题聚焦于使用C#编程语言从新浪接口获取并分析股票的分时走势。新浪作为知名的财经信息提供平台,提供了丰富的API供开发者使用。下面我们将深入探讨如何利用C#进行分时走势分析以及涉及的相关知识点。 首先,你...
股票数据通常通过API接口获取,例如雅虎财经、新浪财经等,数据格式可能是JSON或XML,需要进行解析并转化为C#对象。 描述中的"测试可以运行"表明开发者已经完成了代码编写,并进行了功能验证,确保了程序的正确性和...
首先,我们需要了解新浪股票API的工作原理。通常,这类接口会通过HTTP请求来获取数据,返回的数据格式可能是JSON或XML。在本例中,我们可能使用了Python的requests库来发送GET请求到指定的API地址,如`...
这需要对接第三方API或者数据服务,比如雅虎财经、新浪财经等提供的股票数据接口。C#支持HTTP请求,可以利用HttpClient类或者WebClient类轻松获取网络数据。同时,为了处理大量数据,可能还需要掌握线程和异步编程,...
首先,`GetStock.cs` 文件很可能是用C#语言编写的一个类或方法,用于实现与新浪股票API的交互。C#是微软开发的一种面向对象的编程语言,广泛应用于Windows平台上的应用开发,包括桌面应用、Web应用和移动应用等。在...
每天股票数据抓取源码,通过sina公开接口,亲测有效,已经抓了半个月了,c# 的源码,包括数据字段说明
C#中的System.ServiceModel命名空间提供了与Web服务交互的接口,使得开发者可以轻松地将股票数据集成到应用程序中。 此外,订阅新闻功能则可能依赖RSS或Atom等新闻订阅协议。开发者会定期检查指定的新闻源,获取新...
获取实时股票数据与股票数据接口API,如果你要同时查询多个股票,那么在URL最后加上一个逗号,再加上股票代码就可以了;比如你要一次查询大秦铁路(601006)和大同煤业(601001)的行情,就这样使用URL: ...
标题中的“demo.rar_DEMO_基金_股票 C#_行情_金融 模型”表明这是一个使用C#语言编写的金融领域的应用示例,主要涉及基金和股票的行情分析,特别是利用了金融模型来实现套利策略。这个压缩包可能包含了源代码、文档...
在股市行情软件中,开发者可能使用了C#的类来封装股票数据,如股票代码、当前价格、涨跌幅度等,通过接口定义与服务器交互的方法,实现数据的实时更新。 二、数据获取与处理 股市行情软件的核心在于实时获取股票...
本项目"StockTool190710.rar"提供了一种利用C++和C#编程语言从新浪或腾讯财经接口获取股票信息,并通过华鑫证券的API接口进行模拟交易的方法。下面将详细探讨这一技术实现的各个关键环节。 首先,C++和C#是两种广泛...
2. **API接口**:许多金融数据提供商如雅虎财经、Google财经、新浪财经等都提供了API,开发者需要理解如何调用这些API来获取股票数据。 3. **数据解析**:股票数据通常以JSON、XML或CSV格式返回,理解这些数据格式...
虽然未直接提供,但开发此类应用通常会用到编程语言如Python、C#或Java,配合GUI库(如Qt、WinForms或WPF)创建用户界面,并可能使用第三方API来获取股票数据,如雅虎财经、新浪财经等提供的数据接口。 9. **股票...
这通常通过API接口实现,如雅虎财经、新浪财经等提供的免费API,或者通过付费订阅专业数据服务。数据更新时,软件需要有处理网络请求和解析JSON或XML数据的能力。 第五,考虑到软件是非源码的,我们无法深入了解其...