網際風的通視介面

來源:互聯網
上載者:User

網際風的通視介面,看說明文檔半天也看不明白,網上也沒有找到合適的內容,主要就是使用C#調用stock.dll,然後顯示資訊。有沒有人寫過類似的源碼,或者說一些具體步驟,不勝感激。附網際風通視介面規範:
****************************************************************************************
*
在通視卡規範基礎上,參照飛狐交易師介面規範3.0,進行擴充,即時行情增加漲跌停價;
*
內外盤;期貨行情的昨結算價和現結算價;增加補充5分鐘線、1分鐘線、分筆資料的支援
****************************************************************************************/

/****************************************************************************************
*
驅動程式安裝後,應該在系統註冊表中註冊以下資訊,分析軟體通過該註冊資訊啟動動態庫
*
HKEY_LOCAL_MACHINE/SOFTWARE/StockDrv 下

*
Driver  = "驅動DLL全路徑"
****************************************************************************************/

#ifndef __STOCKDRV_H__
#define __STOCKDRV_H__

#if _MSC_VER > 1000
#pragma once
#endif

typedef long time_t;

/////////////////////////////////////////////////////////////////////////////////////////

// 工作方式類型定義
#define RCV_WORK_SENDMSG
4
       // 相容標準圖文訊息處理模式
// 其他工作方式保留
//
訊息類型
#define RCV_REPORT
0x3f001234
#define RCV_FILEDATA
0x3f001235

//==================================== 資料結構 =================================================
// 證券市場
#define
SH_MARKET_EX
'HS'
// 上海
#define
SZ_MARKET_EX
'ZS'
// 深圳
#define
HK_MARKET_EX
'KH'
// 香港
#define
SQ_MARKET_EX
'QS'
// 上期
#define
DL_MARKET_EX
'LD'
// 大連
#define
ZZ_MARKET_EX
'ZZ'
// 鄭州
#define
JZ_MARKET_EX
'JZ'
// 中金所
#define
WP_MARKET_EX
'PW'
// 外盤
#define
ID_MARKET_EX
'DI'
// 國際指數
#define
WH_MARKET_EX
'WH'
// 外匯

// 檔案資料類型
#define
FILE_HISTORY_MIN1_EX
0xA003
// 補1分鐘K線資料(擴充)
#define
FILE_HISTORY_EX
0x0002
// 補日線資料
#define
FILE_HISTORY_MIN5_EX
0x0051
// 補5分鐘K線資料(擴充)
#define
FILE_MINUTE_EX
4
// 補分時線資料
#define
FILE_MINUTE_EX
5
// 補分筆線資料 (擴充)
#define
FILE_POWER_EX
6
// 補充除權資料
#define
FILE_FINANCE_EX
7
// 補充財務資料(擴充)

#define
FILE_BASE_EX
0x1000
// 基本資料檔案,m_szFileName僅包含檔案名稱
#define
FILE_NEWS_EX
0x1002
// 新聞類,類型由m_szFileName中子目錄名定
#define
FILE_HTML_EX
0x1004
// HTML檔案,m_szFileName為URL

#define
FILE_SOFTWARE_EX
0x2000
// 升級軟體

#define
FILE_SHAZQDATA_EX
0x3000
// 上海債券淨價交易

#define
FILE_TYPE_RES
-1
// 保留

// 訊息子類型
#define
News_Sha_Ex
2
// 上證訊息
#define
News_Szn_Ex
4
// 深證訊息
#define
News_Sqn_Ex
5
// 期貨訊息
#define
News_Fin_Ex
6
// 財經報道
#define
News_Unknown_Ex
-1
// 未知提供者

//Definition For nInfo of Function GetStockDrvInfo(int nInfo,void * pBuf);
#define
RI_IDSTRING
1
// 廠商名稱,返回(LPCSTR)廠商名
#define
RI_IDCODE
2
// 卡號
#define
RI_VERSION
3
// 驅動程式版本
#define
RI_SUPPORTEXTHQ
6
// 是否支援JSJ格式

#define
STKLABEL_LEN
10
// 品種代碼長度
#define
STKNAME_LEN
  
32
// 品種名稱  長度

//////////////////////////////////////////////////////////////////////////////////
//行情資料結構,支援期貨行情
typedef struct tagRCV_REPORT_STRUCTEx
{

WORD
m_cbSize;
// 結構大小

time_t
m_time;
// 交易時間(日曆時間)

WORD
m_wMarket;
// 股票市場類型

char
m_szLabel[STKLABEL_LEN];
// 股票代號,以'\0'結尾

char
m_szName[STKNAME_LEN];
      
// 股票名稱,以'\0'結尾

float
m_fLastClose;
      
// 昨收

float
m_fOpen;
      
// 今開

float
m_fHigh;
      
// 最高

float
m_fLow;
     
// 最低

float
m_fNewPrice;
   
// 最新

float
m_fVolume;
   
// 成交量

float
m_fAmount;
  
// 成交額

float
m_fBuyPrice[3];
// 申買價1,2,3

float
m_fBuyVolume[3];
// 申買量1,2,3

float
m_fSellPrice[3];
// 申賣價1,2,3

float
m_fSellVolume[3];
// 申賣量1,2,3

float
m_fBuyPrice4;
// 申買價4

float
m_fBuyVolume4;
// 申買量4

float
m_fSellPrice4;
// 申賣價4

float
m_fSellVolume4;
// 申賣量4

float
m_fBuyPrice5;
// 申買價5

float
m_fBuyVolume5;
// 申買量6

float
m_fSellPrice5;
// 申賣價5

float
m_fSellVolume5;
// 申賣量5

float
m_fLastAverage;
      
//期貨專用昨結算價(擴充)

float
m_fAverage;
   
//期貨專用今結算價(擴充)
} RCV_REPORT_STRUCTEx, *PRCV_REPORT_STRUCTEx;

//////////////////////////////////////////////////////////////////////////////////
//補充資料頭
//資料頭 m_dwHeadTag == EKE_HEAD_TAG
#define EKE_HEAD_TAG
0xffffffff

typedef struct
tagRCV_EKE_HEADEx
{

DWORD
m_dwHeadTag;
          // == EKE_HEAD_TAG

WORD
m_wMarket;
     
  // 市場類型

char
m_szLabel[STKLABEL_LEN];
  // 股票代號
}RCV_EKE_HEADEx,*PRCV_EKE_HEADEx;

//補充日線、5分鐘、1分鐘資料
typedef union tagRCV_HISTORY_STRUCTEx
{

struct

{

time_t
m_time;
//UCT

float
m_fOpen;
//開盤

float
m_fHigh;
//最高

float
m_fLow;
//最低

float
m_fClose;
//收盤

float
m_fVolume;
//量

float
m_fAmount;
//額

WORD
m_wAdvance;
//漲數,僅大盤有效

WORD
m_wDecline;
//跌數,僅大盤有效

};

RCV_EKE_HEADEx
m_head;
}RCV_HISTORY_STRUCTEx,*PRCV_HISTORY_STRUCTEx;

//補充分時線資料
typedef union tagRCV_MINUTE_STRUCTEx
{

struct{

time_t
m_time;
// UCT

float
m_fPrice;

float
m_fVolume;

float
m_fAmount;

};

RCV_EKE_HEADEx
m_head;
}RCV_MINUTE_STRUCTEx,*PRCV_MINUTE_STRUCTEx;

//補充除權資料
typedef union tagRCV_POWER_STRUCTEx
{

struct

{

time_t
m_time;
// UCT

float
m_fGive;
// 每股送

float
m_fPei;
// 每股配

float
m_fPeiPrice;
        // 配股價,僅當 m_fPei!=0.0f 時有效

float
m_fProfit;
// 每股紅利

};

RCV_EKE_HEADEx
m_head;
}RCV_POWER_STRUCTEx,*PRCV_POWER_STRUCTEx;

//////////////////////////////////////////////////////////////////////////////////
// 檔案類型資料包頭
//  注一:
//
m_wDataType == FILE_BASE_EX
//
m_dwAttrib = 股票證券市場,m_szFileName僅包含檔案名稱
//
m_FileTime = 基本面資料檔案建立日期
//  m_wDataType == FILE_NEWS_EX
//
m_dwAttrib = 訊息來源,m_szFileName 包含目錄的檔案名稱,目錄名為訊息來源
//
m_dwSerialNo = 序號
//
如:  "上交所訊息\\0501Z012.TXT","新蘭德\\XLD0001.TXT"
//  m_wDataType == FILE_HTML_EX
//
m_dwAttrib 保留, m_szFileName為URL
//
m_wDataType
== FILE_SOFTWARE_EX
//
m_dwAttrib 分析軟體類型, 用於初步判斷
//
m_szFileName 分析軟體 ID 特徵字串 + '\\' + 檔案名稱
//
如 "TongShi\\TS\\RECEIVE\\RECEIVE.EXE",
//
ID 特徵字串為 "TongShi", "TS\\RECEIVE\\RECEIVE.EXE" 為檔案名稱
//
特徵字串 和 檔案名稱及其含義由分析軟體商定義
//  注二:
//  資料檔案迴圈播出,每個檔案有唯一的序號,以避免重複接收
typedef struct tagRCV_FILE_HEADEx
{

DWORD
m_dwAttrib;
// 檔案子類型

DWORD
m_dwLen;
// 檔案長度

DWORD
m_dwSerialNo;
// 檔案序號

char
m_szFileName[MAX_PATH];
// 檔案名稱 or URL
} RCV_FILE_HEADEx,*PRCV_FILE_HEADEx;

//////////////////////////////////////////////////////////////////////////////////
//  資料通知訊息
//查詢方式通知訊息
//
wParam = MsgPara_StkData
有股票資料
//
wParam = MsgPara_File
有檔案資料檔案
//直接資料引用通知訊息
//
wParam = RCV_WPARAM;
//  lParam 指向 RCV_DATA結構;
//
返回 1 已經處理, 0 未處理或不能處理,目前該傳回值被忽略

// 注一:
//
  記錄數表示行情資料和補充資料(包括 Header)的資料包數,對檔案類型資料, = 1
// 注二:
//
  若 m_bDISK = FALSE, m_pData 為資料緩衝區指標
//
******** 資料共用,不能修改資料 **********
//
m_bDISK = TRUE,  m_pData 為該檔案的存檔檔案名稱,一般情況只有
//
升級軟體等大檔案用存檔方式
typedef struct tagRCV_DATA
{

int
      
m_wDataType;
// 檔案類型

int
      
m_nPacketNum;
// 記錄數,參見注一

RCV_FILE_HEADEx
        m_File;
// 檔案介面

BOOL
m_bDISK;
// 檔案是否已存檔的檔案

union

{

RCV_REPORT_STRUCTEx  * m_pReport;

RCV_HISTORY_STRUCTEx * m_pDay;

RCV_MINUTE_STRUCTEx  * m_pMinute;

RCV_POWER_STRUCTEx   * m_pPower;

void
     * m_pData;
// 參見注二

};
} RCV_DATA,*PRCV_DATA;

/* 訊息處理常式 DEMO(VC++)
LONG OnStkDataOK(UINT wParam,LONG lParam)
{

UINT wFileType = wParam;

RCV_DATA*
pHeader;

pHeader = (RCV_DATA *)lParam;

int nBufSize = pHeader->m_pReport[0].m_cbSize;//資料結構大小

PBYTE pBaseBuf = (PBYTE)&pHeader->m_pReport[0];//VC++。

//PBYTE pBaseBuf = (PBYTE)&pHeader->m_pReport[0]-2;//BCB需要減2。

switch( wFileType )

{

case RCV_REPORT:
// 即時行情

for(int i=0; i<pHeader->m_nPacketNum; i++)

{

RCV_REPORT_STRUCTEx & Buf = *(PRCV_REPORT_STRUCTEx)(pBaseBuf + nBufSize*i);
                        if(Buf.m_fLastClose*1000 <=0) continue;  //收盤價為零,可能這個品種目前沒有即時資料
                        if(Buf.m_szName == "上證指數") {;};// 從介面共用記憶體取出資料進行處理

//Buf.m_time/60;
                        //Buf.m_wMarket;
                         //Buf.m_szLabel;
                        //Buf.m_szName;
                        //Buf.m_fLastClose;

}

break;

case RCV_FILEDATA:
// 補K線資料

switch(pHeader->m_wDataType)

{

case FILE_HISTORY_EX:
// 補日線資料

for(i=0; i<pHeader->m_nPacketNum; i++)

{

pHeader->m_pDay ...

//資料處理

// 請編補日線、5分鐘線、1分鐘線的調用範例

}

break;

case FILE_HISTORY_MIN5_EX:
// 補5分鐘K線資料(擴充)

break;

case FILE_HISTORY_MIN1_EX:
// 補1分鐘K線資料(擴充)

break;

case FILE_MINUTE_EX:
// 補分時線資料

break;

case FILE_POWER_EX:
// 補充除權資料

break;

case FILE_BASE_EX:
// 錢龍相容基本資料檔案,m_szFileName僅包含檔案名稱

break;

case FILE_NEWS_EX:
// 新聞類,其類型由m_szFileName中子目錄名來定

break;

case FILE_HTML_EX:
// HTML檔案,m_szFileName為URL

break;

case FILE_SOFTWARE_EX:
// 升級軟體

break;

}

break;

default:

return 0;
// unknown data

}

return 1;
}
*/

