金字塔Stock.Array与自定义数组的应用 [金字塔]
- 咨询内容:
一、测试金字塔Stock.Array时,发现里边只能装数字字段,不能装文字字段。
为了能取出“动态显示牌”中符合条件记录的“代码、名称,价格”,在
测试“帮助中范例”的时候,加入了自定义数组。
二、测试结果: Stock.Array 装入、取出数据正确。而自定义数组装入取出数据时出现差错。
错误表现:以2013年2月25日中金期货为例:查出符合条件的记录是6条, Stock.Array
装入、取出正确,自定义数组只装入了3条记录,少了3条。
三、附脚本及测试结果如下:
Sub LX_JC()
dim d,k
dim mc()
Set d = CreateObject("Stock.Array") '测试:金字塔数组,只能装入数据型字段
Count = MarketData.GetReportCount("zj")
application.MsgOut "Count:"&Count
redim mc( Count) '根据市场记录总数定义数组,准备装符合条件字段
For i = 0 To Count-1
Set Report3 = MarketData.GetReportDataByIndex("zj",i)
if Report3.open >0 Then '条件:取当日正常交易的全部记录。
mc(i)= "名称:"&Report3.stockname&":代码:"& Report3.Label &":价格:"&Report3.NewPrice
k=k+1 '对装入自定义数组的记录进行计数,判定装入几条记录
d.AddBack(Report3.NewPrice) '金字塔数组,正在装入数据型记录
End if
Next
application.MsgOut "d.count:"&d.count&":计数器k=:"&k
application.MsgOut mc(0) '输出:装入金字塔记录数和自定义数组中记录条数,结果相等。
application.MsgOut mc(1)
application.MsgOut mc(2)
application.MsgOut mc(3) '取出自定义数组所有记录验证:发现问题:数组中实际只装3条
application.MsgOut mc(4)
application.MsgOut mc(5) '记录,与装入记录计数器K值比较少了3条。
For n =0 To d.count-1
application.MsgOut "数组中的值:"&n+1&":"&d.GetAt(n)
application.MsgOut mc(n)
Next '循环方式输出金字塔数组装入记录和自定义数组装入的记录,
End Sub '发现:金字塔数组中6条记录,自定义数组中只有三条。请问:错在哪儿?
四、附运行输出结果:Count:17
d.count:6:计数器k=:6
名称:股指连续:代码:IF00:价格:2605
名称:股指1303:代码:IF03:价格:2605
名称:股指1304:代码:IF04:价格:2618.2
数组中的值:1:2605
名称:股指连续:代码:IF00:价格:2605
数组中的值:2:2605
数组中的值:3:2618.2
数组中的值:4:2632.6
名称:股指1303:代码:IF03:价格:2605
数组中的值:5:2657.8
名称:股指1304:代码:IF04:价格:2618.2
数组中的值:6:2612.264
敬请老师指导。谢谢。
- 金字塔客服:
直接使用VB的数组就行了
dim aTest(n,k) '定义n行,k列的数组
使用的时候
aTest(i,0)="AAA"
aTest(i,1)=2500
...
- 用户回复:
感谢版主指导。
经过测试,本例中使用二维数据测试结果,无论是定义成一行多列,还是定义成一列多行,显示结果都是一样,少3条记录。 邀请版主能亲自测试一下。
附:用一列多行进行测试(摘要),(因为这里不能用转置)请看定义或输出句子是否有问题:
redim mc (Count-1,1)
application.MsgOut mc(0,1)
application.MsgOut mc(1,1)
application.MsgOut mc(2,1)
application.MsgOut mc(3,1) '取出自定义数组所有记录验证:发现问题:数组中实际只装3条
application.MsgOut mc(4,1)
application.MsgOut mc(5,1)输出结果:少3条记录。
d.count:6:计数器k=:6
名称:股指连续:代码:IF00:价格:2605
名称:股指1303:代码:IF03:价格:2605
名称:股指1304:代码:IF04:价格:2618.2
数组中的值:1:2605
名称:股指连续:代码:IF00:价格:2605
数组中的值:2:2605
数组中的值:3:2618.2
数组中的值:4:2632.6
名称:股指1303:代码:IF03:价格:2605
数组中的值:5:2657.8
名称:股指1304:代码:IF04:价格:2618.2
数组中的值:6:2612.264 - 网友回复:
代码中多加几条 application.MsgOut 跑跑看看,看看程序中的运行逻辑
- 网友回复:
问题解决:
原来问题是:
For i = 0 To Count-1 结果是17
k=k+1 结果是6
也就是说,通过17次循环,把符合条件的6条记录装入数组的同时,把不符合条件的11条记录,以空记录的方式也装入了数组。
测试要求输出为:
application.MsgOut mc(0)
application.MsgOut mc(1)
application.MsgOut mc(2)
application.MsgOut mc(3)application.MsgOut mc(4)
application.MsgOut mc(5)
实际上只输出了前6条记录中,包含有空记录。如果把17条全部输出,符合条件的记录正好是6条。
有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友
可联系技术人员 QQ: 262069696 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容