?? stockdrv.h
字號:
/****************************************************************************************
* WIN95 股票驅動程序 *
* 西安交大數據廣播研究中心 *
* 1998.3.5 *
*****************************************************************************************/
/****************************************************************************************
* 在注冊庫的 HKEY_LOCAL_MACHINE/SOFTWARE/StockDrv 下 *
* Driver = "驅動DLL全路徑" *
* Provider= "TongShi" *
****************************************************************************************/
#ifndef __STOCKDRV_H__
#define __STOCKDRV_H__
/////////////////////////////////////////////////////////////////////////////////////////
// 以下是接口方式一,引用 DOS 方式接口,只提供行情接口,
// 補充數據及消息接口按接口方式二.
// 工作方式類型定義
#define RCV_WORK_SENDMSG 4 // 版本 2 建議使用的方式
// 其他工作方式保留
// 消息類型
#define RCV_REPORT 0x3f001234
#define RCV_FILEDATA 0x3f001235
#define TS_StockDrv_IdTxt "TongShi_StockDrv_2.00" // 通視信息卡特征串
//==================================== 數據結構 =================================================
// 證券市場
#define SH_MARKET_EX 'HS' // 上海
#define SZ_MARKET_EX 'ZS' // 深圳
#define HK_MARKET_EX 'KH' // 香港
// 文件數據類型
// 結構數組形式的文件數據
#define FILE_HISTORY_EX 2 // 補日線數據
#define FILE_MINUTE_EX 4 // 補分鐘線數據
#define FILE_POWER_EX 6 // 補充除權數據
#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_Fin_Ex 6 // 財經報道
#define News_TVSta_Ex 8 // 電視臺通知
#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_ERRRATE 4 // 取信道誤碼
#define RI_STKNUM 5 // 取上市股票總家數
#define RI_SUPPORTEXTHQ 6 // 是否支持JSJ格式
#define RI_ENABLEDZHTRANS 7 // 支持傳輸大智慧文件系統(tǒng)
#define RI_ENABLETS3FILE 8 // 支持文件傳輸
#define STKLABEL_LEN 10 // 股號數據長度,國內市場股號編碼兼容錢龍
#define STKNAME_LEN 32 // 股名長度
//////////////////////////////////////////////////////////////////////////////////
//國債凈價交易數據
typedef struct GzLxBINData {
WORD m_wMarket; // 股票市場類型
char m_szLabel[STKLABEL_LEN]; // 股票代碼,以'\0'結尾
DWORD m_LiXiDate; //開始計算利息的日期
double m_fMoney100; //每100元的利息
DWORD m_DayNum;; //利息計算天數
float m_fShowPrice; //票面價格
}GZLXBINDATA,*PGZLXBINDATA;
//////////////////////////////////////////////////////////////////////////////////
//行情數據
typedef struct tagRCV_REPORT_STRUCTEx//: public CObject
{
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; // 申買量5
float m_fSellPrice5; // 申賣價5
float m_fSellVolume5; // 申賣量5
} 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;
//補充日線數據
typedef union tagRCV_HISTORY_STRUCTEx
{
struct
{
time_t m_time; //UCT
int m_fOpen; //開盤
int m_fHigh; //最高
int m_fLow; //最低
int m_fClose; //收盤
int m_fVolume; //量
int m_fAmount; //額
int m_fBS;
int m_fME;
int m_fCG;
// 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;
typedef struct tagRCV_SHAGZ_STRUCTEx
{
WORD m_wMarket; // 市場類型
char m_szLabel[STKLABEL_LEN]; // 股票代碼
DWORD m_StartDate; //開始計算利息的日期 YYMMDD format
double m_fLiXi100RMB; //票面100員的
DWORD m_DayNum;
float m_fPrice;
}RCV_SHAGZ,*PRCV_SHAGZ;
//////////////////////////////////////////////////////////////////////////////////
// 文件類型數據包頭
// 注一:
// m_wDataType == FILE_BASE_EX
// m_dwAttrib = 股票證券市場,m_szFileName僅包含文件名
// m_FileTime = 基本面資料文件創(chuàng)建日期
// 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" 為文件名
// 特征字符串 和 文件名及其含義由分析軟件商定義
// 注二:
// 數據文件循環(huán)播出,每個文件有唯一的序列號,以避免重復接收
typedef struct tagRCV_FILE_HEADEx
{
DWORD m_dwAttrib; // 文件子類型
DWORD m_dwLen; // 文件長度
union
{
DWORD m_dwSerialNo; // 序列號,對股評
time_t m_FileTime; // 文件創(chuàng)建時間
};
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 為數據緩沖區(qū)指針
// ******** 數據共享,不能修改數據 **********
// 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
LONG OnStkDataOK(UINT wParam,LONG lParam)
{
union tagSrcStock DOS_StkBuf;
RCV_REPORT_STRUCTEx NEW_StkBuf;
PBYTE pDataBuf;
RCV_DATA Header;
RCV_DATA * pHeader;
DWORD dwFileLen;
int ok;
pHeader = (RCV_DATA *)lParam;
switch( wParam )
{
case RCV_REPORT: // 共享數據引用方式,股票行情
for(i=0; i<pHeader->m_nPacketNum; i++)
{
pHeader->m_pReport[i] ...
// 數據處理
}
break;
case RCV_FILEDATA: // 共享數據引用方式,文件
switch(pHeader->m_wDataType)
{
case FILE_HISTORY_EX: // 補日線數據
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;
}
*/
//////////////////////////////////////////////////////////////////////////////////
//APIs
#ifdef __cplusplus
extern "C"{
#endif
//////////////////////////////////////////////////////////////////////////////////
// 注冊函數
// 股票初始化
// 入口參數:
// hWnd 處理消息的窗口句柄
// Msg 用戶自定義消息
// nWorkMode 接口工作方式, 應等于 RCV_WORK_SENDMSG
// 返回參數:
// 1 成功
// -1 失敗
int WINAPI Stock_Init(HWND hWnd,UINT Msg,int nWorkMode);
// 退出,停止發(fā)送消息
// 入口參數:
// hWnd 處理消息的窗口句柄,同 Stock_Init 的調用入口參數
// 返回參數:
// 1 成功
// -1 失敗
int WINAPI Stock_Quit(HWND hWnd);
//////////////////////////////////////////////////////////////////////////////////
// 行情接口
// 取已接收到的股票總數
int WINAPI GetTotalNumber();
// 由序號取股票數據(擴展)
// 入口參數:
// nNo 序號
// pBuf 存放股票數據的緩沖區(qū)
// 返回參數:
// NoStockData 無股票數據
// 注:
// 該函數提供股票數據的主要數據;分析軟件剛運行時,可以快速建立數據框架
int WINAPI GetStockByNoEx(int nNo,RCV_REPORT_STRUCTEx * pBuf);
// 由股號取股票數據(擴展)
// 入口參數:
// pszStockCode股票代號
// nMarket 證券市場
// pBuf 存放股票數據的緩沖區(qū)
// 返回參數:
// NoStockData 無股票數據
// 注:
// 該函數提供股票數據的主要數據;分析軟件剛運行時,可以快速建立數據框架
int WINAPI GetStockByCodeEx(char * pszStockCode,int nMarket,RCV_REPORT_STRUCTEx * pBuf);
// 激活接收程序,進行設置
// 入口參數:
// bShowWindow TRUE 顯示窗口,進行設置
// FALSE 隱含窗口
// 返回參數:
// 1 成功
// -1 失敗
int WINAPI SetupReceiver(BOOL bShowWindow);
// 取得股票驅動信息
// 入口參數:
// nInfo 索引
// pBuf 緩沖區(qū)
// 出口參數:
// nInfo == RI_IDSTRING, 返回特征字符串長度, pBuf 為特征字符串
// 如: "TongShi_StockDrv_1.00"
// nInfo == RI_IDCODE, 返回信息卡 ID 號, pBuf 為字符串形式的 ID 號
// 如: 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__
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -