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


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

   

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


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

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

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


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

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:888.txt

                                         


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


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

没有问题,没有崩溃,但是也没有数据

 

 


图片点击可在新窗口打开查看此主题相关图片如下:%s)4x788ne~nl6u_for1j.png
图片点击可在新窗口打开查看

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


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

我的崩溃喔,而且是反复出现。


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


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

dim shanchu
shanchu = 0     '是否删除历史数据,1为需要


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


dim bili
bili = 0.001    '等价线区间


dim xinheyue
xinheyue = "IF88"  '新等价K合约代码
dim xinmingcheng
xinmingcheng = "IF等价K线" '新等价K合约名称
dim xinshichang
xinshichang = "ZJ" '新等价K合约市场


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

call lishishuju()
Sub lishishuju()


    '查询品种是否存在,不存在则新建
    cunzai = marketdata.IsExistStock(xinheyue,xinshichang)
    if cunzai = 0 then
       call marketdata.AddStock(xinheyue,xinshichang, xinmingcheng)
       application.MsgOut "等价K线【创建成功】!"
    else
       application.MsgOut "等价K线【已经存在】!"
    end if


   
    '等价区间处理
    set Report1 = marketdata.GetReportData(laoheyue,laoshichang)   
    qj = Report1.Open*bili
 
   
    '删除历史数据,创建第一根K线
    if shanchu = 1 then    
       Set History1 = marketdata.GetHistoryData(xinheyue,xinshichang,0)    
       for j = 0 to History1.Count-1
       History1.RemoveAt(j)
       next   
       call History1.InsertAt(0)
       History1.open(0) = Report1.Open
       History1.close(0) = Report1.Open
       History1.high(0) = Report1.Open
       History1.low(0) = Report1.Open
       History1.Date(0) = Report1.Date
       History1.Volume(0) = Report1.Volume
       History1.OpenInt(0) = Report1.OpenInt
       call History1.SaveData(xinheyue,xinshichang,1)       
       application.MsgOut "等价K线【历史数据初始化】成功!"
    end if
             
    set minutedata = marketdata.GetMinuteData(laoheyue,laoshichang)
    Count =  minutedata.Count
   
   
    for i = 1 to count-1
   
        Set History2 = marketdata.GetHistoryData(xinheyue,xinshichang,0)     
        mxopen = History2.open(History2.Count-1)
        mxclose = History2.close(History2.Count-1)
        mxhigh = History2.high(History2.Count-1)
        mxlow = History2.low(History2.Count-1)
        mxDate = History2.Date(History2.Count-1)
        mxVolume = History2.Volume(History2.Count-1)
        mxOpenInt = History2.OpenInt(History2.Count-1)
       


        close = minutedata.newprice(i)
        fbDate = minutedata.Date(i)     
        Volume = minutedata.Volume(i)
        mxVolume = minutedata.Volume(i-1)
        OpenInt = minutedata.OpenInt(i)
        if close > mxhigh then mxhigh = close end if
        if close < mxlow  then mxlow = close end if
        mxdate = fbDate
        mxxVolume = (Volume-mxVolume)+mxxVolume
        mxOpenInt = OpenInt
       
        History2.close(History2.Count-1) = close
        History2.high(History2.Count-1) = mxhigh
        History2.low(History2.Count-1) = mxlow
        History2.Date(History2.Count-1) = mxdate 
        History2.Volume(History2.Count-1) = mxxVolume 
        History2.OpenInt(History2.Count-1) = mxOpenInt
        call History2.SaveData(xinheyue,xinshichang,1)
      
        if abs(close-mxopen) > qj then
        '新建一个K线      
        call History2.InsertAt(History2.Count)
        History2.open(History2.Count-1) = close
        History2.close(History2.Count-1) = close
        History2.high(History2.Count-1) = close
        History2.low(History2.Count-1) = close
        History2.Date(History2.Count-1) = mxdate 
        History2.Volume(History2.Count-1) = 0  
        History2.OpenInt(History2.Count-1) = OpenInt 
        call History2.SaveData(xinheyue,xinshichang,1)  
        mxxVolume = 0
        end if
       
     next


End Sub


sub dengjiaK()'第一次用的时候请先运行改宏创建等价K线数据
     call lishishuju()
end sub


Sub APPLICATION_VBAStart()
    call Application.SetTimer(0,1000) '创建一个0号定时器,间隔时间1秒
End Sub

 


