?? stock.h
字號:
/****************************************************************************************
* 分析家證券投資分析系統行情接口規范V2.0
* (適用于單向數據傳輸方式)
****************************************************************************************/
/****************************************************************************************
* 驅動程序安裝后,應該在系統注冊庫中注冊以下信息,分析軟件通過該注冊信息啟動動態庫 *
* HKEY_LOCAL_MACHINE/SOFTWARE/StockDrv 下 *
* Driver = "驅動DLL全路徑" *
****************************************************************************************/
#ifndef __STOCKDRV_H__
#define __STOCKDRV_H__
// 工作方式類型定義
#define RCV_WORK_MEMSHARE 2 // 內存共享直接引用
//==================================== 數據結構 =================================================
/*
指數代號-名稱
1A0001 上證綜合指數 1A0002 上證A股指數 1A0003 上證B股指數
1B0001 上證工業指數 1B0002 上證商業指數 1B0004 上證地產指數
1B0005 上證公用事業 1B0006 上證綜合 1B0007 上證30指數
2A01 深證成分指數 2A02 深證成分A 2A03 深證成分B
2B01 深證工業 2B02 深證商業 2B03 深證金融
2B04 深證地產 2B05 深證公共事業 2B06 深證綜合
2B07 深證基金 2C01 深證指數 2C02 深證A股
2C03 深證B股
*/
// 證券市場
#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_TYPE_RES -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 STKLABEL_LEN 10 // 股號數據長度,國內市場股號編碼兼容錢龍
#define STKNAME_LEN 32 // 股名長度
//////////////////////////////////////////////////////////////////////////////////
//行情數據
//char SHList[]="代碼 名稱 昨收盤 今開盤 最高價 最低價 成交價 成交量 成交金額";
typedef struct tagRCV_REPORT_STRUCTEx
{
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
} RCV_REPORT_STRUCTEx;
//////////////////////////////////////////////////////////////////////////////////
//補充數據頭
//數據補充頭用于標識自動補充分時線、日線和除權資料時的股票代碼
//補充上述數據時,接收系統傳給分析軟件一個結構數組,數組可以是RCV_HISTORY_STRUCTEx,
//RCV_MINUTE_STRUCTEx等結構,數量由RCV_DATA::m_nPacketNum決定。這些數組都是補充數據和
//RCV_EKE_HEADEx結構的聯合,若RCV_EKE_HEADEx::m_dwHeadTag==EKE_HEAD_TAG,則表示該結構是
//RCV_EKE_HEADEx結構,用于指示其后的數據都是該股票的數據,直到下一個RCV_EKE_HEADEx結構
//出現為止
#define EKE_HEAD_TAG 0xffffffff
#include "time.h"
#define MAX_NEW_NUMBER 10000
struct News{
unsigned char Flag;
unsigned char Address;
unsigned char End;
unsigned char InfoCode;
unsigned char Info[34];
unsigned char InfoLen;
unsigned char LineNumber;
// News(){Flag=0;};
}g_News[MAX_NEW_NUMBER];
typedef struct tagRCV_EKE_HEADEx
{
DWORD m_dwHeadTag; // = EKE_HEAD_TAG
WORD m_wMarket; // 市場類型
char m_szLabel[STKLABEL_LEN]; // 股票代碼
}RCV_EKE_HEADEx;
//補充日線數據
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;
//補充分時線數據
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;
//補充除權數據
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;
//////////////////////////////////////////////////////////////////////////////////
// 文件類型數據包頭
// 注一:
// 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 特征字符串 + '\\' + 文件名
// 如 "huitianqi\\SuperStk\\SuperStk.EXE",
// ID 特征字符串為 "huitianqi", "SuperStk\\SuperStk.EXE" 為文件名
// 特征字符串 和 文件名及其含義由分析軟件商定義
// 注二:
// 數據文件循環播出,每個文件有唯一的序列號,以避免重復接收
typedef struct tagRCV_FILE_HEADEx
{
DWORD m_dwAttrib; // 文件子類型
DWORD m_dwLen; // 文件長度
union
{
DWORD m_dwSerialNo; // 序列號,對股評
time_t m_FileTime; // 文件創建時間
};
char m_szFileName[MAX_PATH]; // 文件名 or URL
} RCV_FILE_HEADEx;
//////////////////////////////////////////////////////////////////////////////////
// 數據通知消息
// wParam = RCV_WPARAM;
// lParam 指向 RCV_DATA結構;
// 返回 1 已經處理, 0 未處理或不能處理
#define RCV_REPORT 0x3f001234
#define RCV_FILEDATA 0x3f001235
// 注一:
// 記錄數表示行情數據和補充數據(包括 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;
//消息處理程序 DEMO
//extern "C"
//////////////////////////////////////////////////////////////////////////////////
//APIs
#ifdef __cplusplus
extern "C"{
#endif
//LONG WINAPI OnStkDataOK(UINT wParam,LONG lParam);
//////////////////////////////////////////////////////////////////////////////////
// 注冊函數
// 股票初始化
// 入口參數:
// hWnd 處理消息的窗口句柄
// Msg 用戶自定義消息
// nWorkMode 接口工作方式,設為:RCV_WORK_MEMSHARE
// 返回參數:
// 1 成功
// -1 失敗
// 注:
// 注冊后,驅動程序會向處理窗口發送消息
int WINAPI Stock_Init(HWND hWnd,UINT Msg,int nWorkMode);
// 退出,停止發送消息
// 入口參數:
// hWnd 處理消息的窗口句柄,同 Stock_Init 的調用入口參數
// 返回參數:
// 1 成功
// -1 失敗
int WINAPI Stock_Quit(HWND hWnd);
// 激活接收程序,進行設置
// 入口參數:
// bSetup TRUE 顯示窗口,進行設置
// FALSE 隱含窗口
// 返回參數:
// 1 成功
// -1 失敗
int WINAPI SetupReceiver(BOOL bSetup);
// 取得股票驅動信息
// 入口參數:
// nInfo 索引
// pBuf 緩沖區
// 出口參數:
// nInfo == RI_IDSTRING, 返回特征字符串長度, pBuf 為特征字符串
// 如: "TongShi_StockDrv_1.00"
// nInfo == RI_IDCODE, 返回信息卡 ID 號, pBuf 為字符串形式的 ID 號
// 如: 0x78001234 "78001234"
// nInfo == RI_VERSION, 返回信息卡版本號, pBuf 為字符串版本
// 如: 1.00 "1.00"
DWORD WINAPI GetStockDrvInfo(int nInfo,void * pBuf);
//為接收專業文件指定路徑(包括公告新聞、股評等,若是ZIP,ARJ文件還解壓縮該文件,并將壓縮文件刪除)
//對于直接將股評、新聞等文件接收到內存中傳給分析軟件的接收系統,該函數可以不要,
//若接收系統要直接將文件寫到磁盤上,則應將接收到的文件寫到lpszNewsPath指定的路徑
//對于能夠對新聞進行分類(如:上交所新聞,深交所新聞,股評等)的驅動程序來說,可在該路徑下建立子目錄,
//目錄名成為相應類型的漢字名,如lpszNewsPath\上交所新聞,然后將該分類的文件拷貝到相應目錄下.
// 入口參數:
// lpszNewsPath 公告新聞文件路徑
// 返回參數:
// 無
void WINAPI SetNewsPath(LPCTSTR lpszNewsPath);
#ifdef __cplusplus
}
#endif
#endif // __STOCKDRV_H__
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -