以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  [求助]HistoryData设置第一根K线  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=156680)

--  作者:D1in
--  发布时间:2017/8/9 23:50:38
--  [求助]HistoryData设置第一根K线

GetPosFromDate   得到指定日期时间的数据的基于0索引的序号
请问:1分钟K线,如何设置当日(交易日)的第一根K线为0索引?


--  作者:yukizzc
--  发布时间:2017/8/10 8:47:01
--  

设置不了,这个函数是告诉你指定日期的数据在数据集中是第几位

你要指定日期开始读取数据用这个marketdata对象下的

GetHistoryDataByDate

[此贴子已经被作者于2017/8/10 8:47:41编辑过]

--  作者:D1in
--  发布时间:2017/8/10 22:48:28
--  

请问为什么我用下列语句取到的是1000条数据,目的是想取到当天的所有数据即可。
Set HistoryData = marketdata.GetHistoryDataByDate(Stock,Market,0,date,date)

使用:HistoryData.date(0) = "2017/8/11" 进行限制后也是一样的效果 HistoryData.count=1000


--  作者:王锋
--  发布时间:2017/8/10 23:33:21
--  

你用的什么版本,建议升级到4.3新版


--  作者:D1in
--  发布时间:2017/8/11 21:26:13
--  

V4.22升级4.30后运行结果相同。HistoryData.count=1000. 目前暂时通过读取HistoryData.Date()之后用split()函数拆分,找出最近一次19:00:00的K线,从这根K线之后起算。希望能有高效直接的方法。


另外请问,最后两个参数用date  date ,并不能将GetHistoryDataByDate限定在“当日”吗?如果不直接输入日期格式(比如"2017/8/11"),又想限定在当天(交易日),最后两个参数应该如何设定?
Set HistoryData = marketdata.GetHistoryDataByDate(Stock,Market,0, date, date)


--  作者:D1in
--  发布时间:2017/8/11 22:15:37
--  

继续在4.22下运行,未改代码,22:06分开始所取K线数量符合“当日”内的K线。


--  作者:D1in
--  发布时间:2017/8/11 23:06:50
--  

之后又不对了,运行结果:
C09    HistoryData.count=1000
AY01    HistoryData.count=109
CF01    HistoryData.count=1000
FG01    HistoryData.count=1000
I01    HistoryData.count=1000
JD01    HistoryData.count=1000
L01    HistoryData.count=1000
M01    HistoryData.count=1000
MA01    HistoryData.count=1000
OI01    HistoryData.count=1000
RU01    HistoryData.count=0
TA01    HistoryData.count=1000
Y01    HistoryData.count=1000
ZC01    HistoryData.count=1000
BUY01    HistoryData.count=343
P01    HistoryData.count=1000

重新启动电脑、重启金字塔都是这个结果。补数据也重复进行过。换周期为5分钟,也不正确:
C09    HistoryData.count=405
AY01    HistoryData.count=49
CF01    HistoryData.count=700
FG01    HistoryData.count=687
I01    HistoryData.count=687
JD01    HistoryData.count=405
L01    HistoryData.count=405
M01    HistoryData.count=687
MA01    HistoryData.count=1000
OI01    HistoryData.count=687
RU01    HistoryData.count=1000
TA01    HistoryData.count=687
Y01    HistoryData.count=687
ZC01    HistoryData.count=687
BUY01    HistoryData.count=0
P01    HistoryData.count=1000

 

关键代码如下,其中Stock Market预先存储在("Stock.ArrayString")中

 Set HistoryData = marketdata.GetHistoryDataByDate(Stock,Market,0,date,date) 
 Application.MsgOut Stock &"    HistoryData.count="&HistoryData.count
 marketdata.DestroyHistoryData

 

 


--  作者:yukizzc
--  发布时间:2017/8/14 16:36:14
--  

Set HistoryData = marketdata.GetHistoryDataByDate("if00","zj",0, date&" 09:00:00", date&" 15:00:00")
application.MsgOut HistoryData.Count

指定具体时间,对于1分钟而言


--  作者:D1in
--  发布时间:2017/8/15 22:30:22
--  

多谢老师。确实解决了(在K线齐全的情况下)。

现在碰到的新问题是:

读1分钟K线历史数据发现数据不足,通过菜单工具---数据补充(1分钟K线),完成之后重启金字塔,运行结果数据还是不全。(比如现在夜盘合约应该有86根K线,多数只显示7根。)
将这合约手动打开技术分析页面后,打开过的合约K线数量正确。请问,如果不打开technic框架,通过marketdata或者别的相关调用,能不能完成补充K线的功能?


--  作者:yukizzc
--  发布时间:2017/8/16 8:39:46
--  

不行,你必须事先把对应数据都补充齐全