我今天才下载金字塔,对VBA也不熟悉,请问我想实现以下功能,需要如何做,谢谢!!!
每1秒通过金字塔读取某合约(如IF1502)的价格、分时线的均线、1分钟K线图的60日均线值并保存到Access中。(如果分时均线和60日均线不好同时读取,只读取均线也可以)
Access数据库文件名Trade.mdb,表名为DayRecord,字段如下:
ID,Time,Contract,Price,Average,SixtyAverage
[此贴子已经被作者于2015/2/5 21:57:07编辑过]
Sub APPLICATION_VBAStart()
'设定access文件
AccessFilePath = "D:Trade.accdb"
'在ACCESS数据库中插入数据********************************************************************
'打开数据库
Set adoConn=CreateObject("Adodb.Connection")
adoConn.Open"Provider=MicroSoft.Jet.OLEDB.4.0;Data Source=D:\Trade.mdb"
'在access数据库中写入记录
strSqlcre="INSERT INTO DayRecord (TradeTime,Contract,Price,Average,SixtyAverage) VALUES ('09:52:05','IF1502',3520,3515,3585) "
adoConn.Execute(strSqlcre)
application.MsgOut "SQL语句: "& strSqlcre
adoConn.close
application.MsgOut "结束"
'结束在ACCESS数据库中插入数据********************************************************************
End Sub
摸索了一下,参考别人的代码,用上面的方法可以向ACCESS插入一行数据。
我想问下,如何读取某合约(如IF1502)的价格、分时线的均线、1分钟K线图的60日均线值?还有如何让上面的代码能够每1秒钟执行一次
sub Application_VBAStart()
Call Application.SetTimer(1,1*1000) '每1秒执行1次SetTimer,SetTimer里应该是毫秒
end sub
Sub Application_Timer(ID)
'设定access文件
'AccessFilePath = "D:\*******\Asset.accdb"
AccessFilePath = "D:Trade.accdb"
'开始在ACCESS数据库中新建表********************************************************************
'application.MsgOut "新建Access表"
'Set adoConn=CreateObject("Adodb.Connection")
'连接数据库(数据指向是金字塔安装目录下的test.mdb,也可以自己更改想要的路径)
'adoConn.Open"Provider=MicroSoft.Jet.OLEDB.4.0;Data Source=D:\艺的文件夹\自编程序\风控系列06 金字塔vbs文件\DailyAsset.mdb"
'adoConn.Open"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & AccessFilePath '可以连接access2007数据库格式
'adoConn.Open"Provider=MicroSoft.Jet.OLEDB.4.0;Data Source=D:\Trade.mdb"
'查找表是否存在
'Dim Rs
'Set Rs = adoConn.OpenSchema(20)
'Do While Not Rs.EOF
' If Rs("Table_Name") = "TreadingRecord" Then
' '找到表的操作。。
' strSqldro="drop table TreadingRecord"
' adoConn.Execute(strSqldro)
' End If
' Rs.MoveNext
'Loop
'Rs.Close
'Set Rs = Nothing
'创建表 各列代表的意义分别是 交易时间,交易品种,交易状态(买卖,买空,卖空,头寸模型,风险百分比)
' strSqlcre="create table TreadingRecord (TreadeDateTime DateTime NOT NULL, TreadMarket varchar(10) NOT NULL, TreadeStatus varchar(10) NOT NULL,PositionSizeModle varchar(10) NOT NULL, PercentRisk real)"
' adoConn.Execute(strSqlcre)
'adoConn.Close
'结束在ACCESS数据库中新建表********************************************************************
'在ACCESS数据库中插入数据********************************************************************
'打开数据库
Set adoConn=CreateObject("Adodb.Connection")
'adoConn.Open"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & AccessFilePath '可以连接access2007数据库格式
adoConn.Open"Provider=MicroSoft.Jet.OLEDB.4.0;Data Source=D:\Trade.mdb"
'在access数据库中写入记录
strSqlcre="INSERT INTO DayRecord (TradeTime,Contract,Price,Average,SixtyAverage) VALUES (Now,'IF1502',3520,3515,3585) "
adoConn.Execute(strSqlcre)
application.MsgOut "SQL语句: "& strSqlcre
adoConn.close
application.MsgOut "结束"
'结束在ACCESS数据库中插入数据********************************************************************
End Sub
'用上面的代码可以实现1秒钟插入1次数据了
'最后一个问题,如何读取某合约的分时均价?????