金字塔VBA數(shù)據(jù)庫(kù)控件實(shí)例 共大家參考 [金字塔]
- 咨詢(xún)內(nèi)容:
按照自己的交易思想來(lái)開(kāi)發(fā)相應(yīng)的程序最大的一個(gè)宗旨就是簡(jiǎn)單化,系統(tǒng)不能搞得太復(fù)雜,免得某個(gè)環(huán)節(jié)出現(xiàn)問(wèn)題導(dǎo)致錯(cuò)過(guò)交易機(jī)會(huì)。
作為一個(gè)測(cè)試,將自己預(yù)定義好的預(yù)埋單保存到一個(gè)標(biāo)準(zhǔn)的文本文件里面(這個(gè)預(yù)埋單的期限不僅僅是今天,也可能到未來(lái)的三個(gè)月或者一個(gè)月)。事實(shí)上,我們使用數(shù)據(jù)庫(kù)來(lái)保存這些記錄,但是一個(gè)數(shù)據(jù)庫(kù)文件過(guò)于龐大,而且還有安裝引擎等東西,麻煩,如果異地在異機(jī)上操作(本人還有工作),還要再次安裝這些數(shù)據(jù)庫(kù)(可能除了ACESS之外等小型文件之外)。最好的方法就是使用文本文件,也好編輯。文本編輯器很多。編輯的格式也簡(jiǎn)單。
下面幾個(gè)例子:
假設(shè) 我的預(yù)埋單的記錄保存在標(biāo)準(zhǔn)化的文件內(nèi) test.csv (逗號(hào)或者TAB或者自定義的符號(hào)作為隔離符)。
假設(shè)所在文件夾子 d:\jameszyj 下 完整的路徑為 d:\jameszyj\test.csv
1、建立文件型或者跟系統(tǒng)性的的ODBC (控制面板 管理工具 下 的ODBC管理器)
dsn= jameszyj
很簡(jiǎn)單就可以設(shè)置了,只要設(shè)定好目錄就可以了, 即 d:\jameszyj
那么該文件子底下每個(gè)文本文件就是一個(gè)表。
該文件夾下還有 一個(gè)文件 schema.ini 這里面保存本目錄下每個(gè)文本文件的信息。
其中有個(gè) key :ColNameHeader=false 默認(rèn)值是false ,可以改成true 相當(dāng)于表結(jié)構(gòu)的名字
2、完成之后在金字塔做以下工作
新建一個(gè)FORM對(duì)象,然后在vba控件欄(工具箱)增加一個(gè)一個(gè)數(shù)據(jù)庫(kù)控件 這個(gè)數(shù)據(jù)庫(kù)控件在金字塔的主目錄下
名字為:EDITGRIDCTRLLIB.OCX 金字塔安裝之后就注冊(cè)好了
在工具箱右鍵點(diǎn)擊"添加控件"的時(shí)候 彈開(kāi)一個(gè)窗口 在窗口的最下面 會(huì)看到"可以編輯的網(wǎng)格控件" 在其左邊的checkbox 點(diǎn)擊之后確定 就成功將該控件添加到面板上,就可以像使用MS FORMS 2.0 控件那樣使用了。
如果找不到這個(gè)控件,可以把這個(gè)文件拷貝到c:\windows\system32下
然后使用以下命令就可以注冊(cè)了:
regsvr32 editgridctrllib.ocx
3、實(shí)現(xiàn)部分
將該網(wǎng)格控件拖到 FORM上 右鍵點(diǎn)擊 然后在窗口內(nèi) 將名字命為 fg
Sub test_Load()
set lnv_sqlca = createobject("adodb.connection")
lnv_sqlca.c
lnv_sqlca.open
if lnv_sqlca.state <> 1 then
msgbox "不能打開(kāi)交易記錄",0,"Warning Tip"
exit sub
end if
set lnv_rs = createobject("adodb.recordset")
lnv_rs.open "select * from test.csv",lnv_sqlca ' 每個(gè)文本文件就是一個(gè)表
set test_fg.datasource = lnv_rs
lnv_sqlca.close
End Sub然后啟動(dòng)VBA 執(zhí)行該窗口,窗口打開(kāi)之后,該網(wǎng)格數(shù)據(jù)控件就顯示出文本文件的內(nèi)容了。
作為例子,僅供參考。
這樣子信息的保存通過(guò)這個(gè)思路就可以實(shí)現(xiàn)了。我們完全可以借助金字塔的VBA功能可以開(kāi)發(fā)出自己的交易系統(tǒng),套利系統(tǒng),程序交易模型,太棒了。
但有一個(gè)關(guān)鍵的問(wèn)題是,金字塔的多線(xiàn)程處理可能要加強(qiáng),少用循環(huán)語(yǔ)句,特別是循環(huán)語(yǔ)句內(nèi)需要執(zhí)行較多時(shí)間的時(shí)候,系統(tǒng)就會(huì)被這個(gè)循環(huán)獨(dú)占,導(dǎo)致金字塔內(nèi)的其他任務(wù)會(huì)在擱置。特別是這個(gè)任務(wù)最佳的觸發(fā)條件正好處于循環(huán)之內(nèi)的時(shí)候。
- 金字塔客服:
'上面的代碼粘貼過(guò)來(lái)的時(shí)候有點(diǎn)不對(duì)
Sub test_Load()
set lnv_sqlca = createobject("adodb.connection")
lnv_sqlca.c
lnv_sqlca.open
if lnv_sqlca.state <> 1 then
msgbox "不能打開(kāi)交易記錄",0,"Warning Tip"
exit sub
end if
set lnv_rs = createobject("adodb.recordset")
lnv_rs.open "select * from test.txt",lnv_sqlca
set test_fg.datasource = lnv_rs
lnv_sqlca.close
End Sub - 用戶(hù)回復(fù):
不錯(cuò),論壇因你而精彩
由于論壇的某些限制,部分代碼無(wú)法正常貼出,參考本論壇提供上傳文件的方法,寫(xiě)成文件,存于網(wǎng)絡(luò),貼鏈接
- 網(wǎng)友回復(fù):
新版已經(jīng)增加 application.PeekAndPump 方法,可以實(shí)現(xiàn)異步操作。
但是提醒用戶(hù),異步操作對(duì)編程能力要求很高,稍有補(bǔ)注意就會(huì)導(dǎo)致程序崩潰
- 網(wǎng)友回復(fù): 期待。。。
有思路,想編寫(xiě)各種指標(biāo)公式,程序化交易模型,選股公式,預(yù)警公式的朋友
可聯(lián)系技術(shù)人員 QQ: 1145508240 進(jìn)行 有償 編寫(xiě)!(不貴!點(diǎn)擊查看價(jià)格!)
相關(guān)文章
-
沒(méi)有相關(guān)內(nèi)容