分享

策略为王数据接口源码

 禁忌石 2015-03-22
/****************************************************************************************+ x' L2 c% l" x( ~* {1 c
* 通视技术资料,未经允许不得公开 * ' n0 N  y8 B, U0 P
****************************************************************************************/

/****************************************************************************************
* WIN95/98 股票驱动程序 *6 V1 W, z2 A" K3 e6 l  i
* 西安交大数据广播研究中心 *
* 1998.3.5 *
*****************************************************************************************/" J; s& E! [4 j, c. S3 V/ y
) N. W. b+ s7 D" p, p
/****************************************************************************************
* 在注册库的 HKEY_LOCAL_MACHINE/SOFTWARE/StockDrv 下 *
* Driver = "驱动DLL全路径" *
* Provider= "TongShi" *0 C5 ]2 H" ~+ G9 S0 S) |1 p
* *
* 建议采用 LoadLibrary 和 GetProcAddress 及 FreeLibrary 的方式调用股票接收驱动 *
* 股票接收驱动的文件名及存放位置由 注册库 HKEY_LOCAL_MACHINE/SOFTWARE/StockDrv *8 i' I/ Y0 R: Q
* 的 Driver 指定 *
* *6 M/ b, a) `9 R' K4 Z1 [
* *
* *6 K' g$ J: r. e8 D  C9 ~. Q3 p
* ========================== 按字节对齐编译 =========================== *
* *( ?1 X  L2 D5 F
* *
****************************************************************************************/2 l: @0 T4 `4 e) Y  L# l
! W2 R6 ^, C* E2 V1 q
#ifndef __STOCKDRV_100_H__- X& }( S; l# u5 `1 U5 K- n
#define __STOCKDRV_100_H__
+ J  c9 @+ p: q0 [
// 工作方式类型定义
#define RCV_WORK_MEMSHARE 2 // 内存共享直接引用0 S) a  C1 m, z$ q$ b7 R
#define RCV_WORK_SENDMSG 4 // 版本 2 建议使用的方式 7 P# ?0 E6 p9 E) b9 ?2 P
// 其他工作方式保留

#define TS_StockDrv_IdTxt "TongShi_StockDrv_1.00" // 通视信息卡特征串8 D) }1 e% o* o! x. N: p
1 f# e- W+ w# G; |

// 证券市场$ i* ^0 q0 N# g% |! n
#define SH_MARKET_EX 'HS' // 上海4 y3 {2 |( B+ P$ ^+ `7 i# Q
#define SZ_MARKET_EX 'ZS' // 深圳
#define EB_MARKET_EX 'BE' // 深圳二板市场

#define HK_MARKET_EX 'KH' // 香港市场5 A! _. [+ g+ L( m3 c* F3 I
#define NQ_MARKET_EX 'QN' // 国内期货
#define WQ_MARKET_EX 'QW' // 国外期货9 R; }) M& i5 L$ l7 r+ v; u3 ]( }
) J- W3 ~) R* _" Z+ {
// 文件数据类型,结构数组形式的文件数据- |7 Q' t! `8 `/ _
- U4 ~7 J5 x1 U0 q
#define FILE_HISTORY_EX 2 // 补日线数据' Z( Z# D# [0 G2 M
#define FILE_MINUTE_EX 4 // 补分钟线数据
#define FILE_POWER_EX 6 // 补除权
#define FILE_HISTORY_MINUTE_EX 8 // 补历史五分钟数据
#define FILE_BASEINFO_EX 10 //补充全部股票财务数据
#define FILE_DISPARTBARGAINING_EX 12 //补分笔交易明细数据& G/ o5 A5 x& q7 b
#define FILE_STOCKLABELLIST_EX 14 //接收全部股票代码表
#define FILE_SYSTEMRUN_EX 16 //接收系统运行参数' W# n: o6 H5 ~6 @* n1 C+ f! }
#define FILE_INDEXATTRIBUTE_EX 18 //大盘红绿军 ! v- E9 l/ I* G* t
#define FILE_LOGINAUTH_EX 20 //客户登入授权; B" O5 V! M8 c1 S8 E8 l; [* h
#define FILE_TECHNICINDEX 22 //客户端技术指标
* V  r# S9 n% E) S: K9 g! E
#define FILE_BASE_EX 0x1000 // 钱龙兼容基本资料文件,m_szFileName仅包含文件名
#define FILE_NEWS_EX 0x1002 // 新闻类,其类型由m_szFileName中子目录名来定
#define FILE_HTML_EX 0x1004 //HTML 文件,m_szFileName为URL. @( a& Z5 a8 V1 Y* w1 m0 O
#define FILE_ALLNEWSINFO_EX 0x1006 //市场当天全部公告信息 $ ]! c+ G( d9 h; D
#define FILE_NOTIFY_EX 0x1008 //通知信息( X/ Q5 i$ L# s& n! [
#define FILE_TECHNIC_EX 0x1010 //服务端技术指标文件 
#define FILE_SOFTWARE_EX 0x2000 //升级软件 ! ?$ r+ \" q9 j. d
4 U$ m/ e! u1 l* x) E
#define FILE_TYPE_RES -1 // 保留

// 消息子类型
, T; |6 ]) l" z* `8 W9 h' m
#define News_Sha_Ex 2 // 上证消息
#define News_Szn_Ex 4 // 深证消息" g4 [2 E, e. D! l
#define News_Fin_Ex 6 // 财经报道' E9 A1 W) w: {  i: J/ H
#define News_TVSta_Ex 8 // 电视台通知
#define News_SzEb_Ex 10 // 深圳二板
#define News_Unknown_Ex -1 // 未知提供者
5 A1 V) X& r0 @7 B$ I" r
//Definition For nInfo of Function GetStockDrvInfo(int nInfo,void * pBuf);- V0 v7 m" e0 d' }4 M, W" ]
#define RI_IDSTRING 1 // 厂商名称,返回(LPCSTR)厂商名' @; m7 x2 d/ ?4 A& E7 c2 w
#define RI_IDCODE 2 // 卡号
#define RI_VERSION 3 // 驱动程序版本9 O5 R; t/ C, O' I4 A
#define RI_ERRRATE 4 // 取信道误码
#define RI_STKNUM 5 // 取上市股票总家数
#define RI_SUPPORTEXTHQ 66 w7 S* c3 M) e( n

#define STKLABEL_LEN 10 // 股号数据长度,国内市场股号编码兼容钱龙* \. {- g+ _2 q+ i* O& e8 x
#define STKNAME_LEN 32 // 股名长度/ e% |1 L* N, i& R
#define STKPINGYING_LEN 6

#pragma pack(1)5 M  b, B, q; T& L; j

