利用數據庫擴充金字塔的數據存放及分析能力 [金字塔]
- 咨詢內容:
數據庫技術以其簡單的操作和優異的跨平臺性能,早已經廣泛應用于各行各業中。配合金字塔強大的數據庫支持能力,一定會讓用戶如虎添翼。
金字塔中使用數據庫主要有如下兩點好處:
1、擴充數據存儲能力,雖然金字塔支持自定義數據功能,但使用數據庫操作和維護顯然要比他方便的多。
2、數據庫技術已經是一熱門成熟技術,用戶可以通過自己或很多第三方軟件來維護數據,實現與金字塔的數據交流。采用與數據庫結合的方式,大大增強了公式系統的靈活性,用戶可以將一些非常復雜的計算使用外部專用的分析軟件來做,最后將分析結果放到數據庫中,再由公式系統來進行繪制。
公式系統支持如下幾個數據庫函數:
? DATABASE 連接數據庫.用法:DATABASE(STRING),STRING為數據庫ADO連接字符串
例如:
(1)連接ACCESS數據庫:DATABASE('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\test.mdb')表示連接d:\Test.MDB數據庫文件.
(2)通過DSN數據源對任何支持ODBC的數據庫進行連接:DATABASE('Data Source=adotest;UID=sa;PWD=1234;')其中adotest是數據源名稱,sa為登陸用戶,1234為登陸密碼
(3)不通過DSN對SQL SERVER數據庫進行連接: DATABASE('driver={SQL Server};Server=127.0.0.1;DATABASE=test;UID=sa;PWD=1234')其中Server是127.0.0.1服務器的名稱或IP地址,test是數據庫的名稱
(4)不通過DSN對Oracle數據庫進行連接: DATABASE('provider=MSDAORA;Data Source=servername;User ID=sa;Password=1234;')其中servername是服務器名稱或IP地址
? DBTABLE 檢索記錄集,使用SQL語句檢索記錄集,用法:DBTABLE(SQL),SQL為檢索記錄集字符串.例如:DBTABLE('Select * From @Code@ Order By StockDate'),表示從品種代碼表中選擇全部字段數據,并按照StockDate字段類型從小到達排序.StockDate為一個日期型字段,數據庫中必須要有此字段,否則系統將無法工作.@Code@在運行中會被系統替換成品種的具體品種代碼,例如SH600215。
? DBVALUE 取數據庫中數值數據,用法:DBVALUE(S),S為字段名稱,數據必須為浮點類型,例如:DBVALUE('STOCKCLOSE')表示取數據庫中的STOCKCLOSE字段數據.
? DBSTRING 取數據庫中字符串數據,用法:DBSTRING(S),S為字段名稱,數據必須為字符類型,例如:DBVALUE('STOCKNAME')表示取數據庫中的STOCKNAME字符串數據.
? DBREADTYPE 數據讀取模式,用法:DBREADTYPE(N),N取0或1,默認為0,當N=0時如果DBVALUE或者DBSTRING找不到當日數據,那么取其之前數據。不然這兩個函數將返回0值。
公式示例:
//連接d:\test.mdb數據庫
DATABASE('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\test.mdb');
//檢索數據庫表
DBTABLE('Select * From @Code@ Order By StockDate');
//讀取STOCKCLOSE字段數據
cc:DBVALUE('STOCKCLOSE');
完整公式示例及數據庫請在 http://www.weistock.com/download/dbdemo.zip 下載,做為示例,數據庫僅包含600000品種的日線數據
為了方便用戶操作,系統還提供GUI的數據庫開發助手,使用該助手可以使用戶更加快捷方便的為您的公式支持數據庫。操作步驟如下:
? 在公式編輯界面上單擊“插入”菜單,然后選擇“數據庫支持”。
金字塔的表(動態顯示牌)技術也非常強大,同時也支持數據庫功能,用戶可以在表上面顯示某個數據庫的字段內容,使用方法也非常簡單,用戶可以在表高級編輯和表頭定制這兩個地方來實現功能. - 金字塔客服:
金字塔的數據庫功能很棒!
提幾點建議:
1、DBTABLE(SQL)函數中的SQL語句在執行前似乎會被自動轉換為大寫字母,這對大多數表名、字段名不區分大小寫的數據庫來說是沒有影響的,對于區分大小寫的數據庫來就要求采用大寫的表名、字段名,很不方便!
強烈建議:不要對函數中的SQL進行大小寫轉換(象ADO一樣,用戶輸入什么就傳什么)。其中@Code@可改為@CODE@或@code@或@Code。
2、"數據庫中必須要有stockdate字段"要求用戶重新構建數據庫或對現有數據庫進行調整或在SQL中指定字段名稱,不夠靈活,而且有些ODBC驅動程序不支持"select old AS new..."命令。
建議:增加一個函數如DBTABLE2(SQL),不要求有stockdate字段,只要求SQL返回結果中第一個字段(不管字段名是什么)必須是日期型而且按從小到大排序。
3、建議:增加一個DBEXECUTE(SQL)命令,用于將SQL發送到數據庫執行,不返回結果,類似于ADO Connection對象的Execute方法;象DATABSE()函數一樣每只證券只執行一次。
- 用戶回復:
建議很好,我們會認真采納
- 網友回復:
謝謝回復。
- 網友回復:
建議下次升級時修改一下DBTABLE(SQL)函數,不要對DBTABLE(SQL)函數中的SQL語句進行大小寫轉換(象ADO一樣,用戶輸入什么就傳什么)。
有思路,想編寫各種指標公式,程序化交易模型,選股公式,預警公式的朋友
可聯系技術人員 QQ: 262069696 進行 有償 編寫!(不貴!點擊查看價格!)
相關文章
-
沒有相關內容