以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  [求助]一个奇怪的问题。BLOCK对象最后二项数据缺乏。  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=8850)

--  作者:yeyi
--  发布时间:2011/11/7 14:41:38
--  [求助]一个奇怪的问题。BLOCK对象最后二项数据缺乏。

一个VBA程序,导出板块中的市场代码和品种代码到文本文件中。

前面数据导出正常,板块中的最后二项数据均为空白。

 

比如一个板块有5个品种:SH600104,SZ000758,SH600756,SZ000089,SH600108

结果板块文本文件中只有:

SH600104

SZ000758

SH600756

再加2行空行。

是否GetStockMarket函数有BUG.

另外,count到底是基于0还是基于1的

 

TIMAX=1

 blocktype(TIMAX)="程-预警板块-大幅上涨模式"
 blockname(TIMAX)= "当日中大幅上涨板块"

 

 Set b = CreateObject("Stock.Block")
 
 
 
 FOR I=1 TO  TIMAX 
 
    \' init_block_data_TextBoxType.Text =blocktype(I)
  \'   init_block_data_TextBoxBlock.Text = blockname(I)
     \'init_block_data.show()
 
         application.MsgOut Date &" " &Time& "导出板块数据....:"&blocktype(I)&"  名称:"&blockname(I)

      If b.IsTypeExist(blocktype(I))=0 Then  
     
          End if    
 
      If b.IsBlockExist(blockname(I))=0  Then
         
      else
           
            call  b.open(blockname(I),1)
            tnblockcount=b.count
   
                  
            tcfiledire=Application.AppPath+"\\systemblock\\"
            tcfilename=blockname(I)+".txt"
            tcfilepath=tcfiledire+tcfilename
   
             Set fs = CreateObject("Scripting.FileSystemObject")

             Set a = fs.CreateTextFile(tcfilepath, True)
             a.Close

            for J=0 TO tnblockcount
                   tcmarket=b.GetStockMarket(j)
                   tccode=b.GetStockCode(j)
                   tcstr=tcmarket+tccode
                   call document.debugfile(tcfilepath,tcstr,0)
            next      
           
          End if

    NEXT
 
 
     
    application.MsgOut Date &" " &Time& "导出板块数据完成!" 


--  作者:26327756l
--  发布时间:2011/11/7 16:05:29
--  

问题正在解决中


--  作者:26327756l
--  发布时间:2011/11/8 9:33:42
--  

count 只是代表总数,有多少个合约就会显示多少,它不是数组变量。

其他问题还在解决中

[此贴子已经被作者于2011-11-8 9:33:58编辑过]

--  作者:26327756l
--  发布时间:2011/11/8 9:42:44
--  

GetStockMarket 不是BUG 可以正常使用

我贴上一个GetStockMarket的使用,并不是保存到文件里,只是打印一下板块的合约代码。从你上面的代码看,你好像是少用了 OPEN 方法。

 

 Set b = CreateObject("Stock.Block")
 
call b.open("上海A股",0)

application.MsgOut  b.count

 
 FOR I=1 TO  b.count
   application.MsgOut b.GetStockCode(i)
 next
    
 


--  作者:yeyi
--  发布时间:2011/11/8 10:09:48
--  
有啊, call b.open(blockname(I),1)
--  作者:26327756l
--  发布时间:2011/11/8 10:13:14
--  

有些数据,是你定义的,我不能像你那样测试。

我只能测试一下GetStockMarket和GetStockCode 方法,测试后是没有问题的,可以输出板块里的合约,至于你的问题,建议你不要先保存到文档里,先打印输出验证一下数据是否存在和正确,还验证open的参数是否正确。

[此贴子已经被作者于2011-11-8 10:23:51编辑过]