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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → marketdata.GetHistoryData("if11","zj",0) 获取的是当前K以前的所有数据吗?

   

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


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

主题:marketdata.GetHistoryData("if11","zj",0) 获取的是当前K以前的所有数据吗?

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


加好友 发短信
等级:论坛游侠 帖子:388 积分:0 威望:0 精华:0 注册:2014/11/22 18:13:16
marketdata.GetHistoryData("if11","zj",0) 获取的是当前K以前的所有数据吗?  发帖心情 Post By:2021/1/17 21:40:04 [只看该作者]

如题:marketdata.GetHistoryData("if11","zj",0) 获取的是当前K以前的所有数据吗?

dim d2

Set d2 = CreateObject("Stock.Array")       

set Data2= marketdata.GetHistoryData("if11","zj",0)  

for i=Data2.Count-2 to Data2.Count-1

  d2.AddBack(Data2.Close(i))    

next

问题:1、若marketdata.GetHistoryData("if11","zj",0) 获取的是当前K以前所有1分钟K,意味若确保D2数组加载的数据同步于              marketdata.GetHistoryData("if11","zj",0),需要:

  if d2.Count < Data2.Count then

       d2.AddBack(Data2.Close(i))    

  end if

这样对吗?

        2、若marketdata.GetHistoryData("if11","zj",0) 不是获取的是当前K以前所有1分钟K,是当前K的那根K?

菜鸟问题,请谅解。因为在盘后,无法测试比较。请老师耐心解答!!谢谢




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


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2021/1/18 9:28:32 [只看该作者]

0的话就是所有1分钟k了


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


加好友 发短信
等级:论坛游侠 帖子:388 积分:0 威望:0 精华:0 注册:2014/11/22 18:13:16
  发帖心情 Post By:2021/1/18 9:48:16 [只看该作者]

我这样理解老师的回答,不知道对不对:
在当天为交易日时
1、marketdata.GetHistoryData("if11","zj",0) 就是指今天开盘前所有数据,其中0代表1分钟,这点老师可能没注意到。
2、今天所有交易时段的数据在marketdata.GetReportData("if11","zj",0) 之中。
谢谢

另外问一个问题,技术分析框架,加载的k线,是不是自动读取marketdata.GetHistoryData("if11","zj",0) 后,再依据marketdata.GetReportData("if11","zj",0)刷新? 

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


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2021/1/18 10:18:08 [只看该作者]

Count

可选参数,若填数字则表示指定的调用数量,为0或者不填表示读取该品种在本地硬盘保存的全部数据

 

你不填参数,表示该品种所有数据

 

 

技术分析框架和这个没有任何关系的


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


加好友 发短信
等级:论坛游侠 帖子:388 积分:0 威望:0 精华:0 注册:2014/11/22 18:13:16
  发帖心情 Post By:2021/1/18 10:27:01 [只看该作者]

谢谢,老师。
请告诉我:
我这样理解老师的回答,不知道对不对:
在当天为交易日时
1、marketdata.GetHistoryData("if11","zj",0) 就是指今天开盘前所有数据,其中0代表1分钟,这点老师可能没注意到。
2、今天所有交易时段的数据在marketdata.GetReportData("if11","zj",0) 之中。
3、在发生收盘后,marketdata.GetReportData("if11","zj",0) 之中的数据就会写入到marketdata.GetReportData("if11","zj",0) 之中,对吗?

因为,我想自编个合约,读取marketdata.GetHistoryData("if11","zj",0) 数据,然后再读取marketdata.GetReportData("if11","zj",0) 数据。然后加载在技术分析框架上,还能够自动刷新。
请知道,谢谢

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


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2021/1/18 10:31:54 [只看该作者]

电话我把

021-20339087


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


加好友 发短信
等级:论坛游侠 帖子:388 积分:0 威望:0 精华:0 注册:2014/11/22 18:13:16
  发帖心情 Post By:2021/1/26 6:54:26 [只看该作者]

老师给个qq,以前运行完全正常的VBA突然出现如图的情况.
图片点击可在新窗口打开查看此主题相关图片如下:捕获1.png
图片点击可在新窗口打开查看


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


加好友 发短信
等级:论坛游侠 帖子:388 积分:0 威望:0 精华:0 注册:2014/11/22 18:13:16
  发帖心情 Post By:2021/1/26 7:01:36 [只看该作者]

我就是直接把文档拷贝在记事本上编辑,然后再直接拷贝回来就发生正中情况.

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


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2021/1/26 9:55:04 [只看该作者]

软件版本多少,安装官网的最新的6.0beta5试试呢

代码完整的贴下,本地看看

[此贴子已经被作者于2021/1/26 9:55:34编辑过]

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


加好友 发短信
等级:论坛游侠 帖子:388 积分:0 威望:0 精华:0 注册:2014/11/22 18:13:16
  发帖心情 Post By:2021/1/27 8:10:37 [只看该作者]

