设为首页收藏本站

宽客俱乐部——量化投资与对冲基金交流平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
揭开股票高频交易的神秘面纱——股票日内回转T+0交易课程
神奇的期货冲量交易法培训(包学会)
查看: 2842|回复: 5

金字塔VBA数据库互交

[复制链接]
发表于 2014-10-24 16:02:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
金字塔VBA数据库互交

金字塔vba指标调用数据库教程
本教程主要用于帮助初学用户熟悉在vba中进行数据库的相关操作,主要包含以下三部分内容:
第一节,数据库的准备工作
第二节,数据库的实际操作,主要涉及到的知识点
1) 创建表,字段
2) 插入数据-当前周期数据,跨周期
3) 索引和读取数据
4) 删除表,字段
第三节,使用建议和注意事项
一、 数据库的准备工作(vba使用数据库首先我们需要连接数据库)
在金字塔的高级编程区中新建一个窗体,双击窗体进入写代码部分;以下例子需要在金字塔安装根目录下建立一个test.mdb数据库,建立完成后我们事先准备工作就已经完成了,接着在金字塔vba里就可以直接对表,字段进行操作了。
二、 数据库操作方法(具体代码和注释<使用时选取需要的代码只要稍许修改>
2.1 连接数据库
此段代码是以下每个操作都要使用到的,已经标注了在哪里插入代码,只要将操作代码粘贴到红色位置中就可以实现相应操作(2.2-2.6都是操作代码,附图)
'定义一个函数,供vba开始运行时调用
sub DataInsert()
'
设置对象adoConn,进行连接
Set adoConn=CreateObject("Adodb.Connection")
'
连接数据库(数据指向是金字塔安装目录下的test.mdb,也可以自己更改想要的路径)
adoConn.Open"Provider=MicroSoft.Jet.OLEDB.4.0;DataSource="&Application.AppPath&"\test.mdb"
//
此位置插入具体功能模块代码
//
'
数据库启动时调用
sub application_vbastart()
call DataInsert()
'
调试
'call application.MsgOut("11")
end sub
2.2 创建表
strSqlcre="create table if00"
adoConn.Execute(strSqlcre)
'
插入字段
strSqlalt1="alter table if00 add stockdate double"
strSqlalt2="alter table if00 add vclose double"
adoConn.Execute(strSqlalt1)
adoConn.Execute(strSqlalt2)
2.3
插入数据
'调入其他周期数据
set qtzq= marketdata.GetHistoryData("if00","Zj",5)
'
调试数据调入是否成功
'call application.MsgOut(qtzq.close(qtzq.Count-1))
'插入数据(最新价)并且利用一个for循环遍历插入前N日的收盘价
'取得中金所if00合约价格
Set Report1=MarketData.GetReportData("if00","zj")
for i=2 to 5
strSqlins="INSERT INTO if00 (stockdate, vclose) VALUES('"&Report1.NewPrice&"','"&qtzq.close(qtzq.Count-i)&"')"
adoConn.Execute(strSqlins)
next

2.4 检索和读取数据
'检索并且更新数据
strSqlupd1="select stockdate from if00 "
strSqlupd2="update if00 set stockdate=0 where vclose=2249"
adoConn.Execute(strSqlupd1)
adoConn.Execute(strSqlupd2)
'读取数据
strSqlread="select stockdate from if00 where vclose =2249 "
'strSqlread=strSqlread&"where vclose =2249"
'ADO Recordset
对象用于容纳一个来自数据库表的记录集。
Set rstTmp=CreateObject("ADODB.RecordSet")
rstTmp.open strSqlread,adoConn
aa=rstTmp("stockdate")
call application.MsgOut(aa)
2.5 删除字段
strSqldel="delete from if00 where vclose =2249"
adoConn.Execute(strSqldel)
2.6 删除表
strSqldro="drop table if00"
adoConn.Execute(strSqldro)
adoConn.Close
End sub
三、 注意事项
? 1 .使用的时候将数据库关闭,不然可能导致出错
? 2 .以上只是抛砖引玉,整理了一些基本使用,如果大家要用于实践的话可以参照sql的例子及各类文献
附上word版本下载链接
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|量化投资|对冲套利|高频|互联网接口|资产管理|宽客俱乐部 ( 沪ICP备16036585号   点击交谈

关注

GMT+8, 2019-6-24 21:20 , Processed in 0.116617 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表