首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > VFP >

vfp 网际风,该如何处理

2012-03-12 
vfp网际风我想自己搞一个简单的股票行情分析软件但是看了网际风网站问答中的开发简述以后仍然一头雾水,请

vfp 网际风
我想自己搞一个简单的股票行情分析软件

但是看了网际风网站问答中的开发简述以后仍然一头雾水,请各位帮帮忙,教教在下怎样实现:
1.vfp连接网际风
2.当vfp接收到网际风传过来的数据以后,能不能自动进行运算

我现在只能给60分了,不能再多给了,前段时间还可以给一百分的
附网际风网站问答中的简述:




答: 网际风是通视(分析家)规范规范兼容数据接口,所以只要按照通视规范的过程开发即可获得股票数据。可以下载分析家规范和网际风接口扩充规范,仔细阅读。程序的运行大体流程如下:

1、首先第一步要安装网际风客户端,这样在C:\Windows\System32目录下就有了网际风的程序,其中Stock.DLL为数据接口模块(里面有API输出),用户的应用程序只跟Stock.DLL打交道,WJFMain.EXE为网络接口模块,负责与网际风服务器的通讯,至于Stock.DLL和WJFMain.EXE之间的交互,由Stock.DLL自动完成,对用户程序是透明的,无需关心。同时注册表中的[HKEY_LOCAL_MACHINE\SOFTWARE\StockDrv] 下的Driver键值会被网际风安装程序修改为指向网际风的数据接口Stock.DLL位置

2、用户程序读取 [HKEY_LOCAL_MACHINE\SOFTWARE\StockDrv] 下的Driver键值,如 "Driver"="stock.dll" ,这就是网际风数据接口的DLL位置,使用注册表读取函数可以取得上述路径,然后使用LoadLibrary加载上述DLL,再使用GetProcAddress取得Stock_Init、Stock_Quit、GetStockDrvInfo等API的入口。

3、使用远程方式调用上面取得的Stock_Init,并传入3个参数(消息处理窗口句柄、消息号、工作模式),消息处理句柄和消息号是用户程序自定义的,是告诉网际风数据接口的关键数据,相当于注册函数,以后网际风给用户程序发送数据都通过上述消息号来通知,如果有数据要发送给用户程序,Stock.DLL就会向上述句柄发送上述消息号,并在消息参数中有数据标识和对应的数据地址,用户程序只需要在上述消息处理函数中,对传过来的地址指针取数据即可,消息处理范例参考上述的分析家规范。简单说,用户程序只要调用一次Stock_Init,然后就坐等网际风给你发消息了,如果有行情变化,数据就会不请自来,你只对消息参数处理即可,用户主动请求的数据也是以消息模式传送过来。

4、用户程序卸载驱动时,可以调用Stock_Quit,相当于告诉Stock.DLL我不需要数据了。再调用FreeLibrary卸载上述DLL。

这就是网际风数据的处理大概流程,至于对网际风Stock.DLL传过来的数据如何处理,需要用户设计一个数据模型来进行存储,如将全天的全部行情存储起来,就可以得到分笔数据,对分笔数据进行合并就可以得到分时,如果分段统计,可以得到1分钟和5分钟或其他分钟K线,对每天数据进行收盘,就可以得到历史K线,这些都是股票程序要做的数据管理工作,像分析家和飞狐,这些数据管理工作都做得很好,如果你要做一个完整的股票程序,这些工作必不可少,网际风只是一个数据源程序,而不是一个数据中心程序,有些用户想通过网际风获得某只股票某个时间点的价格,或者一段时间的价格,这些都无法做到,只有靠用户的程序对行情数据进行管理维护,才可以随心所欲获得上述数据。如果只想获得所有股票当前的最新价格,那只要将收到的最新行情数据对用户自定义的缓冲区进行刷新,对用户自定义的缓冲区进行查询即可获得所有品种当前的最新价格数据,相对比较简单。如果你对上述API和DLL的调用比较畏惧,那可以使用网际风提供的TTD软件,可以将上述内存数据实时刷新到磁盘的DBF文件,用户只需访问DBF文件即可获得最新行情数据,TTD将对内存数据的访问转换为对磁盘文件的访问,降低开发难度,在Linux环境下也适用。

[解决办法]
1, 读取reg键值, 在VFP的帮助示例有个例子
2, DLL函数, 用DECLARE DLL 声明完后, 就可以调用, 清除DLL ,用CLEAR DLL
3, 消息绑定
建立一个表单, 先定义一个自定义事件RECEIVE_MSG
PARAMETER MSG_HWND,MSG_ID,MSG_A,MSG_B
-- 要有4个参数, 接收消息参数, 消息的附加资料可能是后面2个的
-- 处理你的消息,你的数据
...
return
-- 事件结束.

消息绑定事件,用这语句
BINDEVENT(THISFORM.hWnd , nMessage, THISFORM, 'RECETVE_MSG', 4) 

祝你成功

热点排行