金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 3904|回复: 15

关于Set Data1= MarketData.GetHistoryData的问题

[复制链接]

11

主题

37

帖子

37

积分

Rank: 1

等级: 新手上路

注册:
2022-3-8
曾用名:
发表于 2022-3-22 19:21 | 显示全部楼层 |阅读模式
我目标是这样的,我需要从一个数据库表中分别读出股票代码(PINZHONG)、对应的市场SH或SZ(SHICHANG)、当时日期(tbDATE)。再读取MarketData.GetHistoryData对象,获取历史数据。再分别得到该代码的今日CLOSE和当时的CLOSE,做一些分析用。代码如下:
Sub GetHistoryDAT()
Dim d1 '创建一个变量
DIM DATA1
dim jiage,jtjiage
dim tday,s,sweiz
dim riqi,jiange
dim jintian,lastday
dim strSqlread,rstTmp,adoConn,aapz,aasc,aaid,aadate
Set adoConn=CreateObject("Adodb.Connection")
adoConn.Open"Provider=MicroSoft.ACE.OLEDB.12.0;Data Source=d:\trader\temp\PTproTable.accdb"
'创建Array外部对象,将对象实例置变量d中
Set d1 = CreateObject("Stock.Array")
strSqlread="select * from B16最底1 where  tbDATE =#2022/03/16# "
'ADO Recordset 对象用于容纳一个来自数据库表的记录集。
Set rstTmp=CreateObject("ADODB.RecordSet")
rstTmp.open strSqlread,adoConn
marketdata.HistoryDataMode=1
s=0
DO WHILE rstTmp.EOF=FALSE
aasc=rstTmp("SHICHANG")
aapz=rstTmp("PINZHONG")
aaid=rstTmp("tbID")
aadate=rstTmp("tbDATE")
Set Data1= MarketData.GetHistoryData(aasc,aapz,5)
call application.MsgOut("品种" & aapz & "市场" & aasc & "计数" & aaid & "日期" &aadate )
jintian=date
lastday=CDate("2022/3/16")
jiange=jintian-lastday
tday=Data1.count
  riqi=Data1.date(tday-1)
  jiage=Data1.close(lastday)
  jtjiage=Data1.close(riqi)

rstTmp.MoveNext
Set d1 = nothing '释放对象
Set data1 = nothing
s=s+1
marketdata.DestroyHistoryData
LOOP


set rstTmp =nothing
set strSqlread= nothing
adoConn.close
set adoConn=nothing
'MsgBox "品种" & aapz & "当时价格" & jiage & "今天价格" & jtjiage

End Sub


回复

使用道具 举报

30

主题

7075

帖子

7085

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2022-3-22 19:26 | 显示全部楼层
请问是有什么问题
vba这种没有办法提供完全代码指导的,请就具体问题咨询
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

11

主题

37

帖子

37

积分

Rank: 1

等级: 新手上路

注册:
2022-3-8
曾用名:
 楼主| 发表于 2022-3-22 19:27 | 显示全部楼层
运行后显示:编译器错误‘424’  ,缺少对象DATA1
出错1.png
出错2.png
回复

使用道具 举报

11

主题

37

帖子

37

积分

Rank: 1

等级: 新手上路

注册:
2022-3-8
曾用名:
 楼主| 发表于 2022-3-22 19:34 | 显示全部楼层
如果我将语句修改为:Set Data1= MarketData.GetHistoryData("600645","SH",5),运行编译不出现错误。 MarketData.GetHistoryData括号内如果是常数,编译正常,如果是变量,就出现错误。想请教下,哪里出问题?
修改1.png
修改2.png
回复

使用道具 举报

11

主题

37

帖子

37

积分

Rank: 1

等级: 新手上路

注册:
2022-3-8
曾用名:
 楼主| 发表于 2022-3-22 19:38 | 显示全部楼层
徐明 发表于 2022-3-22 19:34
如果我将语句修改为:Set Data1= MarketData.GetHistoryData("600645","SH",5),运行编译不出现错误。 Mark ...

MarketData.GetHistoryData括号内,我改常数,怎么就不出现:编译器错误‘424’,缺少对象DATA1 ?
回复

使用道具 举报

30

主题

7075

帖子

7085

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2022-3-22 19:43 | 显示全部楼层
你输出看下你的aasc是什么呢
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

11

主题

37

帖子

37

积分

Rank: 1

等级: 新手上路

注册:
2022-3-8
曾用名:
 楼主| 发表于 2022-3-22 20:01 | 显示全部楼层
技术008 发表于 2022-3-22 19:43
你输出看下你的aasc是什么呢

当我Set Data1 = MarketData.GetHistoryData("600645","SH",5),括号内任意填代码,运行显示,aapz(就是PINZHONG)与我数据库PINZHONG列内代码一致,aasc(就是数据库内代码对应的“SZ”或“SH”)也一致。aaid(就是数据库内用于计数的tbID)一致。都是138。  但MarketData.GetHistoryData()括号内是变量,就出现“缺少DATA1对象”出错信息了。
数据库1.png
运行显示.png
回复

使用道具 举报

11

主题

37

帖子

37

积分

Rank: 1

等级: 新手上路

注册:
2022-3-8
曾用名:
 楼主| 发表于 2022-3-22 20:06 | 显示全部楼层
技术008 发表于 2022-3-22 19:43
你输出看下你的aasc是什么呢

aasc就是数据库内列SHICHANG,aapz就是数据库内列PINZHONG,运行显示与数据库表内数据一致。(当Set Data1 = MarketData.GetHistoryData()括号内填常量。变量时就出错:缺少Data1对象
运行显示2.png
回复

使用道具 举报

11

主题

37

帖子

37

积分

Rank: 1

等级: 新手上路

注册:
2022-3-8
曾用名:
 楼主| 发表于 2022-3-22 20:09 | 显示全部楼层
技术008 发表于 2022-3-22 19:43
你输出看下你的aasc是什么呢

想知道语句Set Data1 = MarketData.GetHistoryData()括号内不是变量,是变量时,该注意什么。
回复

使用道具 举报

11

主题

37

帖子

37

积分

Rank: 1

等级: 新手上路

注册:
2022-3-8
曾用名:
 楼主| 发表于 2022-3-22 20:09 | 显示全部楼层
徐明 发表于 2022-3-22 20:09
想知道语句Set Data1 = MarketData.GetHistoryData()括号内不是变量,是变量时,该注意什么。

想知道语句Set Data1 = MarketData.GetHistoryData()括号内不是常量,是变量时,该注意什么。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 微信登录

本版积分规则

手机版|小黑屋|上海金之塔信息技术有限公司 ( 沪ICP备13035422号 )

GMT+8, 2024-11-16 12:24 , Processed in 0.326584 second(s), 25 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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