我想把IF合约的的分钟历史数据与当天的分时数据合并,添加再一个新名称的合约里。但老是出现上面的非法退出,各种版本都试过,包括6.0beta5
代码如下:
'-------------------------------------------------------------K开始---------------------------------------------------
dim qj
qj=0
dim StartIndex
StartIndex = 0     

dim minuteout'
minuteout = 0     
dim timeString
timeString=""
dim KstartTime
KstartTime =0
dim shanchu
shanchu=1


dim dangtianshuju '当日是否有数据,0为没有
dangtianshuju = 0

dim bili 
bili = 0.002    


dim xinheyue
xinheyue = "IF88"  

dim xinmingcheng
xinmingcheng = "IFK线" 
dim xinshichang
xinshichang = "ZJ" 

dim laoheyue
laoheyue = "IF00" '标的合约代码
dim laoshichang
laoshichang = "ZJ" '标的合约市场
dim laozhishu
laozhishu = "IF13"

dim laoheyueStartDate
laoheyueStartDate = laoheyue+"StartDate" '
dim laoheyueDataCount
laoheyueDataCount = laoheyue+"DataCount" '

dim newKOpen'
newKOpen=0
dim newKClose'
newKClose=0
dim newKHigh'
newKHigh=0
dim newKLow'
newKLow=0
dim newKVolume
newKVolume=0
dim mxVolume'
mxVolume=0
dim newKDate'
newKDate=0
dim newkOpenInt'
newkOpenInt=0

dim PKOpenP
dim PKClose
dim PKHigh
dim PKLow
dim PKVolume
dim PKDate
dim PKOpenInt

Sub lishishuju()
        '查询品种是否存在,不存在则新建
        cunzai = marketdata.IsExistStock(xinheyue,xinshichang)
        if cunzai = 0 then
            call marketdata.AddStock(xinheyue,xinshichang, xinmingcheng) 
        else
            'call marketdata.DeleteStock(xinheyue,xinshichang) 
            'call marketdata.AddStock(xinheyue,xinshichang, xinmingcheng) 
        end if
    '删除历史数据,创建第一根K线
    if shanchu = 0 then     
       Set History1 =marketdata.GetHistoryData(xinheyue,xinshichang,0)     
       for j = 0 to History1.Count-1
       History1.RemoveAt(j)
       next    
       call History1.SaveData(xinheyue,xinshichang,1)        
       application.MsgOut
    end if        
        '+++++++++++++++++++更新新合约的历史数据++++++++++++++++++++++++++                                                 
        VarStartDate=Document.GetExtString(laoheyueStartDate)'取存储的老合约1分钟数据的0号数据的时间   
        VarDataCount=Document.GetExtData(laoheyueDataCount)'取储的新合约1分钟数据的数据的个数
        Set History00=marketdata.GetHistoryData(laoheyue,laoshichang,0)'取老合约1分钟数据                
        Hs00PosDate=History00.date(0)'按时间取老合约1分钟数据的,看是否为0号数据
        Hs00DataCount=History00.count'取老合约1分钟数据的数据的个数
        application.MsgOut "instr(VarStartDate,Hs00PosDate) <>0 or VarDataCount<>Hs00DataCount【创建成功】CStr(History00.Count)"  +CStr(History00.Count)                                               

  
           Set PKOpen=CreateObject("Stock.Array")
           Set PKClose=CreateObject("Stock.Array")
           Set PKHigh=CreateObject("Stock.Array")
           Set PKLow=CreateObject("Stock.Array")
           Set PKVolume=CreateObject("Stock.Array")
           Set PKDate=CreateObject("Stock.Array")
           Set PKOpenInt=CreateObject("Stock.Array")             
           h00=History00.Count-1               
           for i = 0 to  H00
               PKOpen.AddBack(History00.Open(i))
               PKClose.AddBack(History00.close(i))
               PKHigh.AddBack(History00.high(i))
               PKLow.AddBack(History00.low(i))
               PKVolume.AddBack(History00.Volume(i))
               PKDate.AddBack(History00.date(i))
               PKOpenInt.AddBack(History00.OpenInt(i))
               if i=h00 then
                  '加载当天分时数据
                      
                     for j = KstartTime to mc-2                                         
                         PKOpen.AddBack(minutedata.Open(j))
                         PKClose.AddBack(History00.close(j))           
                         PKHigh.AddBack(minutedata.high(j))
                         PKLow.AddBack(minutedata.low(j))
                         PKVolume.AddBack(minutedata.Volume(j))
                         PKDate.AddBack(minutedata.date(j))
                         PKOpenInt.AddBack(minutedata.OpenInt(j))            
                     next
                             
               end if 
           Next                                             


 回到顶部
总数 35 1 2 3 4 下一页