以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  VBA多公式选股问题  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=142491)

--  作者:天涯doa
--  发布时间:2016/11/10 13:36:09
--  VBA多公式选股问题

我用VBA代码选股,有三个选股公式,但是最后出的结果只是最后一个公式 结果,不知道哪个代码出问题了,求指导!

以下内容为程序代码:

1 dim blocktype2(5)
2 dim blockname2(5)
3 s1=""
4 s2=""
5 s3=""
6 Set b = CreateObject("Stock.Block")
7 TIMAX2=1
8 blocktype2(TIMAX2)="上海证券交易所"
9 blockname2(TIMAX2)= "上海A股"
10 TIMAX2=TIMAX2+1
11 blocktype2(TIMAX2)="深圳证券交易所"
12 blockname2(TIMAX2)= "深圳A股"
13 TIMAX2=TIMAX2+1
14 blocktype2(TIMAX2)="深圳证券交易所"
15 blockname2(TIMAX2)= "深圳创业"
16
17 FOR I=1 TO TIMAX2
18 \'application.MsgOut tnblockcount & blockname2(I)
19 call b.open(blockname2(I),0)
20 tnblockcount=b.count
21 for J=0 TO tnblockcount-1
22 TCMARKET=b.GetStockMarket(J)
23 TCCODE=b.GetStockCode(J)
24 Set Formula1 = marketdata.STKINDI(TCCODE,TCMARKET,"中枢选股",0,5)
25 Set Formula2 = marketdata.STKINDI(TCCODE,TCMARKET,"中枢选股(4,3,-3,160)",0,5)
26 Set Formula3 = marketdata.STKINDI(TCCODE,TCMARKET,"原版信号",0,5)
27 DataSize=Formula1.DataSize
28 IF Formula1.GetBufData("信号",DataSize-1) =1 THEN 
29 s1=s1 & TCCODE & chr(10)
31 END IF
32 IF Formula2.GetBufData("信号",DataSize-1) =1 THEN
33 s2=s2 & TCCODE & chr(10)
34 END IF
35 IF Formula3.GetBufData("信号3",DataSize-1) =1 THEN
36 s3=s3 & TCCODE & chr(10)
37 END IF
38 next
39 next

 

其中s1、s2、s3储存三个公式的选股信号,但是经过测试发现,最后s1、s2、s3中的结果都是s3的结果,也就都是Formula3选出来的,但实际上这三个结果是不同的,这个是什么原因啊

[此贴子已经被作者于2016-11-10 13:37:07编辑过]

--  作者:yukizzc
--  发布时间:2016/11/10 14:31:32
--  

看stkindi说明

注意: 该方法返回的Formula对象将使用共享的内存缓冲区,如果你有多个品种需要转换并且同时处理,请使用数组类Array.保存转换后的Formula对象数据.

 

GetHistoryData 对象

看这个方法下面有如何使用数组保存数据的例子