//----------------------------------------系统运行参数结果-----------------------------------------------/ o1 z' h7 _! J+ c; b: X; j- q
typedef struct tagRCV_SYSTEMRUN_STRUCTEx
{
BYTE m_btBargainingTime[3]; //开盘分钟数 7 w; b. N/ }) k& h) \; w: u
BYTE m_btTodayInitialize; //大盘是否初始化 6 Q. ]0 t2 O7 v2 U5 j( ?
BYTE m_btCloseWork; //大盘是否收盘 8 j! v0 Y: |# ^0 I7 s4 j
long m_BargainingDate; //交易日期 
float m_fNewIndex[3]; //最新指数 # J% A, s- {* _+ y  V" \
float m_fVolume[3]; //最新成交量5 f. O  [3 N; w1 ~
float m_fAmount[3]; //最新成交金额. @. }& w+ i* G# ^1 ~
float m_fRedGreenArmy[3]; //大盘红绿军
}RCV_SYSTEMRUN_STRUCTEx;. j# A% F# ]2 h! ^5 ?/ J
//--------------------------------------------------------------------------
typedef struct tagRCV_LOGINAUTH_STRUCTEx  S- c! e9 ]* F* t9 A- ~
{
BOOL bAuthorizationState; 
DWORD dwAuthorizationPurview; 5 i) i4 \& u+ b0 U
}RCV_LOGINAUTH_STRUCTEx;* Q% m- t' ^& ?

//----------------------------------------股票代码表-------------------------------------------------------
typedef struct tagRCV_STKLABEL_STRUCTEx% g0 \3 m& z3 |) `7 A
{
WORD m_wMarket; //股票市场类型! R$ k6 \4 I. e) x6 L
WORD m_wPos; //在这一市场类型中股票排列位置 ! G! w6 u* R, y- w
char m_szLabel[STKLABEL_LEN]; //股票代码1 u# G( B- ?- k
char m_szName[STKNAME_LEN]; //股票名称
char m_szPingYing[STKPINGYING_LEN]; //股票名称拼音0 {+ H4 L# c4 ?
float m_fLastClose; //昨收, @% s' v- _; D% h+ F7 W+ X+ V: Z$ ^
float m_fAverageVolumn; //5天均量 
}RCV_STKLABEL_STRUCTEx;
//-----------------------------------------------------
typedef struct tagRCV_INDEXATTRIBUTE_STRUCTEx
{
time_t m_time; , ?5 d7 b& j: v" M- F
short sec5; 
short rp; 2 i+ ^* J" O* P# @
short dp; 
short rsn; " F) B/ I1 |' _" U$ k; k3 g
short dnn;
}RCV_INDEXATTRIBUTE_STRUCTEx;6 L: |* v7 I6 b  j0 J
//---------------------------------------------------------------------------------------
typedef struct tagRCV_BASEINFO_STRUCTEx' h* X% d2 s3 H' w
{; ~  W$ H5 K8 I& }- ^; {( _& e
char m_szLabel[STKLABEL_LEN]; //股票代码
float m_fZgb; //总股本(万股)! y6 H4 J7 P! u( }0 k: ?1 H" M
float m_fGjg; //国家股(万股)6 R$ a! X, t- U0 d; m& w% Q
float m_fFqrfrg; //发起人法人股(万股)( I* Y6 K% O  Z) [, O" Q& Q9 e+ v
float m_fFrg; //法人股(万股)
float m_fZgg; //职工股(万股)
float m_fGzAg; //公众A股(万股)$ Z# _( U0 O3 ?8 Q4 ^
float m_fLtAg; //流通A股(万股)5 f( l$ K' j! V, V. T2 [- b  W& l" ^
float m_fHg; //H股(万股)
float m_fBg; //B股(万股)
float m_fZpg; //转配股(万股)
float m_fZzc; //总资产(万元)
float m_fLdzc; //流动资产(万元)( f* d  V" d# q' j  ~$ `
float m_fCqtz; //长期投资(万元)
float m_fGdzc; //固定资产(万元)  }  k3 Q$ ^$ ]- f& \
float m_fWxzc; //无形资产(万元)2 O0 _3 f2 W4 N3 H2 m6 _1 `( Z3 A/ Y
float m_fLdfz; //流动负债(万元)& Y, E; C/ j  y0 y5 v
float m_fCqfz; //长期负债(万元)! |3 G7 j6 |5 H4 l1 r" x+ I0 @8 ?, n
float m_fGgqy; //股东权益(万元)! e; Y5 Z* b# B) [& C$ V. J
float m_fZbgjj; //资本公积金(万元)
float m_fYygjj; //盈余公积金(万元)
float m_fMgjz; //每股净值(元)
float m_fGdqybl; //股东权益比率(%)
float m_fMggjj; //每股公积金(元)
float m_fZyywsr; //主营业务收入(万元)
float m_fZyywlr; //主营业务利润(万元)
float m_fQtywlr; //其它业务利润(万元)
float m_fLrze; //利润总额(万元)$ t, a7 l( y$ O5 }5 r( _/ j% u
float m_fJlr; //净利润(万元)
float m_fWfplr; //未分配利润(万元)- O8 w: d- m2 y' N7 ~! c+ i
float m_fMgsy; //每股收益(元)
float m_fJzcsyl; //净资产收益率(%)
float m_fMgwfplr; //每股未分配利润(元)
float m_fMgjzc; //每股净资产(元). a1 ^0 {6 {& _! s- k7 e5 `, E
}RCV_BASEINFO_STRUCTEx;
//////////////////////////////////////////////////////////////////////////////////" {( k" {7 ]0 W& o6 w' ^% b% l* J) I
//补充数据头9 e  Q3 A! D4 c! ^) I' a: L
//数据头 m_dwHeadTag == EKE_HEAD_TAG 
#define EKE_HEAD_TAG 0xffffffff: k! z# \" ^* C' K

typedef struct tagRCV_EKE_HEADEx
{
DWORD m_dwHeadTag; // = EKE_HEAD_TAG
WORD m_wMarket; // 市场类型; Q3 r7 C& g9 \
char m_szLabel[STKLABEL_LEN]; // 股票代码( \- T7 b! [) n! b: Z
}RCV_EKE_HEADEx;

