金字塔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 進行 有償 編寫!(不貴!點擊查看價格!)
相關文章
-
沒有相關內容