金字塔Stock.Array與自定義數(shù)組的應(yīng)用 [金字塔]
- 咨詢內(nèi)容:
一、測(cè)試金字塔Stock.Array時(shí),發(fā)現(xiàn)里邊只能裝數(shù)字字段,不能裝文字字段。
為了能取出“動(dòng)態(tài)顯示牌”中符合條件記錄的“代碼、名稱,價(jià)格”,在
測(cè)試“幫助中范例”的時(shí)候,加入了自定義數(shù)組。
二、測(cè)試結(jié)果: Stock.Array 裝入、取出數(shù)據(jù)正確。而自定義數(shù)組裝入取出數(shù)據(jù)時(shí)出現(xiàn)差錯(cuò)。
錯(cuò)誤表現(xiàn):以2013年2月25日中金期貨為例:查出符合條件的記錄是6條, Stock.Array
裝入、取出正確,自定義數(shù)組只裝入了3條記錄,少了3條。
三、附腳本及測(cè)試結(jié)果如下:
Sub LX_JC()
dim d,k
dim mc()
Set d = CreateObject("Stock.Array") '測(cè)試:金字塔數(shù)組,只能裝入數(shù)據(jù)型字段
Count = MarketData.GetReportCount("zj")
application.MsgOut "Count:"&Count
redim mc( Count) '根據(jù)市場(chǎng)記錄總數(shù)定義數(shù)組,準(zhǔn)備裝符合條件字段
For i = 0 To Count-1
Set Report3 = MarketData.GetReportDataByIndex("zj",i)
if Report3.open >0 Then '條件:取當(dāng)日正常交易的全部記錄。
mc(i)= "名稱:"&Report3.stockname&":代碼:"& Report3.Label &":價(jià)格:"&Report3.NewPrice
k=k+1 '對(duì)裝入自定義數(shù)組的記錄進(jìn)行計(jì)數(shù),判定裝入幾條記錄
d.AddBack(Report3.NewPrice) '金字塔數(shù)組,正在裝入數(shù)據(jù)型記錄
End if
Next
application.MsgOut "d.count:"&d.count&":計(jì)數(shù)器k=:"&k
application.MsgOut mc(0) '輸出:裝入金字塔記錄數(shù)和自定義數(shù)組中記錄條數(shù),結(jié)果相等。
application.MsgOut mc(1)
application.MsgOut mc(2)
application.MsgOut mc(3) '取出自定義數(shù)組所有記錄驗(yàn)證:發(fā)現(xiàn)問題:數(shù)組中實(shí)際只裝3條
application.MsgOut mc(4)
application.MsgOut mc(5) '記錄,與裝入記錄計(jì)數(shù)器K值比較少了3條。
For n =0 To d.count-1
application.MsgOut "數(shù)組中的值:"&n+1&":"&d.GetAt(n)
application.MsgOut mc(n)
Next '循環(huán)方式輸出金字塔數(shù)組裝入記錄和自定義數(shù)組裝入的記錄,
End Sub '發(fā)現(xiàn):金字塔數(shù)組中6條記錄,自定義數(shù)組中只有三條。請(qǐng)問:錯(cuò)在哪兒?
四、附運(yùn)行輸出結(jié)果:Count:17
d.count:6:計(jì)數(shù)器k=:6
名稱:股指連續(xù):代碼:IF00:價(jià)格:2605
名稱:股指1303:代碼:IF03:價(jià)格:2605
名稱:股指1304:代碼:IF04:價(jià)格:2618.2
數(shù)組中的值:1:2605
名稱:股指連續(xù):代碼:IF00:價(jià)格:2605
數(shù)組中的值:2:2605
數(shù)組中的值:3:2618.2
數(shù)組中的值:4:2632.6
名稱:股指1303:代碼:IF03:價(jià)格:2605
數(shù)組中的值:5:2657.8
名稱:股指1304:代碼:IF04:價(jià)格:2618.2
數(shù)組中的值:6:2612.264
敬請(qǐng)老師指導(dǎo)。謝謝。
- 金字塔客服:
直接使用VB的數(shù)組就行了
dim aTest(n,k) '定義n行,k列的數(shù)組
使用的時(shí)候
aTest(i,0)="AAA"
aTest(i,1)=2500
...
- 用戶回復(fù):
感謝版主指導(dǎo)。
經(jīng)過測(cè)試,本例中使用二維數(shù)據(jù)測(cè)試結(jié)果,無論是定義成一行多列,還是定義成一列多行,顯示結(jié)果都是一樣,少3條記錄。 邀請(qǐng)版主能親自測(cè)試一下。
附:用一列多行進(jìn)行測(cè)試(摘要),(因?yàn)檫@里不能用轉(zhuǎn)置)請(qǐng)看定義或輸出句子是否有問題:
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) '取出自定義數(shù)組所有記錄驗(yàn)證:發(fā)現(xiàn)問題:數(shù)組中實(shí)際只裝3條
application.MsgOut mc(4,1)
application.MsgOut mc(5,1)輸出結(jié)果:少3條記錄。
d.count:6:計(jì)數(shù)器k=:6
名稱:股指連續(xù):代碼:IF00:價(jià)格:2605
名稱:股指1303:代碼:IF03:價(jià)格:2605
名稱:股指1304:代碼:IF04:價(jià)格:2618.2
數(shù)組中的值:1:2605
名稱:股指連續(xù):代碼:IF00:價(jià)格:2605
數(shù)組中的值:2:2605
數(shù)組中的值:3:2618.2
數(shù)組中的值:4:2632.6
名稱:股指1303:代碼:IF03:價(jià)格:2605
數(shù)組中的值:5:2657.8
名稱:股指1304:代碼:IF04:價(jià)格:2618.2
數(shù)組中的值:6:2612.264 - 網(wǎng)友回復(fù):
代碼中多加幾條 application.MsgOut 跑跑看看,看看程序中的運(yùn)行邏輯
- 網(wǎng)友回復(fù):
問題解決:
原來問題是:
For i = 0 To Count-1 結(jié)果是17
k=k+1 結(jié)果是6
也就是說,通過17次循環(huán),把符合條件的6條記錄裝入數(shù)組的同時(shí),把不符合條件的11條記錄,以空記錄的方式也裝入了數(shù)組。
測(cè)試要求輸出為:
application.MsgOut mc(0)
application.MsgOut mc(1)
application.MsgOut mc(2)
application.MsgOut mc(3)application.MsgOut mc(4)
application.MsgOut mc(5)
實(shí)際上只輸出了前6條記錄中,包含有空記錄。如果把17條全部輸出,符合條件的記錄正好是6條。
有思路,想編寫各種指標(biāo)公式,程序化交易模型,選股公式,預(yù)警公式的朋友
可聯(lián)系技術(shù)人員 QQ: 262069696 進(jìn)行 有償 編寫!(不貴!點(diǎn)擊查看價(jià)格!)
相關(guān)文章
-
沒有相關(guān)內(nèi)容