//-------------------------------------补充历史五分钟K线数据----------------------------------------; Q. p2 Q4 o+ s3 b
typedef union tagRCV_HISMINUTE_STRUCTEx; Q' a' E, e1 |3 Z5 N
{$ R3 E5 {4 W/ q3 u8 h& I4 D" s9 x
struct
{
time_t m_time; //UCT" c& i- C$ p, W' k! |; I! s
float m_fOpen; //开盘$ G; q- u# a6 j: A
float m_fHigh; //最高
float m_fLow; //最低
float m_fClose; //收盘
float m_fVolume; //量  Q3 O+ n  {: [5 D1 O
float m_fAmount; //额- g) g0 J& G# K# s
float m_fActiveBuyVol; //主动买量如没有计算m_fActiveBuyVol=09 Q- P  t% @0 v
};
RCV_EKE_HEADEx m_head;
}RCV_HISMINUTE_STRUCTEx;
//------------------------------------------------补明细数据-----------------------------------------------1 p8 u+ q9 Z/ d: e
typedef union tagRCV_DISPBARGAINING_STRUCTEx+ j+ ^, }% O  b, n1 E/ S2 [
{
struct1 I6 B( a# l/ g' B* z! C
{
time_t m_time; //成交时间 & x+ Z7 q  d2 c# O2 Y! K
float m_fNewPrice; // 最新
float m_fVolume; // 成交量,以股为单位,股的含义依股票类型定义
float m_fAmount; //成交额,以元为单位
float m_fBuyPrice[3]; // 申买价1,2,3
float m_fBuyVolume[3]; // 申买量1,2,3- A' A7 N+ E) a
float m_fSellPrice[3]; // 申卖价1,2,3
float m_fSellVolume[3]; // 申卖量1,2,3# ?6 ?: J! N+ x5 I1 q6 T) B
};
RCV_EKE_HEADEx m_head;
}RCV_DISPBARGAINING_STRUCTEx;
, z9 E$ {- G6 W' [: S) q; B
//////////////////////////////////////////////////////////////////////////////////
//行情数据: W: g* r, V9 P7 A3 w" o
//注:
// 某些字段可能为0,用上次的数据代替* X. N1 F; d6 \+ q: u. ?& j
typedef struct tagRCV_REPORT_STRUCTEx/ ?5 r- _1 {$ A+ m
{
WORD m_cbSize; // 结构大小
time_t m_time; // 交易时间, r! L( q$ \: C  U! s
WORD m_wMarket; // 股票市场类型9 q2 H) V! D( g# R
char m_szLabel[STKLABEL_LEN]; // 股票代码,以'\0'结尾
char m_szName[STKNAME_LEN]; // 股票名称,以'\0'结尾) R8 A8 P5 d  @6 k1 I/ b. _; |: B
# p: D/ g: L* A- t/ a
float m_fLastClose; // 昨收
float m_fOpen; // 今开/ U0 e  h- k6 u1 K
float m_fHigh; // 最高$ I  x9 p* g4 h; r
float m_fLow; // 最低
float m_fNewPrice; // 最新
float m_fVolume; // 成交量,以股为单位,股的含义依股票类型定义; Q3 w/ ~0 E: }2 l
float m_fAmount; // 成交额,以元为单位( c( w$ p# w: p' ]3 F+ c& X
) C( r3 n" V! V; [8 k
float m_fBuyPrice[3]; // 申买价1,2,3$ B+ _& Q' Q8 X! M
float m_fBuyVolume[3]; // 申买量1,2,38 b* A; r4 _1 [5 S; w
float m_fSellPrice[3]; // 申卖价1,2,38 L8 _4 Q6 s: s. a& v+ ^
float m_fSellVolume[3]; // 申卖量1,2,3


float m_fBuyPrice4; // 申买价4
float m_fBuyVolume4; // 申买量4( X% B6 J, O3 q
float m_fSellPrice4; // 申卖价4
float m_fSellVolume4; // 申卖量4/ T$ g" Q$ a& X, x+ _+ W* v
- s2 a& j2 D7 Y. ?) X
float m_fBuyPrice5; // 申买价5
float m_fBuyVolume5; // 申买量5: Q1 w3 N0 b0 `# ^; P9 W
float m_fSellPrice5; // 申卖价5
float m_fSellVolume5; // 申卖量5

} RCV_REPORT_STRUCTEx;( D" c' f' U# C/ N; y


//============================旧结构==============7 M$ [# i5 l& I* r# x% O  L
typedef struct tagRCV_REPORT_STRUCTEx_OLD7 \( e( D7 R8 H2 t6 a7 x9 B& C
{
WORD m_wMarket; // 股票市场类型3 O+ I0 Z8 Y) G! D
char m_szLabel[STKLABEL_LEN]; // 股票代码,以'\0'结尾" g7 s% H9 g4 o$ v0 H7 e
char m_szName[STKNAME_LEN]; // 股票名称,以'\0'结尾; h9 s, @+ t0 v' \. O2 k: ^7 F
, P" r" z( t2 d" f! M% n
float m_fLastClose; // 昨收/ p; N5 E4 }  Y+ H
float m_fOpen; // 今开6 ^9 o/ V. J& e
float m_fHigh; // 最高0 D; [6 ?' h. c. g+ s  H% x
float m_fLow; // 最低, o! ?" p; J" k2 M# g
float m_fNewPrice; // 最新; s2 ?1 P! Q. @$ u7 [
float m_fVolume; // 成交量,以股为单位,股的含义依股票类型定义
float m_fAmount; // 成交额,以元为单位# X+ h1 G8 F; J7 m
  m5 L( x( i0 Z: ?$ `8 Z
float m_fBuyPrice[3]; // 申买价1,2,3: p! B% I% ^8 B9 J; w% H8 w" P
float m_fBuyVolume[3]; // 申买量1,2,3
float m_fSellPrice[3]; // 申卖价1,2,36 f& y% h+ l: e: U  z
float m_fSellVolume[3]; // 申卖量1,2,31 q5 x$ a, D4 X8 B/ P% J& W3 ~
} RCV_REPORT_STRUCTEx_OLD;, }, c8 ^; u/ V7 I1 G  o# w5 ~
//============================旧结构===================( a1 j0 A# Y3 A' m3 G
//--------------------------------宽带行情数据结构-------------------------------------------------------3 _/ u1 `- Z% Y& I* n6 V
typedef struct tagRCV_WIDOFEREPORT_STRUCTEx
{
RCV_REPORT_STRUCTEx *pMarketReport;. `+ _5 [0 f. O
float m_fActiveBuyVolumn; //主动买入量 ) }4 l/ N9 N  f! G8 K
float m_fConsignTotalBuyVolumn; //委托总买量 
float m_fConsignTotalSellVolumn; //委托总卖量. {: q3 g% N5 r- W! R+ d4 a
}RCV_WIDOFEREPORT_STRUCTEx;$ ~" `) c: Y4 i  O* G

// 补充日线数据. ~/ `. U9 y' }4 j/ v/ v
// 注:
// 每一数据结构都应通过 m_time == EKE_HEAD_TAG,判断是否为 m_head,然后再作解释6 x! r7 }2 b1 T8 ~- Y* U* E
typedef union tagRCV_HISTORY_STRUCTEx
{2 ]& ?' ]3 H* n
struct
{
time_t m_time; // UCT
float m_fOpen; // 开盘
float m_fHigh; // 最高; P5 a# C/ G- y! l; w1 M
float m_fLow; // 最低+ c' S) f# a. f( @6 C' D
float m_fClose; // 收盘
float m_fVolume; // 量! i+ g' L* q' X* b: s
float m_fAmount; // 额
union7 ?: h: |- _8 r, l) S' a3 c$ ^' v4 P
{) @3 Q& X# f6 x+ B- o
struct. e' ~3 P( W2 K
{8 h  L  `! s6 B6 a+ u  D) T' W+ D
WORD m_wAdvance; // 涨数,仅大盘有效2 W  u. j9 N6 y$ a8 A
WORD m_wDecline; // 跌数,仅大盘有效
};. e. J- y, f4 I$ o. @* x" d
float m_fActiveBuyVol; // 主动买量5 q$ y/ v) }+ m9 |
};/ I' \" _* x$ Q% z  ?, P; v
};
RCV_EKE_HEADEx m_head;
} RCV_HISTORY_STRUCTEx;
. e9 ]" [: j" I/ E* Z
// 补充分时线数据
// 注:
// 每一数据结构都应通过 m_time == EKE_HEAD_TAG,判断是否为 m_head,然后再作解释! P  h4 D$ t( D' H  y6 ]% w
typedef union tagRCV_MINUTE_STRUCTEx
{
struct{
time_t m_time; // UCT
float m_fPrice;
float m_fVolume;
float m_fAmount;& d/ S; m' D+ \: ]. c
};
RCV_EKE_HEADEx m_head; 
} RCV_MINUTE_STRUCTEx;6 Y- J: g$ c' T5 Y

// 补充除权数据结构
typedef union tagRCV_POWER_STRUCTEx9 ~% R2 z1 _/ W' N; |( R8 j
{, }' Z+ S* e, a" [
struct
{
time_t m_time; // UCT
float m_fGive; // 每股送2 E3 G9 ?3 S, X' F6 v, C! d9 |
float m_fPei; // 每股配" c  o/ C2 u% M4 L6 q
float m_fPeiPrice; // 配股价 % p$ }* y: d6 W/ J( x* d+ r$ ^
float m_fProfit; // 每股红利* k6 _" V: y2 w$ [7 n4 a
};
RCV_EKE_HEADEx m_head;
} RCV_POWER_STRUCTEx;/ |, y1 p9 S1 v. T) ~

//////////////////////////////////////////////////////////////////////////////////4 C6 p; A" `; v- g1 `; f: r' `) C
// 文件类型数据包头: D* [8 i& o) v( X1 d
// 注一:
// m_wDataType == FILE_BASE_EX
// m_dwAttrib = 股票证券市场,m_szFileName仅包含文件名
// m_FileTime = 基本面资料文件创建日期
// m_wDataType == FILE_NEWS_EX
// m_dwAttrib = 消息来源,m_szFileName 包含目录的文件名,目录名为消息来源' ]& O  X' E9 ~3 h+ x
// m_dwSerialNo = 序列号+ Q8 H, q) w" }4 y
// 如: "上交所消息\\0501Z012.TXT","新兰德\\XLD0001.TXT"
// 注二:
// 数据文件循环播出,每个文件有唯一的序列号,以避免重复接收0 O& Y% e% H- h: Z+ H) W; x6 U
typedef struct tagRCV_FILE_HEADEx3 {! b1 n: r, M/ ?" `: F: v( ?/ a
{
DWORD m_dwAttrib; // 文件子类型
DWORD m_dwLen; // 文件长度
union {/ w: }, V: R: s2 ~3 x1 f
DWORD m_dwSerialNo; // 序列号,对股评
time_t m_FileTime; // 文件创建时间
};( u$ Y8 E4 {, O1 h9 _# R
char m_szFileName[_MAX_PATH]; // 文件名 or URL" h+ M; w# |. S9 J5 o0 b
} RCV_FILE_HEADEx;

//////////////////////////////////////////////////////////////////////////////////
// 数据通知消息8 C! o1 w# z/ e, I# N/ }5 X0 n& f% ?
// wParam = RCV_WPARAM;
// lParam 指向 RCV_DATA结构;) g+ a8 M7 L! A  G( Z* w) {5 h; O4 a
// 返回 1 已经处理, 0 未处理或不能处理,目前该返回值被忽略" @: @. u& j3 x) h/ u4 f8 x: F* Y
5 C/ K& |8 u# M- b  o  M% m0 f
4 c& d3 ^2 D/ i4 [( \" J8 |' g
6 f& g* @' F1 _$ q* w& b* F& Q
#define RCV_REPORT 0x3F001234
#define RCV_FILEDATA 0x3F001235
1 M. e/ b+ O1 k- F0 Q  \% w
6 G) C% U# I- Q& q* T2 Y
  o# Q5 \. ~! ?6 n; Y/ l

// 注一:
// 记录数表示行情数据和补充数据(包括 Header)的数据包数,对文件类型数据, = 17 z0 y; k8 @6 I) R7 c+ o8 R
// 注二:
// 若 m_bDISK = FALSE, m_pData 为消息股评等数据缓冲区指针5 u5 {% q& `8 U" @$ D# C4 _: a
//
// ******** 数据共享,不能修改数据 **********
//
// m_bDISK = TRUE, m_pData 为该文件的存盘文件名,一般情况只有7 D4 ?) \" G& u0 C
// 升级软件等大文件用存盘方式
typedef struct tagRCV_DATA
{
int m_wDataType; // 文件类型
int m_nPacketNum; // 记录数,参见注一
RCV_FILE_HEADEx m_File; // 文件接口; ], |, Z. [! j, ^3 }+ I
BOOL m_bDISK; // 文件是否已存盘的文件9 Q. a% ]+ v) z% L- `# l7 g
union8 L8 ~/ \6 h6 M1 G
{2 o0 l$ R( j8 A* X/ e
RCV_REPORT_STRUCTEx *m_pReport; //行情数据
RCV_WIDOFEREPORT_STRUCTEx *m_pWideReport; //宽带版行情数据 ) u. B! w8 a7 n2 f2 D: m0 E) a
RCV_HISTORY_STRUCTEx *m_pDay; //日线数据 
RCV_MINUTE_STRUCTEx *m_pMinute; //补当天分时数据 $ X/ V9 K' R( Z- b! r. ~
RCV_POWER_STRUCTEx *m_pPower; //除权数据
RCV_DISPBARGAINING_STRUCTEx *m_pDispBargaining; //明细数据+ _& B3 }# J5 ?: i+ s, L
RCV_BASEINFO_STRUCTEx *m_pBaseInfo; //财务数据
RCV_STKLABEL_STRUCTEx *m_pStkLabel; //代码对照表0 P6 T# x  Q2 v4 N0 Y0 ^( J
RCV_HISMINUTE_STRUCTEx *m_pHisMinute; //补历史五分钟线" M8 k& k/ k, z
RCV_SYSTEMRUN_STRUCTEx *m_pSystemRun; //系统运行参数
RCV_INDEXATTRIBUTE_STRUCTEx *m_pIndexAttribute; //大盘红绿军 
RCV_LOGINAUTH_STRUCTEx *m_pLoginAuth; //返回授权状态 8 S5 v% d1 A: h* {' ?
void *m_pData; //文件内存指针 
};5 ^5 b7 N6 q5 D% E: b$ U
} RCV_DATA;( n, i% e: @7 X
# h4 j# D- h0 m8 B! X9 W1 f- m
& V! |9 p+ b/ T; j# k9 |
// ===================== 飞狐交易师 =================================

typedef struct tagFOX_DATA9 p. p' n' I0 p; T/ \$ D
{5 |$ R' H" h+ \4 j; B
DWORD m_dwFlag;% X' |/ H( t5 j& Q! m" f
DWORD m_dwType;
int m_nCount;
} FOX_DATA;
" m( t- }9 f  E0 s: S. p. `' D
//==================同网络通讯层接口总数据到达结构=====================* N( z- d. G/ Q% u6 L" _
typedef struct RCV_COMMINTERFACE_STRUCTEx" |6 f. ^, Y* l4 e; g% ?+ e, C* w
{
RCV_DATA *m_pRcvData; //行情传送数据: t+ K& ~8 u5 J' k1 k
DWORD m_dwTransEnvironment; //行情传送环境数据 , f8 I" v, i( v" j
} RCV_COMMINTERFACE_STRUCTEx;2 P2 O1 T& H: t! l. J( {

////////////////////////////////////////////////////////
//客户端应用层数据请求部分
//
5 T. v6 ~1 u4 q; d( P" v2 |8 _
typedef enum StockType
{
SHZS = 0, //上证指数 
SHAG = 1, //上证A股 ' l6 t  B( Q/ `. M5 |6 V
SHBG = 2, //上证B股 , t. @+ d% x$ s: v" ~; ?
SZZS = 3, //深圳指数
SZAG = 4, //深圳A股
SZBG = 5, //深圳B股5 u3 s7 E. S2 }$ K6 S
SHZQ = 6, //上证债券. m, ^8 E7 r  f  c; O' _  B( x( `$ m
SZZQ = 7, //深圳债券/ c. i6 \6 H' a0 m3 y
SHJIJIN = 8, //上证jijin - d4 l# ]5 I$ k9 {* k
SZJIJIN = 9, //深证jijin * a+ X% h) G6 ?
EBZS = 10, //二板指数 0 b  p9 A! C( p  l0 _! Y1 C5 h5 x
EBAG = 11, //二板股票
STKTYPE = 12, //板块指数 
CHOOSESTK = 20, //自选股 
QBGP = 30, //全部股票3 p- e! z4 f  x
typeSHRight = 0x14, // 上海权证
typeSZRight = 0x44, // 深圳权证  V  n/ W0 A$ l3 F: L
};

//---------------------------------------------------------------------------1 h9 Z- q! n' [4 t
typedef enum ClientTransmitAttributes{) }% n0 ~5 K8 J" V6 E4 z
LoginAuthorization=0, //登入授权 
SystemRunAttribute, //系统运行属性 
InitStockCodeList, //取得初始化全部股票代码数据 
IndexRealtimeData, //取得某一大盘指数即时行情数据1A0001、2A01 
StockRealtimeData, //取得某一股票即时行情数据% I1 X0 D# R& v( T
StockMinuteData, //取得某一股票当天分钟数据
StockRealtimeDataKLine, //取得某一股票在K线界面即时行情数据
StockDisPartData, //取得某一股票分笔明细数据
StockTypesBaseRealTimeData, //取得某一类股票基本行情数据 某一类股票全部最高、最低、开盘数据 
StockTypesRealTimeMarketData, //取得某一类股票行情数据 某一类股票全部最新、成交量、金额
StockTypesRealTimeMarketWithMinute, //取得某一类股票分时行情数据 某一分钟全部股票分时数据
HistoryDayLineData, //用于表示历史日线数据 4 g2 w! |" I" t- D
HistoryMinuteLineData, //用于表示历史分时数据 0 R& x2 h2 W2 [5 M
HistoryDisPartBargainingData, //用于表示历史明细数据: E0 Q9 K8 X& a# s
WideExRightData, //用于表示除权数据) B$ X1 B* ~; ^
WideFinancingData, //用于表示财务数据
WideStockBaseInfo, //用于表示个股资料
WideShInfomation, //用于表示上证公告5 d6 ^8 M5 g& z. f
WideSzInfomation, //用于表示深证公告 
WideEbInfomation, //用于表示二板公告 * ^* {% k  [/ Y+ @$ R* b
WideZjInfomation, //用于表示财经报道, z! W, V9 o1 H& H' e5 \! ?
WideTechnicIndex, //用于表示技术指标 ! T7 @/ ]) c1 h
WideNotifyInfomation //用于表示通知信息# g: U/ z0 O  X
};
typedef struct tagTransmitStockAttribute
{! L! L7 l+ x3 J
WORD m_wMarket; //股票市场类型) L  s% u- |; l2 H" n% G9 v
char m_szTransmitStockLabel[8]; //传送股票代码
DWORD m_dwTransmitCounts; //表示记录数 
}TransmitStockAttribute, *PTransmitStockAttribute; //传送股票属性指针3 R4 l* U: N& s" N7 A# @* K9 C
//========================================
typedef struct tagTRANS_PACKAGE_STRUCTEx; D, T- H+ T/ c6 N* d& ~+ j' s% O
{
ClientTransmitAttributes m_TransmitType; //客户请求数据包类型 
DWORD m_dwTransmitStockType; //用于表示板块类型 
union
{- ^2 T$ t, ?# ?; @2 P
struct1 ]/ _' R6 c5 M, Q
{
TransmitStockAttribute *m_pTransmitStockAttribute;
DWORD m_dwTransmitStockCount; //表示传送股票数
};/ z* h, |# Y3 ?3 M: d
DWORD m_dwTransmitStockTypeCounts; //表示记录数,用于板块. O6 B* _. r8 H3 o' W# _0 X
};1 C5 t  [" V" e1 `( `
} TRANS_PACKAGE_STRUCTEx;$ _5 n+ ]; I) h0 j( B
/*结构说明:m_TransmitType用于表示客户端数据请求包类型
m_dwTransmitStockType用于表示板块传送: k; ?, r, b# \4 {$ N9 o9 [
m_dwTransmitStockType== SHZS表示上证指数 
m_dwTransmitStockType== SHAG,表示上证A股 & n! Z$ @  u5 X+ C/ |' S7 {: j; b
m_dwTransmitStockType==SHBG,表示上证B股 
m_dwTransmitStockType==SHZQ表示上证债券: n! i! V1 r! t" N
m_dwTransmitStockType==SZZS表示深圳指数
m_dwTransmitStockType==SZAG,表示深圳A股
m_dwTransmitStockType==SZBG,表示深圳B股
m_dwTransmitStockType==SZZQ表示深圳债券# [& l0 {2 w6 I5 J$ [7 Z) K. \# M
m_dwTransmitStockType==EBZS表示二板指数 
m_dwTransmitStockType==EBAG,表示二板股票
其它表示单一股票或多股票传送
m_pTransmitStockAttribute为结构数组指针,用于表示单一股票或多股票数据请求说明% S* o3 J/ \9 l( u# G% C+ j  l
其中m_szTransmitStockLabel为股票代码,m_dwTransmitCounts表示传送数说明,在不同类型数据传送中将表示不同含义* h7 Q" W4 ^' @
m_dw TransmitStockCount为表示股票个数6 S3 f& T( ^, k- v: D6 E1 @
m_dwTransmitStockTypeCounts用于表示板块传送时,传送数说明。& _1 u1 R7 V; L4 g
*/' L- H- ^! l5 R% n

/* 消息处理程序 DEMO. v- @6 ^  s7 e1 Q
LONG OnStkDataOK(UINT wParam,LONG lParam)/ ^# g% Q: e0 r8 }9 v
{
RCV_DATA * pHeader;
int i;& [5 m! q2 ?- G+ ^8 ?' [& I6 f, c
1 H& k6 a7 V, s7 S2 O7 C
pHeader = (RCV_DATA *)lParam;

// 对于处理速度慢的数据类型,最好将 pHeader->m_pData 指向的数据备份,再作处理( M' e" |. Q* B+ v, j7 S4 V  Z
4 c3 `8 d$ V8 e( z2 }; _" P& E
switch( wParam )
{4 L. U; u, p6 F
case RCV_REPORT: // 共享数据引用方式,股票行情' s: K+ _% j/ W& g) V
for(i=0; im_nPacketNum; i++)- o8 F4 H1 w$ `
{
pHeader->m_pReport ...
// 数据处理
}" K2 h! i* ^* s; n8 x' E
break;7 @1 c/ K0 W2 S, X

case RCV_FILEDATA: // 共享数据引用方式,文件
switch(pHeader->m_wDataType)
{0 ~" u  t2 P; q! y. j
case FILE_HISTORY_EX: // 补日线数据! w. }& ?: ^  I# q
break;0 p# _) U  K3 s) W! u$ T; g! A2 r1 d# ]

case FILE_MINUTE_EX: // 补分钟线数据
break;( {& f& C0 m5 B7 p& z% l

case FILE_BASE_EX: // 钱龙兼容基本资料文件,m_szFileName仅包含文件名
break;/ U" Z' D+ v+ e# n5 c6 j, M
3 }% y( y3 w. u+ r
case FILE_NEWS_EX: // 新闻类,其类型由m_szFileName中子目录名来定
break;8 h( _' Z! |/ T. q
}
break;& ^! B$ ]- C0 P+ s3 @( @) C  U
# E, D3 H& e: y. k2 E: H/ f2 O
default:% k# Z+ ]& b1 o- Z
return 0; // unknown data7 J9 h2 E! S5 M
}4 L7 T0 n4 r* E- {9 [( _
return 1;: Y$ P. K" Z2 u8 J" q# B. I& R
}
*/
0 ?. v, Z4 P* q
//////////////////////////////////////////////////////////////////////////////////
//APIs/ D* R2 q  x& I% a4 E
#ifdef __cplusplus7 @* w  k4 h# U# Z* A  f
extern "C"{% C" \5 k3 @  ]7 o! h
#endif
4 D/ b/ P0 B, C* W; m4 I" c
//////////////////////////////////////////////////////////////////////////////////: b2 a4 X0 b6 z' U' F$ ]
// 注册函数: p/ h( x8 K$ S" g6 p
5 ]/ V. [* y8 ?7 x( t! A( ^: ~
// 股票初始化
// 入口参数:, a7 y" }% c2 |( ~1 V# r( R. h
// hWnd 处理消息的窗口句柄
// Msg 用户自定义消息6 h8 l, b2 ^* Z  K+ l
// nWorkMode 接口工作方式,目前只能为 RCV_WORK_MEMSHARE
// 返回参数:) f% ?, u1 Y0 E# x
// 1 成功
// -1 失败
// 注:
// 注册后,驱动程序会向处理窗口发送消息; 若不注册,通过查询方式亦可取得数据
// 若股票接收没启动,则启动股票接收程序
int WINAPI Stock_Init(HWND hWnd,UINT Msg,int nWorkMode);: z) o8 U7 h5 h/ x2 `  M/ @* {1 K

// 退出,停止发送消息
// 入口参数:
// hWnd 处理消息的窗口句柄,同 Stock_Init 的调用入口参数
// 返回参数:
// 1 成功 
// -1 失败  [0 F* ^7 g* P( Y8 e
int WINAPI Stock_Quit(HWND hWnd);
4 \& l1 ^* s: _5 \
//////////////////////////////////////////////////////////////////////////////////
// 行情接口 

// 取已接收到的股票总数
int WINAPI GetTotalNumber(); 

// 由序号取股票数据(扩展)
// 入口参数: 
// nNo 序号
// pBuf 存放股票数据的缓冲区
// 返回参数:
// NoStockData 无股票数据 
// 注:
// 该函数提供股票数据的主要数据;分析软件刚运行时,可以快速建立数据框架
int WINAPI GetStockByNoEx(int nNo,RCV_REPORT_STRUCTEx * pBuf); - |/ i5 n3 y0 `. K. ]

// 由股号取股票数据(扩展)
// 入口参数: * C0 ?7 j1 h* z4 [, v
// pszStockCode股票代号 8 Y5 C- r) t% U  u8 l7 E2 M
// nMarket 证券市场
// pBuf 存放股票数据的缓冲区6 O7 c5 t5 T. ~2 I8 W! t! Y. z& V
// 返回参数:
// NoStockData 无股票数据 
// 注:
// 该函数提供股票数据的主要数据;分析软件刚运行时,可以快速建立数据框架
int WINAPI GetStockByCodeEx(char * pszStockCode,int nMarket,RCV_REPORT_STRUCTEx * pBuf);, x5 U0 u5 M: i
% f  [# @* d; k
// 激活接收程序,进行设置
// 入口参数:2 T) I. [3 J& U
// bSetup TRUE 显示窗口,进行设置
// 返回参数:
// 1 成功3 T# j5 {* u9 u0 K$ E6 K
// -1 失败7 @9 s: `  ~7 J8 E: d$ L
int WINAPI SetupReceiver(BOOL bSetup);

// 取得股票驱动信息0 J: q* J' A5 `1 W7 f7 O* z% `
// 入口参数:
// nInfo 索引
// pBuf 缓冲区4 c, @- x: ^$ L  M, i3 E
// 出口参数:2 M  k3 z+ S" f; s  @5 Q7 l1 [
// nInfo == RI_IDSTRING, 返回特征字符串长度, pBuf 为特征字符串
// 如: "TongShi_StockDrv_1.00"6 i+ F* M9 [1 c+ J
// nInfo == RI_IDCODE, 返回信息卡 ID 号, pBuf 为字符串形式的 ID 号6 G3 Q! t8 G- @1 n
// 如: 0x78001234 "78001234"
// nInfo == RI_VERSION, 返回信息卡版本号, pBuf 为字符串版本
// 如: 1.00 "1.00"   y9 y6 Y" ~% z- |. b1 g% z
// nInfo == RI_ERRRATE, 取信道误码,
// nInfo == RI_STKNUM, 取上市股票总家数, k; O+ B8 _! D6 [
DWORD WINAPI GetStockDrvInfo(int nInfo,void * pBuf);5 I$ m$ p! k4 [9 D

#ifdef __cplusplus
}' [3 ?( n2 q/ j. b  b
#endif/ r- B6 q! l& h! I2 g$ m) `$ @

#endif // __STOCKDRV_100_H__



#ifndef __RAINSTOCKDRV_H__9 f+ H/ M0 Y% j$ q* n5 a) y
#define __RAINSTOCKDRV_H__
1 u# ]) |7 Q2 L% e* k' J9 y! x
/*******************************及时雨扩展通视卡接口部分*******************1 j2 g4 g3 e# N" P

扩展原则:完全兼容通视卡的功能,保证原有功能正常工作,基于个股请求数据
扩展项目:主动取分时数据,
主动取分笔数据
取股票代码
取F10
为实现扩展接口的功能,在处理时注意以下几点, 3 q! Z' Z! N- d! q
1>扩展部分的数据到位通知通过消息DA_SERVICE_MSG_EXT(或通过SetExtMsg自定义)通知到达。
2>数据通过消息通知到达,数据结构为STRUCT_REXT_HEAD+n个数据结构单元
-----------------------------3 e+ a: n  X# A+ e# e
| STRUCT_REXT_HEAD |
-----------------------------% `/ s; E) ~% R: Y' f% s! v
| |( J9 a1 A6 z6 z2 H; N
| 扩展数据结构 |
| |
-----------------------------
***************************************************************************/

#define DA_SERVICE_MSG_EXT WM_APP + 255 //扩展接口
#define DA_SERVICE_MSG WM_APP + 256 
1 ?  M6 u  \( Z5 v& x0 K
#define RCV_EXT_TRADEDATA 0X5A11 //带买卖3的分笔数据 STCP_QBD_STRUCT% W' X  \3 b; _* b2 |% z3 {
#define RCV_EXT_KDATA 0X5A21 //个股日线数据 RITK_STRUCT 
#define RCV_EXT_TRADEDATAV2 0X5A15 //带买卖4的分笔数据, STCP_QBD6_STRUCT
#define RCV_EXT_STOCKTABLE 0x5A22 //股票代码表 RCV_STOCK_CELLEx

- \6 f5 }4 P3 s9 l+ x
typedef struct _REXT_HEAD_
{( B% s8 v. W% E2 Z: ~
TCHAR m_Code[STKLABEL_LEN];
TCHAR m_Name[STKLABEL_LEN];
WORD m_wMarket; // 市场类型
WORD m_Service; // 类型如下  m7 P$ `' {9 c2 H$ C  O
/*& j9 Y6 R' u' _+ v6 _. M% }& m' S
#define RCV_EXT_TRADEDATA 0X5A11 //带买卖3的分笔数据 STCP_QBD_STRUCT9 F2 K7 [% ?! u$ u
#define RCV_EXT_KDATA 0X5A21 //个股日线数据 RITK_STRUCT 
#define RCV_EXT_TRADEDATAV2 0X5A15 //带买卖4的分笔数据, STCP_QBD6_STRUCT
#define RCV_EXT_STOCKTABLE 0x5A22 //股票代码表 RCV_STOCK_CELLEx
*/
int m_num; //交易笔数
time_t m_mt; //交易时间2 ]+ k& _# ^5 O/ ~
DWORD m_unused[4];' v. i8 h) f5 m: l5 R7 V2 H
}STRUCT_REXT_HEAD;9 ^& o. ?8 `3 U5 b# w0 u8 r2 C

typedef struct _STCP_QBD_" T/ u3 V9 K* i, n3 [  l3 R
{( k' d' {0 R2 C% R' f. m8 d% N
time_t fTime ; //时间(精确到秒)fTime 
float fPrice ; //当前成交价 fPrice 
float fVolumn ; //总成交量 fVolumn 1 w2 i1 a+ H+ E  i- E4 L7 w1 A
float fAmount; //总成交额 fAmount 
float fBuyP[3]; //申买价 fBuyP[3] ! B; y5 F* n: _# q" z- V- r
float fBuyV[3]; //申买量 7 r) I6 N& K) L9 s, T$ z
float fSellP[3]; //申卖价 
float fSellV[3]; //申卖量6 P# |6 _" v% M- v7 m
} STCP_QBD_STRUCT ; // 

typedef struct _STCP_QBD6_
{
time_t fTime ; //时间(精确到秒)fTime 
float fPrice ; //当前成交价 fPrice ' L* _! U( B7 Z8 U/ `3 k
float fVolumn ; //总成交量 fVolumn 
float fAmount; //总成交额 fAmount * U: i/ `8 B, T* d* u  w
float fBuyP[4]; //申买价 fBuyP[3] 
float fBuyV[4]; //申买量 
float fSellP[4]; //申卖价 # V$ F7 T/ N. d$ o8 s% i
float fSellV[4]; //申卖量6 q, j$ Z! N' D2 ~( ?  U; {
} STCP_QBD6_STRUCT ; //
. v* y4 F" M3 _  I/ B8 y% V8 c0 ~
( d/ w7 _6 F0 f5 g- q6 Q+ h" j
//K线数据结构
typedef struct _RITK_
{
time_t m_time; //UCT - ]1 J7 ?7 O1 B, L9 c; L1 a
float m_fOpen; //开盘" _& F! W( c- S
float m_fHigh; //最高" w* F+ n+ R: N. w
float m_fLow; //最低
float m_fClose; //收盘
float m_fVolume; //量
float m_fAmount; //额
}RITK_STRUCT ; 9 M$ _% t) ]% Z% R: F7 t9 P

# _* O1 g, P: I9 h) J  }) ^4 W

//股票代码表单元结构:7 L8 {) s% f6 \+ B* [- w
typedef struct tagRCV_STOCK_CELLEx* y6 Z8 M( ^( g' l. z
{3 i" ]+ Q& P4 e' z, ?) T$ i
WORD m_wMarket; // 股票市场类型. E. E2 Y& z' F- @4 c
char m_szLabel[STKLABEL_LEN];// 股票代码,以'\0'结尾
char m_szName[STKNAME_LEN]; // 股票名称,以'\0'结尾
}RCV_STOCK_CELLEx ;
7 |) s" t+ _( l5 Z
#pragma pack()

//////////////////////////////////////////////////////////////////////////////////
//APIs5 K( c% e2 ^6 m" Z  x
5 ~1 w  B- J1 e: J) m
#ifdef __cplusplus/ P, \7 C8 p! y' }
extern "C"{1 M+ _! h9 {4 ?! x- n) U: h* c  j
#endif
$ k5 Y$ t% \) C1 j% V5 Q* S
/************************设置扩展消息标志********************
******************************************************/
int WINAPI SetExtMsg(UINT msg);/ M* @! j% D8 G& T. h* r
5 U$ e: U: U  d/ C

/************************取个股K线数据********************6 y. \' I3 [. D, G
scode: 股票代码, 以'\0'结尾6 u. h! w' j! V
mt : 日线数据起始交易日, 时间精度到天,小时、分不计, mt =0表示取所有日线( b& o9 ?& c3 ~/ i% `( f
返回 : 1 成功( j" R3 a& ~* K! m* i( y
-1 失败. R& L2 b; a1 \4 A
日线数据以通视卡的格式返回6 j# U$ i! z- d* j3 w. o
******************************************************/% F  O* G& u# }( i; R
int WINAPI GetKData(LPCSTR scode, time_t mt);* U, V9 {, k' Q8 t
. ?6 i3 i6 I' B0 n% d9 F: ~
int WINAPI QueryKData(LPCSTR scode, int nMarket, time_t mt);' G9 ~! ^2 s; [. f! G2 c7 H. r+ R( Z
/************************取分时数据********************! L$ p& p' C; U" ]
scode: 股票代码, 以'\0'结尾
mt : 分时数据所属底交易日, 时间精度到天,小时、分不计
返回 : 1 成功
-1 失败
分时数据以通视卡的格式返回
******************************************************/2 r; U5 [1 ?# h- H
int WINAPI GetMinData(LPCSTR scode, time_t mt);3 e4 z0 r. f2 J! ~" H3 d3 v


int WINAPI QueryMinData(LPCSTR scode, int nMarket, time_t mt);: G6 ?0 N& V! q- z7 h* _
/************************取交易分笔数据********************
scode: 股票代码, 以'\0'结尾! p+ y2 m# r% K7 d2 n
mt : 分时数据所属底交易日, 时间精度到天,小时、分不计
返回 : 1 成功
-1 失败0 W$ i+ }  z0 `7 r9 E+ i9 C% x
分笔数据格式见下面, 当数据准备好后,通过消息DA_SERVICE_MSG_EXT通知数据已准备好。
" R7 u) S- A9 C7 U
******************************************************/7 ~1 v* a, \  I6 e" n
int WINAPI GetTradeData(LPCSTR scode, time_t mt);

int WINAPI QueryTradeData(LPCSTR scode, int nMarket, time_t mt);

/************************取新闻公告资料********************; i; e' O: o3 K" K& x; Q
channel: 新闻频道, 以'\0'结尾1 d- Z6 E0 M1 T1 m
fmt: 保留,目前无效
返回 : 1 成功' l0 K- d% T% g' v; R; q! A% y
-1 失败  f0 H( ?. j) }( R2 k! K0 q
% o. f" `. X! ~% h9 p
**********************************************************/ 
int WINAPI GetNews(LPCSTR channel = NULL, time_t fmt =0 );" C- X2 T2 P, w* t

/************************取个股基本面资料********************; \) j' l$ I* k2 d
scode: 股票代码, 以'\0'结尾' R4 i7 n( c+ F+ _
fmt : 保留
返回 : 1 成功
-1 失败7 w1 a, r+ x3 z% M1 ?3 d+ z" @
5 U! q9 ?% ^% u
**********************************************************/ 
int WINAPI GetBaseInfo(LPCSTR scode, time_t fmt);9 z3 B( i& x- |" s, A8 [5 j

int WINAPI QueryBaseInfo(LPCSTR scode, int nMarket, time_t mt);5 I% \9 e- d7 z, t6 H/ R4 m6 F* k

/***********************取所有股票代码***********************
通过消息返回代码表
STRUCT_REXT_HEAD *pHead pHead->m_Service == RCV_EXT_STOCKTABLE ;3 x& D( R( V' C6 p
RCV_STOCK_CELLEx * pBuf ;3 i" J0 V. E; m# u4 r+ G8 F! J

*************************************************************/* k- K* {( p' Y1 }# H
int WINAPI GetStockTable();  ?# @( s. n/ y% }' G9 t. W# e

/***********************取服务器时间***********************- w, `. |% k' Q0 M6 J  ]4 n
用于客户端与服务器端时间同步4 @% s8 f  P# m% r4 f/ v3 K
返回:TRUE 成功
FALSE 失败
*************************************************************/- V' |% z1 [9 Z+ z( _# h
BOOL WINAPI GetServerTime(time_t *ptime);
% E' f9 k7 m# m0 E! D/ m

3 w6 q/ F) `) a% m
#ifdef __cplusplus# E2 U. ?: g# A
}
#endif

#endif // __RAINSTOCKDRV_H__
# e, [' z" Q9 S. h2 g

. k7 \2 F4 {) S$ E  b
/* 图文卡兼容消息处理程序示例, Z- n& f% F. o- j
LONG OnStkDataOK(UINT wParam,LONG lParam)
{
RCV_DATA * pHeader;. V0 T0 \! v) ]
int i;! }' K* f& F0 |4 ?
4 x+ x+ {2 d1 C1 v$ m  d
pHeader = (RCV_DATA *)lParam;

// 对于处理速度慢的数据类型,最好将 pHeader->m_pData 指向的数据备份,再作处理2 }. H( I; w: f( D) W& K5 U5 K

switch( wParam )
{+ h/ }: ]# ^! {$ i! Y9 s" p
case RCV_REPORT: // 共享数据引用方式,股票行情
for(i=0; im_nPacketNum; i++)3 R  A& E" l2 |4 }" A# P
{
pHeader->m_pReport ..." E! ]6 C( s! _' N! K% |! J' l1 @% S
// 数据处理
}
break;

case RCV_FILEDATA: // 共享数据引用方式,文件9 Q& y2 f, i; g
switch(pHeader->m_wDataType)
{2 v" ~& ?: u8 h5 b6 P% ?9 g
case FILE_HISTORY_EX: // 补日线数据
break;

case FILE_MINUTE_EX: // 补分钟线数据
break;
! ~' c6 T, E; N! a
case FILE_BASE_EX: // 钱龙兼容基本资料文件,m_szFileName仅包含文件名
break;
- @! t. D0 u$ w" X
case FILE_NEWS_EX: // 新闻类,其类型由m_szFileName中子目录名来定
break;% [6 J5 ]; k5 X, o2 N7 M
}. w; k) T( @! Q5 {. `8 }5 o
break;

default:
return 0; // unknown data! Y! N' p: ^& {% |6 |7 [6 `' N" C! M
}) W* {' f$ L+ \6 m
return 1;1 E  n1 U% d: b; e1 M
}
*/9 f  X) k8 S0 B- t0 q' F3 A! b
" \& v, Q. [8 J: N3 }8 z+ h
/******************************************及时雨扩展数据处理示例******************************************" E* m. E- E4 K# L; z0 ^
void OnExtService(UINT wFileType, LONG lPara)& B+ _& c# b* K9 `9 z7 ~- j, U
{
STRUCT_REXT_HEAD *pHead = (STRUCT_REXT_HEAD*)lPara ;+ l# a/ }/ u! q" _7 j
ASSERT(wFileType == pHead->m_Service);
CString msg ;
if ( wFileType == RCV_EXT_TRADEDATA)
{0 j3 X) ?) a: @; G6 s
msg.Format("%.6s %.8s %d 分笔" , pHead->m_Code, pHead->m_Name, pHead->m_num);3 D# s8 H; p' ]- r: V+ v. a
STCP_QBD_STRUCT *pk = (STCP_QBD_STRUCT *) (lPara + sizeof(STRUCT_REXT_HEAD));
3 E! Z1 ]1 w1 D9 y
}else if ( wFileType == RCV_EXT_TRADEDATAV2){5 V5 ?1 G* A' _' ^" n
msg.Format("新%.6s %.8s %d 分笔" , pHead->m_Code, pHead->m_Name, pHead->m_num);
STCP_QBD6_STRUCT *pk = (STCP_QBD6_STRUCT *) (lPara + sizeof(STRUCT_REXT_HEAD));8 d) p: }% w7 M$ o3 Q  K
}else if ( wFileType == RCV_EXT_KDATA)- R2 b8 w0 `: g3 |# ^: ^: O3 t+ @
{
msg.Format("%.6s %.8s %d K线" , pHead->m_Code, pHead->m_Name, pHead->m_num);
RITK_STRUCT *pk = (RITK_STRUCT *) (lPara + sizeof(STRUCT_REXT_HEAD));$ {6 i# T- l. V. c+ N5 N
}else if (wFileType == RCV_EXT_STOCKTABLE)5 l7 T  ]. ]% {# \% T
{  K8 ~  G0 I3 ?2 S5 |. i
msg.Format("股票代码表" );. A, C4 k- r- p- O) i; ]% w! U3 S
RCV_STOCK_CELLEx *pk = (RCV_STOCK_CELLEx *) (lPara + sizeof(STRUCT_REXT_HEAD));
}
}
*/

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多