『壹』 請問用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伺服器,否則它就會返回一個錯誤信息。
『貳』 如何使用 Yahoo,Finance stock API 獲取股票數據
使用 Yahoo,Finance stock API 獲取股票數據,需要使用源碼和函數設置,請參考下面的數據,一次輸入源碼和函數即可:
HR:=HHV(HIGH,55);
HRY:=LLV(LOW,55);
HRY11:=HR*HRY;
HRY33:=SQRT(HRY11);
TJ2:=REF(DOWN,1)<REF(DOWN,2) AND UP>REF(DOWN,1) AND C<HRY33;
『叄』 如何利用一些 finance 資料庫 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->』dividendsonly』
一定注意月份參數,其值比真實數據-1。如需要9月數據,則寫為08。
3、通過API獲取深滬股票數據
雅虎的API是國際性的,支持查詢國內滬深股市的數據,但代碼稍微變動一下,如浦發銀行的代號是:600000.SS。規則是:上海市場末尾加.ss,深圳市場末尾加.sz。
最近股市甚火,受聘開發一股票網站,股票的數據從哪裡來成了一個大問題,股票軟體一般都是加密處理的,還有一些webservices也是要帳號 的,免費的方法只有一種了,抓別人網站的數據。好在經我研究,發現yahoo提供國內和國外股市每天的交易數據資料,這可謂一大幸事啊。
http://table.finance.yahoo.com/table.csv?s=ibm&d=6&e=22&f=2006&g=d&a=11&b=16&c=1991&ignore=.csv
上面的鏈接可以抓取IBM股票從1991年11月16日起到2006年6月22的數據。把ibm改成sohu,就可以抓到sohu的股票數據了。
http://table.finance.yahoo.com/table.csv?s=sohu&d=6&e=22&f=2008&g=d&a=11&b=16&c=2008&ignore=.csv
上面鏈接可以抓搜狐股票的數據。
那麼中國股市的數據有沒有呢?答案是肯定的,不過要按照下面的參數做些調整,下面提供全球證券交易所的資料。
上證股票是股票代碼後面加上.ss,深證股票是股票代碼後面加上.sz
例如:000001 = 000001.sz
深市數據鏈接:http://table.finance.yahoo.com/table.csv?s=000001.sz
上市數據鏈接:http://table.finance.yahoo.com/table.csv?s=600000.ss
上證綜指代碼:000001.ss,深證成指代碼:399001.SZ,滬深300代碼:000300.ss
下面就是世界股票交易所的網址和縮寫,要查找哪個股票交易所的數據,就按照上面的格式以此類推。
上海交易所=cn.finance.yahoo.com,.SS,Chinese,sl1d1t1c1ohgv
深圳交易所=cn.finance.yahoo.com,.SZ,Chinese,sl1d1t1c1ohgv
美國交易所=finance.yahoo.com,,United States,sl1d1t1c1ohgv
加拿大=ca.finance.yahoo.com,.TO,Toronto,sl1d1t1c1ohgv
紐西蘭=au.finance.yahoo.com,.NZ,sl1d1t1c1ohgv
新加坡=sg.finance.yahoo.com,.SI,Singapore,sl1d1t1c1ohgv
香港=hk.finance.yahoo.com,.HK,Hong Kong,sl1d1t1c1ohgv
台灣=tw.finance.yahoo.com,.TW,Taiwan,sl1d1t1c1ohgv
印度=in.finance.yahoo.com,.BO,Bombay,sl1d1t1c1ohgv
倫敦=uk.finance.yahoo.com,.L,London,sl1d1t1c1ohgv
澳洲=au.finance.yahoo.com,.AX,Sydney,sl1d1t1c1ohgv
巴西=br.finance.yahoo.com,.SA,Sao Paulo,sl1d1t1c1ohgv
瑞典=se.finance.yahoo.com,.ST,Stockholm,sl1d1t1c1ohgv
『肆』 用java語言可以實時獲取股票數據。我想知道能否用c語言來讀取新浪股票信息呢具體怎麼實現,謝謝。
你好,可以給你些參考,資金流向,風控等要注意。其他內容還有很多。股市方面問題都可以問的。婦道人家
『伍』 我要做程序化交易編程, 國內那些股票/期貨軟體支持C或者C++行情分析編程介面
你自己私自是不能獲取行情數據的,證券行的股票交易軟體是通過自己公司的伺服器來獲取證券交易所的行情信息的
『陸』 股票軟體編程問題
這個嘛,的確有些異想天開,但只要你努力,編個軟體是做的到的。
第一步,您可以嘗試在一些免費軟體上寫指標,很多軟體都提供公式編輯功能,這些公式編輯器就是一種簡化的計算機語言,如果您對股市的想法不復雜,使用別人的軟體做平台,自己加些東西,可能是上手最快的辦法。
如果您期望獲得的是獨立完整的產品,就需要找數據源了。如果您計算機水平足夠高,任何一款免費軟體的數據都能夠導出來。如果您做不到這一點,可以找個免費的數據介面。這些數據介面在許多軟體論壇上有提供,至於怎樣使用這些介面,您需要找介面的提供者咨詢。免費數據介面是網上的一些編程高手提供的,有些收費,有些免費。即使收費,費用也不高。
找到數據後,就可以寫自己的軟體了。通過各軟體商的摸索,股票軟體幾乎唯一的選擇是C語言。早前人們嘗試過幾乎所有當前流行的計算機語言寫股票軟體,但目前大品牌的正版付費軟體幾乎都是C語言寫的,其他語言在處理數據流上效率太低,以至於不能商品化。
當您的軟體已經可以向市場推廣時,就需要購買正式的數據源了。來自交易所的數據有兩個版本:Level-1和Level-2,Level-1每年約80萬,Level-2是買不到的,後者屬於特許經營,您需要是注冊資本1000萬以上的公司,通過向交易所特別申請才能獲得。運營Level-2數據的投資額大約是3000萬/年,包括研發、市場和數據傳輸平台。
如果您的軟體創新度有限,您的商業機會不多。如果您有自己的創造,那您就有機會了。在這個市場上,獲得每年3000萬的營業額不困難。
如果您試圖獲得每年上億的營業額並在創業板上市,您需要找到不低於4000萬的風險投資,並且組建一個不小於150人的團隊。
祝您成功吧,有志者事竟成。
『柒』 怎麼在同花順上下載股票數據
【同花順下載全部個股資料】:當你安裝好軟體之後登陸,軟體連接到伺服器,將自動下載全部股票信息,只需要在軟體的右下角輸入股票代碼,然後按鍵盤回車鍵將進入個股界面。
對於大家需要個股的詳細交易記錄,例如歷時分時圖、歷時成交記錄等,那麼我們就需要下載了。
以下是下載步驟:【數據下載及管理】:a、「盤後數據下載」對於因為某些原因而不能實時在線的用戶,我們提供盤後數據下載的功能。
您可以連接上下載主站,下載後斷開連接慢慢查看、分析。
當您選擇「數據下載」彈出「數據下載中心」對話框時就會自動連接下載主站。
在列表框裡面會顯示主站上可供下載的數據及大小。
分為「今日數據」、「歷史數據」、「財務數據」和「資訊數據」四大類。
您可以打開目錄,下載其中的某一項,也可以直接在目錄上操作下載全部的數據。
對於「歷史數據」您可以在對應的標明時間的「時間段」上雙擊來修改下載數據的時間段,也可以在右鍵菜單里選擇「下載時間」。
選好了時間段後,點右鍵「加入下載」,想取消下載就選擇「暫不下載」。
在所有希望下載的內容都選好了之後,點最下面的「下載」鍵,下載數據。
注意:1、為了方便下載,您可以通過右鍵菜單的「設成默認任務」,設置默認下載內容。
2、階段排名與大多數選股條件只需日線數據,所以如果您網速不快也不想用太多時間,只用下載「歷史數據」里「日線」部分就可以了。
一般分鍾線較大。
3、下載完畢後會自動導入到數據文件里。
b、「數據維護」在「數據整理」中可以清除掉混亂和錯誤的數據。
而在「數據刪除」中則可以將不需要的數據刪掉以釋放磁碟空間。
您需要根據您的需要先選擇市場,然後選擇數據整理的范圍、周期和需要刪除的內容。
c、「數據的導入、導出」在這里可以將本地已經存在的各種數據。
而在「數據刪除」中則可以將不需要的數據刪掉以釋放磁碟空間。
您需要根據您的需要先選擇市場,然後選擇數據整理的范圍、周期和需要刪除的內容。
c、「數據的導入、導出」在這里可以將本地已經存在的各種數據(行情數據、財務數據、資訊數據、其它數據)導出到指定目錄下。
您可以將導出的數據復制到其它的電腦上,然後導入,即可生成各類數據。
您只用選擇導入、導出文件所在的目錄就可以了。
在導出時系統會自動尋找目前軟體裝載的目錄,推薦使用這個目錄。
二、如何保存所有股票的分時數據
從所有的股票的分時數據都是有的,只是你沒有打開。
而最新的數據則要在軟體的系統功能里,每天通過盤後數據下載,你就有了所有股票的最新數據。
三、如何保存所有股票的分時數據
四、每日炒股數據咋下載
現在網路上有很多免費的股票軟體,如大智慧,下載一個,然後在裡面有選擇項,可以選擇有股市以來每一天的數據,但是現在一般都可以在線看了,所以沒有必要下載那麼復雜。
同時在關閉的這些軟體的時候,都會提示你選擇是不是下載當日的數據,點是就好了
五、如何保存所有股票的分時數據
從所有的股票的分時數據都是有的,只是你沒有打開。
而最新的數據則要在軟體的系統功能里,每天通過盤後數據下載,你就有了所有股票的最新數據。
『捌』 C語言題目——股票撮合系統,有什麼需要注意的么6個測試用例,第5個死都過不去
有空編寫這個,不如去編寫股票測試系統,建模,測試數據,完善數據模型,看成功率不是更好。 不好意思,答非所問。