以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  marketdata.GetHistoryData("if11","zj",0) 获取的是当前K以前的所有数据吗?  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=183954)

--  作者:sword8586
--  发布时间:2021/1/17 21:40:04
--  marketdata.GetHistoryData("if11","zj",0) 获取的是当前K以前的所有数据吗?

如题: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
--  发布时间:2021/1/18 9:28:32
--  

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


--  作者:sword8586
--  发布时间: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
--  发布时间:2021/1/18 10:18:08
--  

Count

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

 

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

 

 

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


--  作者:sword8586
--  发布时间: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
--  发布时间:2021/1/18 10:31:54
--  

电话我把

021-20339087


--  作者:sword8586
--  发布时间:2021/1/26 6:54:26
--  

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


--  作者:sword8586
--  发布时间:2021/1/26 7:01:36
--  
我就是直接把文档拷贝在记事本上编辑,然后再直接拷贝回来就发生正中情况.
--  作者:yukizzc
--  发布时间:2021/1/26 9:55:04
--  

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

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

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

--  作者:sword8586
--  发布时间: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