欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → [求助]HistoryData设置第一根K线

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有4160人关注过本帖树形打印复制链接

主题:[求助]HistoryData设置第一根K线

帅哥哟,离线,有人找我吗?
D1in
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:27 积分:0 威望:0 精华:0 注册:2017/7/27 23:24:57
[求助]HistoryData设置第一根K线  发帖心情 Post By:2017/8/9 23:50:38 [显示全部帖子]

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


 回到顶部
帅哥哟,离线,有人找我吗?
D1in
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:27 积分:0 威望:0 精华:0 注册:2017/7/27 23:24:57
  发帖心情 Post By: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


 回到顶部
帅哥哟,离线,有人找我吗?
D1in
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:27 积分:0 威望:0 精华:0 注册:2017/7/27 23:24:57
  发帖心情 Post By: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
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:27 积分:0 威望:0 精华:0 注册:2017/7/27 23:24:57
  发帖心情 Post By:2017/8/11 22:15:37 [显示全部帖子]

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


 回到顶部
帅哥哟,离线,有人找我吗?
D1in
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:27 积分:0 威望:0 精华:0 注册:2017/7/27 23:24:57
  发帖心情 Post By: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

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
D1in
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:27 积分:0 威望:0 精华:0 注册:2017/7/27 23:24:57
  发帖心情 Post By:2017/8/15 22:30:22 [显示全部帖子]

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

现在碰到的新问题是:

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


 回到顶部