/*訊息處理常式 DEMO(BCB C++ Build)

void __fastcall OnStkDataOK(TMessage & Msg)
{

        UINT wFileType = Msg.WParam;
        RCV_DATA * pHeader;

pHeader = (RCV_DATA *) Msg.LParam;

int nBufSize = pHeader->m_pReport[0].m_cbSize;//資料結構大小

PBYTE pBaseBuf = (PBYTE)&pHeader->m_pReport[0]-2;//BCB需要減2。

switch( wFileType )

{

case RCV_REPORT:
// 即時行情

for(int i=0; i<pHeader->m_nPacketNum; i++)

{

RCV_REPORT_STRUCTEx & Buf = *(PRCV_REPORT_STRUCTEx)(pBaseBuf + nBufSize*i);
                        if(Buf.m_fLastClose*1000 <=0) continue;  //收盤價為零,可能這個品種目前沒有即時資料
                        if(AnsiString(Buf.m_szName) == "上證指數") ShowMessage(AnsiString(Buf.m_szLabel));// 從介面共用記憶體取出資料進行處理

資料處理......

}

}
}

*/

//////////////////////////////////////////////////////////////////////////////////
//APIs
#ifdef __cplusplus
extern "C"{
#endif

//////////////////////////////////////////////////////////////////////////////////
// 註冊函數

// 股票初始化
// 入口參數:
//
hWnd
處理訊息的視窗控制代碼
//
Msg
使用者自訂訊息
//
nWorkMode
介面工作方式, 應等於 RCV_WORK_SENDMSG
// 返回參數:
//
1
成功

//
-1
失敗
int WINAPI
Stock_Init(HWND hWnd,UINT Msg,int nWorkMode);

// 退出,停止發送訊息
// 入口參數:
//
hWnd
處理訊息的視窗控制代碼,同 Stock_Init 的調用入口參數
//
返回參數:
//
1
成功

//
-1
失敗
int WINAPI
Stock_Quit(HWND hWnd);

//////////////////////////////////////////////////////////////////////////////////
// 行情介面      

// 取已接收到的股票總數
int WINAPI
GetTotalNumber();

// 由序號取股票資料(擴充)
// 入口參數:

//
nNo
序號
//
pBuf
存放股票資料的緩衝區
// 返回參數:
//
    NoStockData
無股票資料

// 注:
//
該函數提供股票資料的主要資料;分析軟體剛運行時,可以快速建立資料架構
int WINAPI
GetStockByNoEx(int nNo,RCV_REPORT_STRUCTEx * pBuf);

// 由股號取股票資料(擴充)
// 入口參數:

//
pszStockCode股票看板代號

//
nMarket
證券市場
//
pBuf
存放股票資料的緩衝區
// 返回參數:
//
    NoStockData
無股票資料

// 注:
//
該函數提供股票資料的主要資料;分析軟體剛運行時,可以快速建立資料架構
int WINAPI
GetStockByCodeEx(char * pszStockCode,int nMarket,RCV_REPORT_STRUCTEx * pBuf);

// 啟用接收程式,進行設定
// 入口參數:
//
bShowWindow
TRUE
顯示視窗,進行設定
//
FALSE
隱含視窗
// 返回參數:
//
1
成功
//
-1
失敗
int
WINAPI  SetupReceiver(BOOL bShowWindow);

//
取得股票驅動資訊
//
入口參數:
//
nInfo
索引
//
pBuf
緩衝區
//
出口參數:
//
nInfo == RI_IDSTRING,
返回特徵字串長度, pBuf 為特徵字串
//
如:
"TongShi_StockDrv_1.00"
//
nInfo == RI_IDCODE,
返回資訊卡 識別碼, pBuf 為字串形式的 識別碼
//
如:
0x78001234
  "78001234"
//
nInfo == RI_VERSION,
返回資訊卡版本號碼, pBuf 為字串版本
//
如:  1.00
  "1.00"

//
nInfo == RI_ERRRATE,
取通道誤碼,
//
nInfo == RI_STKNUM,
取上市股票總家數
DWORD WINAPI  GetStockDrvInfo(int nInfo,void * pBuf);

#ifdef __cplusplus
}
#endif

#endif // __STOCKDRV_H__

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.