㈠ 請問用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伺服器,否則它就會返回一個錯誤信息。
㈡ c字頭股票漲跌規定
c字頭股票漲跌規定如下:
一、放寬漲跌幅限制
股票代碼是c開頭的表示是該股票上市後次日至第五日,一般在創業板的股票就會出現這個標志,有這個標志表示該股票在上市後前5個交易日是不受漲跌幅限制的。第六個交易日後沒有字母C,並且實施±20%的漲跌幅限制。
二、優化融資融券交易機制
創業板股票自上市首日起可以作為融資融券標的。被實施風險警示的,自該股票被實施風險警示當日起將其調整出標的證券范圍。
三、實施盤後定價交易
創業板股票交易收盤後按照時間優先的原則,以當日收盤價對盤後定價買賣申報逐筆連續撮合的交易方式。買入限價低於收盤價或賣出限價高於收盤價的盤後定價申報無效。
【拓展資料】
科創板和創業板的股票,除了字母C,還有其他字母,表示的意思各不相同。
字母U:表示發行人尚未盈利,要注意投資風險。
字母W:表示發行人具有表決權差異安排的,上市後不再具有表決權差異安排的,該特別標識就會被取消。
字母D:說明公司是以CDR(中國存托憑證)的形式登陸科創板。
如此前九號公司股票名稱後面後綴UWD,意思就是:九號公司的注冊地在外地,所以只能以CDR的形式登陸科創板,但財報上凈利潤沒有盈利,且有表決權差異安排。但2020年九號公司實現盈利,所以現階段九號公司的名稱後面不再有字母U。
c開頭的股票交易規則。
一、股票交易是股票的買賣。股票交易主要有兩種形式,一種是通過證券交易所買賣股票,稱為場內交易;另一種是不通過證券交易所買賣股票,稱為場外交易。
二、股票分析數據
(一)技術分析
技術分析是以預測市場價格變化的未來趨勢為目的,通過分析歷史圖表對市場價格的運動進行分析的一種方法。股票技術分析是證券投資市場中普遍應用的一種分析方法。
(二)基本分析
基本分析法通過對決定股票內在價值和影響股票價格的宏觀經濟形勢、行業狀況、公司經營狀況等進行分析,評估股票的投資價值和合理價值,與股票市場價進行比較,相應形成買賣的建議。
㈢ 在編程中如何能能獲得股票的數據 例如當前價,最高價,最低價,當前成交量等等
要看使和什麼數據了,每個軟體數據的存儲格式不同,有的還是加密存儲的(如指南針)。
以常見的錢龍數據來說吧(錢龍是最簡單的存儲格式)當前價,最高價,最低價,當前成交量等等都是以隨機文件存儲的長整型數據。下面是讀取錢龍數據的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;
㈣ 鑲$エ鏈堟暟鎹鐨勮$畻鏂規硶璇﹁В
浜屻佽偂紲ㄦ湀鏁版嵁鐨勮$畻鏂規硶
1.鏀剁洏浠風殑璁$畻鏂規硶
2.鎴愪氦閲忕殑璁$畻鏂規硶
3.娑ㄨ穼騫呯殑璁$畻鏂規硶
4.甯傚肩殑璁$畻鏂規硶
5.甯傜泩鐜囩殑璁$畻鏂規硶
6.甯傚噣鐜囩殑璁$畻鏂規硶
涓夈佽偂紲ㄦ湀鏁版嵁鐨勫簲鐢
1.鎶曡祫鑰呭備綍鍒╃敤鑲$エ鏈堟暟鎹榪涜屽垎鏋
2.浼佷笟濡備綍鍒╃敤鑲$エ鏈堟暟鎹榪涜岀粡钀ュ喅絳
鍥涖佽偂紲ㄦ湀鏁版嵁鐨勬敞鎰忎簨欏
1.鏁版嵁鏉ユ簮鐨勫彲闈犳
2.鏁版嵁澶勭悊鐨勫噯紜鎬
3.鏁版嵁鍒嗘瀽鐨勫㈣傛
鑲$エ鏈堟暟鎹鏄鎸囧逛竴鍙鑲$エ鍦ㄦ煇涓鏈堜喚鍐呯殑鐩稿叧鏁版嵁榪涜岀粺璁″拰璁$畻錛屽寘鎷鏀剁洏浠楓佹垚浜ら噺銆佹定璺屽箙銆佸競鍊箋佸競鐩堢巼銆佸競鍑鐜囩瓑銆傝偂紲ㄦ湀鏁版嵁鍙浠ュ府鍔╂姇璧勮呭拰浼佷笟浜嗚В鑲$エ鐨勫競鍦鴻〃鐜板拰緇忚惀鐘跺喌錛屾槸榪涜屾姇璧勫拰緇忚惀鍐崇瓥鐨勯噸瑕佷緷鎹銆
鑲$エ鏈堟暟鎹鐨勮$畻鏂規硶鍖呮嫭鏀剁洏浠風殑璁$畻鏂規硶銆佹垚浜ら噺鐨勮$畻鏂規硶銆佹定璺屽箙鐨勮$畻鏂規硶銆佸競鍊肩殑璁$畻鏂規硶銆佸競鐩堢巼鐨勮$畻鏂規硶銆佸競鍑鐜囩殑璁$畻鏂規硶絳夈備笅闈㈡垜浠灝嗚︾粏浠嬬粛榪欎簺璁$畻鏂規硶銆
鏀剁洏浠風殑璁$畻鏂規硶
鑲$エ鐨勬敹鐩樹環鏄鎸囧湪涓涓浜ゆ槗鏃ョ殑鏀剁洏鏃跺埢錛岃ヨ偂紲ㄧ殑涓絎斾氦鏄撶殑鎴愪氦浠鋒牸銆傝偂紲ㄦ湀鏁版嵁涓鐨勬敹鐩樹環鏄鎸囦竴涓鏈堝唴姣忎釜浜ゆ槗鏃ョ殑涓絎斾氦鏄撶殑鎴愪氦浠鋒牸鐨勫鉤鍧囧箋
鎴愪氦閲忕殑璁$畻鏂規硶
鑲$エ鐨勬垚浜ら噺鏄鎸囧湪涓涓浜ゆ槗鏃ュ唴璇ヨ偂紲ㄧ殑鎬繪垚浜ら噺銆傝偂紲ㄦ湀鏁版嵁涓鐨勬垚浜ら噺鏄鎸囦竴涓鏈堝唴姣忎釜浜ゆ槗鏃ョ殑鎴愪氦閲忕殑鎬誨拰銆
娑ㄨ穼騫呯殑璁$畻鏂規硶
鑲$エ娑ㄨ穼騫呮槸鎸囪偂紲ㄤ環鏍煎湪涓瀹氭椂闂村唴鐨勫彉鍖栧箙搴︺傝偂紲ㄦ湀鏁版嵁涓鐨勬定璺屽箙鏄鎸囪ヨ偂紲ㄥ湪涓涓鏈堝唴鐨勪竴涓浜ゆ槗鏃ョ殑鏀剁洏浠蜂笌璇ユ湀鐨勪釜浜ゆ槗鏃ョ殑鏀剁洏浠蜂箣闂寸殑鍙樺寲騫呭害銆
甯傚肩殑璁$畻鏂規硶
鑲$エ甯傚兼槸鎸囪ヨ偂紲ㄧ殑鎬誨競鍊礆紝鍗寵ヨ偂紲ㄧ殑嫻侀氳偂鏁頒箻浠ヨヨ偂紲ㄧ殑甯傚満浠鋒牸銆傝偂紲ㄦ湀鏁版嵁涓鐨勫競鍊兼槸鎸囪ヨ偂紲ㄥ湪涓涓鏈堝唴姣忎釜浜ゆ槗鏃ョ殑甯傚肩殑鎬誨拰銆
甯傜泩鐜囩殑璁$畻鏂規硶
鑲$エ甯傜泩鐜囨槸鎸囪ヨ偂紲ㄧ殑甯傚満浠鋒牸涓庤ヨ偂紲ㄦ瘡鑲℃敹鐩婄殑姣斿箋傝偂紲ㄦ湀鏁版嵁涓鐨勫競鐩堢巼鏄鎸囪ヨ偂紲ㄥ湪涓涓鏈堝唴姣忎釜浜ゆ槗鏃ョ殑甯傜泩鐜囩殑騫沖潎鍊箋
甯傚噣鐜囩殑璁$畻鏂規硶
鑲$エ甯傚噣鐜囨槸鎸囪ヨ偂紲ㄧ殑甯傚満浠鋒牸涓庤ヨ偂紲ㄦ瘡鑲″噣璧勪駭鐨勬瘮鍊箋傝偂紲ㄦ湀鏁版嵁涓鐨勫競鍑鐜囨槸鎸囪ヨ偂紲ㄥ湪涓涓鏈堝唴姣忎釜浜ゆ槗鏃ョ殑甯傚噣鐜囩殑騫沖潎鍊箋
鑲$エ鏈堟暟鎹鐨勫簲鐢
鑲$エ鏈堟暟鎹鍙浠ュ府鍔╂姇璧勮呭拰浼佷笟浜嗚В鑲$エ鐨勫競鍦鴻〃鐜板拰緇忚惀鐘跺喌銆傛姇璧勮呭彲浠ュ埄鐢ㄨ偂紲ㄦ湀鏁版嵁榪涜屽垎鏋愶紝閫夋嫨閫傚悎鑷宸辯殑鎶曡祫絳栫暐銆備紒涓氬彲浠ュ埄鐢ㄨ偂紲ㄦ湀鏁版嵁榪涜岀粡钀ュ喅絳栵紝鍒跺畾鍚堥傜殑緇忚惀璁″垝銆
鑲$エ鏈堟暟鎹鐨勬敞鎰忎簨欏
鍦ㄤ嬌鐢ㄨ偂紲ㄦ湀鏁版嵁鏃訛紝闇瑕佹敞鎰忎互涓嬪嚑鐐
1.鏁版嵁鏉ユ簮鐨勫彲闈犳с傝偂紲ㄦ湀鏁版嵁鐨勬潵婧愬簲璇ユ槸鍙闈犵殑錛屾潵鑷浜庢潈濞佹満鏋勬垨鍙淇¤禆鐨勭涓夋柟鏁版嵁騫沖彴銆
2.鏁版嵁澶勭悊鐨勫噯紜鎬с傚湪瀵硅偂紲ㄦ湀鏁版嵁榪涜屽勭悊鏃訛紝闇瑕佷繚璇佹暟鎹鐨勫噯紜鎬э紝閬垮厤鍥犳暟鎹澶勭悊涓嶅綋鑰屽艱嚧鍒嗘瀽緇撴灉鍑虹幇鍋忓樊銆
3.鏁版嵁鍒嗘瀽鐨勫㈣傛с傚湪瀵硅偂紲ㄦ湀鏁版嵁榪涜屽垎鏋愭椂錛岄渶瑕佷繚鎸佸㈣傘佷腑絝嬬殑鎬佸害錛岄伩鍏嶄富瑙傝噯鏂鍜屾儏緇鍖栫殑鍐崇瓥銆
鑲$エ鏈堟暟鎹鏄榪涜屾姇璧勫拰緇忚惀鍐崇瓥鐨勯噸瑕佷緷鎹銆備簡瑙h偂紲ㄦ湀鏁版嵁鐨勮$畻鏂規硶鍜屽簲鐢ㄦ妧宸э紝鍙浠ュ府鍔╂姇璧勮呭拰浼佷笟鏇村ソ鍦版妸鎻″競鍦烘満閬囷紝瀹炵幇鑷宸辯殑鎶曡祫鍜岀粡钀ョ洰鏍囥
㈤ 怎麼獲取股票數據c++ api
基本都是自己封裝CTP介面,程序端實現多賬戶、多策略的行情信號接收和委託提交/回報處理。也可以用 QuantBox/QuantBox_XAPI · GitHub 這樣的封裝的比較好、多介面統一API的項目直接整合到程序化平台的項目中使用。
通過程序介面用證券、期貨賬號登錄後訂閱品種的行情,證券、商品期貨、股指期貨、期權(全真模擬,9號就有實盤行情)都可以接收交易所的快照數據(例如商
品、股指都是500ms一個快照,數據結構也比較完整)。然後交易平台可以把行情數據廣播給各個策略程序,程序根據量化策略的邏輯判斷是否下單?掛單的方
式如何?掛單失敗是否追單?如何追單?
策略程序判斷要下單,則提交指令到程序化交易平台,平台把各個帳號各個品種中策略的邏輯持倉匯總為實際持倉,然後通過介面提交委託,並且處理委託回報。
行情數據一方面廣播給策略程序,一方面自己存資料庫,存下來的數據通過完整性檢測後,可以自己合成低頻率的數據,如
1分鍾、30分鍾、1小時、日度等等,這些數據會被用於策略回測,也可以用於市場微觀結構的觀察和研究,例如可以通過優化掛單方式來降低交易滑點。
Matlab可以做一些回測,實盤可能是比較不易用的。一般可以用C++, Java, C#來利用CTP程序化交易介面實現實盤平台,策略研究推薦用R做數據分析、統計、處理、可視化、策略分析、自動報告,用Rcpp(R調用C++)或者直接C++實現高性能回測,用單機並行或集群實現批量回測。