Sub APPLICATION_Timer(ID) 
 
    if ID = 0 then
   


   
     if (cdate(time)<=cdate("11:30:00") and cdate(time)>cdate("9:15:00")) or (cdate(time)<=cdate("15:15:00") and cdate(time)>cdate("13:00:00")) then 
  
      '等价区间处理   
      set Report1 = marketdata.GetReportData(laoheyue,laoshichang)
         qj = Report1.Open*bili
        
              
        Set History2 = marketdata.GetHistoryData(xinheyue,xinshichang,0)     
        mxopen = History2.open(History2.Count-1)
        mxclose = History2.close(History2.Count-1)
        mxhigh = History2.high(History2.Count-1)
        mxlow = History2.low(History2.Count-1)
        mxDate = History2.Date(History2.Count-1)
        mxxVolume = History2.Volume(History2.Count-1)
        mxOpenInt = History2.OpenInt(History2.Count-1)
       
        set minutedata = marketdata.GetMinuteData(laoheyue,laoshichang)
        Count =  minutedata.Count    
       
   
        close = minutedata.newprice(Count-1)
        fbDate = minutedata.Date(Count-1)
        mxVolume = minutedata.Volume(Count-2)
        Volume = minutedata.Volume(Count-1)
        OpenInt = minutedata.OpenInt(Count-1)
        if close > mxhigh then mxhigh = close end if
        if close < mxlow  then mxlow = close end if
        mxdate = fbDate
        mxxVolume = mxxVolume+(Volume-mxVolume)
        mxOpenInt =OpenInt
'        application.MsgOut mxxVolume&" "&Volume&" "&Volume-mxVolume
       


        History2.close(History2.Count-1) = close
        History2.high(History2.Count-1) = mxhigh
        History2.low(History2.Count-1) = mxlow
        History2.Date(History2.Count-1) = mxdate 
        History2.Volume(History2.Count-1) = mxxVolume 
        History2.OpenInt(History2.Count-1) = mxOpenInt 
        call History2.SaveData(xinheyue,xinshichang,1)
      
        if abs(close-mxopen) > qj then
        '新建一个K线      
        call History2.InsertAt(History2.Count)
        History2.open(History2.Count-1) = close
        History2.close(History2.Count-1) = close
        History2.high(History2.Count-1) = close
        History2.low(History2.Count-1) = close
        History2.Date(History2.Count-1) = mxdate 
        History2.Volume(History2.Count-1) = 0 
        History2.OpenInt(History2.Count-1) = OpenInt
        call History2.SaveData(xinheyue,xinshichang,1)
        mxxVolume = 0
        end if
       
     call Application.ActivateFrameWithCode("Technic",xinheyue,xinshichang,0)
     call Technic.Refresh     
    end if
  
   
   
    end if
 
end sub


Sub to_0()


'得到上期所指定品种的日线数据
Set History = marketdata.GetHistoryData("IF88","ZJ",0)
'删掉第一条数据
for i=0 to History.Count-1
History.Volume(i) = 0
next

call History.SaveData("IF88","ZJ",1)
End Sub

 

 


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


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

你也是用的http://222.73.7.161/bbs/dispbbs.asp?boardid=5&Id=50621

这里的代码吧,他的代码你运行过没,他的这段代码是可以执行并且有数据更新的

 

如果你可以执行没有问题,那么还是你自己程序哪里写的有问题,这个工作人员很难帮你排查的,一长串代码别人去看的时候是很困难的一段段的注释还要理解你想法

这本书就是很费事的


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


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

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:999.txt


图片点击可在新窗口打开查看此主题相关图片如下:捕获999.png
图片点击可在新窗口打开查看

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


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

021-20339087

电话我


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


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

谢谢老师,问题未得到解决,还得请老师帮忙。实际我的改动就是五段
1:建立几个对应于历史数据内容种类的几个数组
2.第一步拷贝历史数据的内容到数组,拷贝完毕销毁历史数据对象
3:拷贝当日分时数据的种类到上面的数组之中,拷贝完毕销毁当日数据对象
4:清空一个目标数据对象
5:拷贝各个数据数组的内容到清空了的目标数据对象。拷贝完毕销毁历史数据对象。

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


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

我的印象是marketdata的自带或marketdata.destroyminutedata等对象销毁有问题。突出表现是崩溃重启后,运行以下的简单代码继续崩溃:
'删除历史数据,创建第一根K线
    if shanchu = 1 then    
       Set History1 = marketdata.GetHistoryData(xinheyue,xinshichang,0)    
       for j = 0 to History1.Count-1
       History1.RemoveAt(j)
       next   
    end if


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


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

Set History1 = marketdata.GetHistoryData("IF00","ZJ",0) 

application.MsgOut   History1.Count-1
for j = 0 to History1.Count-1
History1.RemoveAt(j)
call History1.SaveData("IF00","ZJ",1)
next  

call MarketData.DestroyHistoryData

 

 

和这个无关,你看下这样清空if00的数据是否有问题


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