歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOCX文檔下載  

金字塔決策交易系統(tǒng)—高級教程(2016修訂版)

  • 資源ID:10718303       資源大?。?span id="yhehg55" class="font-tahoma">1.67MB        全文頁數(shù):99頁
  • 資源格式: DOCX        下載積分:15積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要15積分
郵箱/手機:
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機號,方便查詢和重復(fù)下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗證碼:   換一換

 
賬號:
密碼:
驗證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認打開,此種情況可以點擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標題沒有明確說明有答案則都視為沒有答案,請知曉。

金字塔決策交易系統(tǒng)—高級教程(2016修訂版)

金字塔決策交易系統(tǒng)初級教程上海金之塔信息技術(shù)有限公司2016金字塔決策交易系統(tǒng)高級教程l 本教程主要介紹金字塔的后臺程序化交易,VBA、C+二次開發(fā)的編程。目錄目錄2第一章 金字塔的后臺程序化交易11.1后臺程序化工作機理11.2 后臺程序化交易函數(shù)21.3 后臺套利模型范例51.4 后臺程序化的啟用71.5 后臺程序化的調(diào)試81.6 后臺程序化注意事項10第二章 圖表交易和后臺交易的主要區(qū)別和聯(lián)系122.1 圖表、交易函數(shù)的區(qū)別122.11 圖表交易函數(shù)122.12 后臺交易函數(shù)122.3圖表交易和后臺交易的主要區(qū)別13第三章 基于VBA的二次開發(fā)143.1金字塔VBA與OFFICE VBA區(qū)別和聯(lián)系143.2 VBA 原理的隱喻143.3 VBA 簡介153.3.1VBA 及其IDE 初步153.3.2模塊、函數(shù)和過程183.3.3數(shù)據(jù)類型和變量203.3.4VBA 語言基礎(chǔ)233.3.5用戶窗體293.4金字塔的對象模型333.4.1Application 對象343.4.2Order 對象363.4.3MarketData 對象453.4.4 ReportData對象493.4.5 HistoryData 對象503.4.6 Document對象523.4.7 Frame 對象543.4.8 Grid對象563.4.9 Formula 對象623.4.10 NetWork 對象633.4.11 TestReport 對象65第四章 VBA實用范例754.1 跨期套利交易范例754.2 金字塔VBA指標調(diào)用數(shù)據(jù)庫教程764.2.1數(shù)據(jù)庫的準備工作(vba使用數(shù)據(jù)庫首先我們需要連接數(shù)據(jù)庫)764.2.2 數(shù)據(jù)庫操作方法(具體代碼和注釋<使用時選取需要的代碼只要稍許修改>)77第五章 基于C+二次開發(fā)855.1使用金字塔C+ API開發(fā)策略的優(yōu)勢855.2金字塔的C+ API與主程序的組織結(jié)構(gòu)865.3金字塔的接口范例下載與簡要說明865.3.1 API接口報價行情訂閱865.3.2報價行情變化通知875.3.3獲取指定市場全部合約報價875.3.4歷史數(shù)據(jù)的獲取875.3.5下單委托指令885.3.6訂單狀態(tài)推送回報885.3.7策略編寫調(diào)試與跟蹤895.3.8API接口更多功能信息90第六章 自定義PEL函數(shù)916.1 使用VBA自定義PEL函數(shù)916.1.1自定義函數(shù)的格式916.1.2自定義函數(shù)的兩種工作模式926.2 使用C+DLL擴展函數(shù)程序調(diào)用94金字塔決策交易系統(tǒng)高級教程第一章 金字塔的后臺程序化交易金字塔提供功能性和擴展性更為強大的基于后臺預(yù)警模式的程序化交易模式(后臺程序化),可以在不影響用戶前臺圖形操作的情況下,高效地與預(yù)警系統(tǒng)一起工作,實現(xiàn)自動交易。由于該模式運行在后臺,不需要打開圖表占用過多的資源,且只需最后一個周期的信號,所以原則上公式不做多余計算,效率高,便于對多個品種同一個策略進行輪循監(jiān)控。從某種意義講,后臺程序化屬于圖表程序的深化,它的優(yōu)點是更注重于策略的高效執(zhí)行,更完美地實現(xiàn)策略的設(shè)計初衷。雖然后臺程序化的功能強大,但用戶切忌直接使用后臺策略,而跳過學習圖表程序化的過程。原因是在后臺程序化中用戶無法直接在圖表上看到信號的整個出現(xiàn)過程,因此對用戶的公式編寫水平有一定的要求。其次,用戶需要對金字塔的后臺交易系統(tǒng)工作機理有比較深的了解,并且要對自己的公式系統(tǒng)有清晰的認識,這樣一旦遇到問題也能及時找到原因。后臺交易過程中,一旦遇到問題,需要客戶掌握第八章后臺程序化交易調(diào)試的技巧。以我們多年的經(jīng)驗來看,用戶先將策略經(jīng)測評、優(yōu)化、圖表實盤上運行后,再轉(zhuǎn)化成后臺策略,會取得非常好的效果。1.1后臺程序化工作機理在初級教程中,我們介紹了基于虛擬數(shù)據(jù)技術(shù)的圖表程序化交易。想必經(jīng)過一段時間的學習,大家已將圖表程序化運用的相當純熟。不過當你進行實盤的時候,是否發(fā)現(xiàn)在某些情況下,例如碰到未成交單、未完全成交單、需要進行追撤單等更精細的下單操作時,圖表程序化就束手無策了。這是由于圖表基于虛擬數(shù)據(jù)的特性,無法與真實賬戶進行交互,虛擬數(shù)據(jù)的成交并不考慮實盤的的流動性情況,只要價格達到即成交。而實際情況可能并不是這樣。另一方面,當圖表程序化碰上多品種、多策略、或者較復(fù)雜的策略時,有時系統(tǒng)會顯得相對較慢、不流暢。這是由于圖表需要計算大量以往的歷史數(shù)據(jù)進行判斷操作,并在圖表上進行輸出。這消耗了相當多的資源。但實盤并不需要考慮歷史曾經(jīng)如何,實時交易需要考慮的是如何高效的執(zhí)行,其實只需根據(jù)最后一根K線上的數(shù)據(jù),來確定開平倉的動作。這也就是例如DYNAINFO等這些常數(shù)函數(shù)無法進行測評而實盤的公式確可以用的主要原因,因為DYNAINFO只有最新的一筆行情數(shù)據(jù),而沒有歷史的序列數(shù)據(jù)。金字塔后臺程序化也是這個道理,因為金字塔的后臺程序化只注重交易,因此無法用來測評??偨Y(jié)一下,金字塔的后臺程序化交易是金字塔很大的特色。從工作機制的角度看,后臺程序化在沿用PEL語言體系的情況下,為用戶創(chuàng)造了近似VB、C+才能達到的精細化、高效快捷程序化下單模式。因此它特別適合那些多周期、多策略、多品種的組合交易以及對效率要求較高的套利交易,為您的交易帶來無與倫比的便捷。1.2 后臺程序化交易函數(shù)金字塔的后臺程序化交易只能在專業(yè)版及更高級的版本中使用,它可以運行在序列和逐K線兩種模式,但是推薦序列模式運行,這樣可以極大提高后臺執(zhí)行的效率。為了讓用戶更快的編寫和熟悉金字塔的后臺程序化交易,金字塔的程序化交易函數(shù),前面都在交易系統(tǒng)函數(shù)名稱前加 T 字母,比如BUY改為TBUY, 使用方法大致相同,用戶仔細注意查看函數(shù)的使用說明。與圖表交易系統(tǒng)函數(shù)不同的是,后臺程序化交易的函數(shù)都使用實際的用戶持倉和資金。讓我們通過案例來學習后臺程序化交易函數(shù)。例1:MA指標后臺公式/中間變量MA3:MA(C,3);MA5:MA(C,5);/交易系統(tǒng)TBUY(CROSS(MA3,MA5),1,LMT,C); /按照最新價限價開多TSELL(CROSS(MA5,MA3),0,LMT,C);/按照最新價限價平多,0表示平掉全部持倉請注意TBUY和TSELL函數(shù)的參數(shù)出現(xiàn)了變化,真正的下單時,需要指定下單類型和價格的,否則系統(tǒng)會按照市價進行交易。 用以模擬交易的函數(shù)和真實交易的函數(shù),大部分只是有了前面T字母差別,大部分的用以交易評測的交易系統(tǒng),只要將交易函數(shù)部分前面加T字母即可解決,唯一區(qū)別最大的就是TBUY,TSELL,TBUYSHORT,TSELLSHORT 這4個函數(shù)與模擬交易用的函數(shù)區(qū)別較大,請仔細辨別。請注意后臺程序化交易不能使用圖表交易功能,且圖表交易和后臺交易的函數(shù)不能混用。交易控制符 THISCLOSE 在真實交易中被 LMT 等真實交易控制符所取代,金字塔的模擬交易控制符和真實交易控制符兩者不能通用。金字塔的真實下單函數(shù)只支持LMT限價 MKT市價 STP止損 STPLMT限價止損 這4個交易控制符。真實下單交易函數(shù),下單數(shù)量不再支持百分比模式。程序化交易的函數(shù)介紹:程序化交易系統(tǒng)之開多操作:用法:TBUY(COND,V,Type,P1,P2,AC,STOCK);表示當COND條件成立時,買入V股(手)當前品種,TYPE表示開倉類型,LMT限價 MKT市價 STP止損 STPLMT限價止損P1表示開倉價格,當TYPE為LMT和STP,STPLMT時為指定限價和止損價格,其他情況填0P2為止損限價,當TYPE為STPLMT時,必須指定P2的止損限價,其他情況填0,當P1止損價觸發(fā)時按照P2價格止損操作.當TYPE參數(shù)省略時,為市價開倉。AC為帳戶ID,為空時為系統(tǒng)默認帳戶,否則將下單到指定帳戶中STOCK為品種代碼,比如SH600215,為空或者不填時為當前品種后臺程序化交易不能使用圖表交易功能,且圖表交易和后臺交易的函數(shù)不能混用。例如,限價在圖表中函數(shù)為Limit,后臺為Lmt。市價在圖表是函數(shù)Market,在后臺是Mkt。例如:TBUY(C>O ,1000,LMT,C);表示收陽線則在本周期收盤價上買入1000股(手)。TBUY(C>0,1000,STP,CLOSE+0.2);表示收陽線則在本周期收盤價高于0.2元下1000股(手)止損單,當盤中價格到了觸發(fā)價時按市價開倉止損.TBUY(C>0,1000,STPLMT,CLOSE+0.2,CLOSE);表示收陽線則在本周期收盤價高于0.2元下1000股(手)止損單,當盤中價格到了觸發(fā)價時按CLOSE價格開倉止損。程序化交易系統(tǒng)之平多操作:TSELL(COND,V,Type,P1,P2,AC,STOCK); 用法同上程序化交易系統(tǒng)之開空操作:TBUYSHORT(COND,V,Type,P1,P2,AC,STOCK); 用法同上程序化交易系統(tǒng)之平空操作:TSELLSHORT(COND,V,Type,P1,P2,AC,STOCK); 用法同上注意:程序化交易系統(tǒng)的函數(shù)中交易類型Type與交易測試系統(tǒng)的差別例2:唐奇安通道模型/中間變量input:N(20,5,100,1),NS(10,0,60,1);Price:=AVGENTERPRICE;/持倉價位/交易條件開多平空條件:=CROSS(H, hhv(ref(h,1),N);開空平多條件:=CROSS(llv(ref(l,1), N),L);/交易系統(tǒng)SELLSHORT(開多平空條件 and 持倉<0,持倉,market);SELLSHORT(持倉<0,持倉,Stopr,Price+NS); /止損BUY(開多平空條件 and 持倉=0,30%,market);SELL(開空平多條件 and 持倉>0,持倉,market);SELL(持倉>0,持倉,Stopr,Price-NS);/止損BUYSHORT(開空平多條件 and 持倉=0,30%,market);/其他資產(chǎn):asset,noaxis,colorgreen;持倉:HOLDING,LINETHICK0;總次數(shù): TOTALTRADE,LINETHICK0;盈利:NUMWINTRADE,LINETHICK0;勝率:ROUNDS(100*PERCENTWIN,1),LINETHICK0;連虧:MAXSEQLOSS,LINETHICK0;連盈:MAXSEQWIN,LINETHICK0;將交易模型轉(zhuǎn)換成程序化交易系統(tǒng),主要是涉及交易系統(tǒng)函數(shù)的轉(zhuǎn)化,即在交易系統(tǒng)函數(shù)前加“t”,以及交易類型的改動;并且程序化交易函數(shù)都是在后臺運行,不能在圖表中顯示;交易數(shù)量不能用30%的寫法,只能用具體數(shù)量。因此,唐奇安通道模型轉(zhuǎn)化為可程序化交易的系統(tǒng):/中間變量input:N(20,0,60,1) ,NS(30,0,100,1);持倉:=tHOLDING,LINETHICK0;KCS:= intpart(tasset*0.3/(close*multiplier);/也表示30%的開倉數(shù)BUY1:=hhv(ref(h,1),N);SELL1:=llv(ref(l,1),N);Price:=tAVGENTERPRICE; /持倉價位/交易條件開多平空條件:=CROSS(H,BUY1);開空平多條件:=CROSS(SELL1,L);/交易系統(tǒng)TSELLSHORT(開多平空條件 and 持倉<0,t持倉,mkt);TSELLSHORT(持倉<0,持倉,Stp,Price+NS);TBUY(開多平空條件 and 持倉=0, KCS,mkt);TSELL(開空平多條件 and 持倉>0,持倉,mkt);TSELL(持倉>0,持倉,Stp,Price-NS);TBUYSHORT(開空平多條件 and 持倉=0, KCS,mkt);若想與交易模型完全一樣,后句則需這樣寫:tSELLSHORT(ref(開多平空條件,1) and 持倉<0,t持倉,mkt);tSELLSHORT(持倉<0,持倉,Stp,Price+NS);tBUY(ref(開多平空條件,1) and 持倉=0, KCS,mkt);tSELL(ref(開空平多條件,1) and 持倉>0,t持倉,mkt);tSELL(持倉>0,持倉,Stp,Price-NS);tBUYSHORT(ref(開空平多條件,1) and 持倉=0, KCS,mkt);注意:在公式編輯中,點擊 << 可彈出函數(shù)列表,可按類查找需要的函數(shù),雙擊該函數(shù)將直接引入公式。公式中的藍色字段為函數(shù)名,將鼠標放在未知的藍色字段上,將看到該函數(shù)的描述和基本用法。1.3 后臺套利模型范例基于后臺程序化效率高、操作靈活的特性,用來處理對價格異常敏感的套利交易就非常合適了。以下我們選取了常見的集中情況作為范例。(1)簡單價差類型的套利模型C1 為兩個品種的價差。當價差小于 300 時,買入開倉前一品種RB05,賣出開倉后一品種RB03當價差大于500時,賣出平倉前一品種,買入平倉后一品種當價差大于 600 時,賣出開倉前一品種,買入開倉后一品種當價差小于400時,買入平倉前一品種,賣出平倉后一品種由于涉及到需要同時下單到不同的品種,這里直接使用后臺程序化交易系統(tǒng)編寫。/中間變量C1:= “RB05close”-“RB03close”;/交易系統(tǒng)TBUY(CROSS(300,C1),10, mkt,0,0,SQRB05);/開多TBUYSHORT(CROSS(300,C1),10,mkt, 0,0,SQRB03); /開空TSELL(CROSS(C1,500),10,mkt, 0,0, SQRB05); /平多TSELLSHORT(CROSS (C1,500),10,mkt, 0,0, , SQRB03); /平空TBUYSHORT(CROSS(C1,600),10,mkt, 0,0, ,SQRB05); /開空TBUY(CROSS(C1,600),10, mkt, 0,0, SQRB03);/開多TSELLSHORT(CROSS (400,C1),10,mkt, 0,0, , SQRB05); /平空TSELL(CROSS (400,C1),10,mkt, 0,0, , SQRB03); /平多注意在后臺程序化交易監(jiān)控中,用戶至少需要監(jiān)控RB05或者RB03其中的一個。(2)如何編制技術(shù)指標的套利模型:/中間變量C1:= “RB05close”-“RB03close”;DIFF := EMA(C1,12) - EMA(C1,26); DEA := EMA(DIFF,9); MACD:=2*(DIFF-DEA); /交易條件平空開多條件 :=MACD>0; 平多開空條件 :=MACD<0; /交易系統(tǒng)TSELLSHORT(平多開空條件,10, mkt, 0,0, , SQRB03); /平空TBUY(平空開多條件,10,mkt, 0,0, SQRB05);/開多TSELL(平多開空條件,10, mkt, 0,0, SQRB05); /平多TBUYSHORT(平空開多條件,10,mkt, 0,0, , SQRB03); /開空(3)如何編制技術(shù)指標的多賬戶模型:賬戶1:16801賬戶2:16802/中間變量DIFF := EMA(C,12) - EMA(C,26); DEA := EMA(DIFF,9); MACD:=2*(DIFF-DEA); /交易系統(tǒng)IF THOLDING<0 THEN BEGINTSELLSHORT(MACD>0 and THOLDING<0, THOLDING, mkt, 0,0,16801); /平空TSELLSHORT(MACD>0,10, mkt, 0,0, 16802); /平空ENDIF THOLDING=0 THEN BEGINTBUY(MACD>0 and THOLDING=0,10,mkt, 0,0, 16801);/開多TBUY(MACD>0,10,mkt, 0,0, 16802);/開多ENDIF THOLDING>0 THEN BEGINTSELL(MACD<0 and THOLDING>0, THOLDING,10, mkt, 0,0,16801); /平多TSELL(MACD<0,10, mkt, 0,0,16802); /平多ENDIF THOLDING=0 THEN BEGINTBUYSHORT(MACD<0 and THOLDING=0,10,mkt, 0,0,16801); /開空TBUYSHORT(MACD<0,10,mkt, 0,0, 16802); /開空END所有上述模型僅供參考,據(jù)此交易風險自負。更多范例請登陸 金字塔論壇策略發(fā)布區(qū) http:/www.weistock.com/bbs/index.asp?boardid=101.4 后臺程序化的啟用選擇“交易后臺程序化交易”或按Ctrl + A會出現(xiàn)圖7.3本地預(yù)警交易。圖1.41本地預(yù)警交易(1)選“新增條件”,將出現(xiàn)圖7.4程序化條件設(shè)定圖1.42程序化條件設(shè)定(2) 參數(shù)設(shè)置 第一步:首先,點“指標公式”,選擇你的模型和使用周期;第二步:加入要監(jiān)控的品種;第三步:其它各種設(shè)置,注意:打勾“允許程序化交易”,其中,可將“下單需手工確認”關(guān)閉,如勾選自定義分品種下單,會出現(xiàn)確認對話框,請用戶詳看出現(xiàn)的每一個提示確認對話框;設(shè)定“預(yù)警時間間隔”及“時間范圍啟用”;等等然后按“確認” ;最后點擊“啟動預(yù)警”。(3)在程序化交易過程中,用戶可隨時點擊【監(jiān)控】,觀察系統(tǒng)運行情況,并可在信心爆棚時,手工加減倉干預(yù)。如圖7.5程序化交易明細1.43程序化交易明細1.5 后臺程序化的調(diào)試如前文所述,后臺程序化需要用戶對金字塔的后臺交易系統(tǒng)工作機理有比較深的了解,并且要對自己的公式系統(tǒng)有清晰的認識,現(xiàn)在,我們就將講解的后臺自動交易的調(diào)試內(nèi)容,這是每個后臺自動交易編寫用戶所必須掌握的基本的能力要求,只有用戶掌握了調(diào)試技巧,才能在金字塔的平臺上做出有效而又符合要求的后臺自動化交易模型。 供后臺調(diào)試金字塔提供了兩個函數(shù) DEBUGOUT 和 DEBUGFILE,其中DEBUGOUT是只針對程序化交易使用,在Ctrl+A預(yù)警設(shè)置窗口點擊“監(jiān)控”按鈕后的程序化交易監(jiān)控窗口,將顯示出當前每個品種的監(jiān)控過程以及下單動作。圖1.5DEBUGOUT函數(shù)的描述如下:DEBUGOUT(STR,NUM),STR為用戶指定輸出的一個行文字,NUM為用戶指定的一個監(jiān)控數(shù)字.例如:DEBUGOUT(當前資產(chǎn)為%.2f, TASSET),將在程序化交易的監(jiān)控部分打印出來 "當前資產(chǎn)為1234.00",(假設(shè)當前的資產(chǎn)為1234)"%.2f"為一個打印的控制符號,系統(tǒng)會將他替換為指定的一個數(shù)字輸出,%.2f為顯示兩位小數(shù),%.0f則表示不顯示小數(shù).用戶最常見的問題就是,從圖表上看明明應(yīng)該某個時間段應(yīng)該是開平倉了,但是結(jié)果確沒有反應(yīng),后臺并沒有按預(yù)計發(fā)出交易指令,這種情況用戶一般需要基于下面原因考慮:(1)用于交易的品種歷史數(shù)據(jù)是否補齊,因為金字塔的歷史數(shù)據(jù)是基于點播模式補充的,處于后臺交易的品種如果缺失數(shù)據(jù)將會導致交易信號出現(xiàn)不可預(yù)料的情況。(2)用戶所選擇的交易系統(tǒng)周期是否合理,預(yù)警監(jiān)控間隔時間是否合理,甚至用戶是否選中了“允許程序化交易”復(fù)選框。(3)用戶的TBUY等交易指令在多帳戶交易時,市價委托是否指定了交易價格,常見錯誤是用戶認為指定MKT指令后就不用填寫價格了,應(yīng)該填0補充。比如:MA3:MA(C,3);MA5:MA(C,5);開多條件:= CROSS(MA3,MA5);平多條件:= CROSS(MA5,MA3);TBUY(開多條件,1,LMT,C); /按照最新價限價開多TSELL(平多條件,0,LMT,C); /按照最新價限價平多,0表示平掉全部持倉這樣一個簡單的公式,是否出現(xiàn)交易信號,完全取覺于BK和平多條件這兩個變量的計算結(jié)果,只要這樣MA3:MA(C,3);MA5:MA(C,5);開多條件:= CROSS(MA3,MA5);平多條件:= CROSS(MA5,MA3);DEBUGOUT(開多條件=%.0f,開多條件);DEBUGOUT(平多條件=%.0f,平多條件);TBUY(開多條件,1,LMT,C); /按照最新價限價開多TSELL(平多條件,0,LMT,C); /按照最新價限價平多,0表示平掉全部持倉這樣用戶就可以一直在程序化交易監(jiān)控窗口看到整個變量在不斷循環(huán)中的值變化了,給用戶帶來了調(diào)試的機會。但是上述的只表達了開多條件,平多條件這兩個信號,可能并不能讓用戶最終找到問題原因,要找到,用戶可能還得將MA3,MA5的變量值變化也打印輸出,只要一直這樣往上逐個篩選每個結(jié)果數(shù)據(jù),就能最終找到問題的原因。金字塔的另一個非常重要函數(shù)DEBUGFILE,可以將調(diào)試日志記錄文件中,方便用戶查詢更長的歷史記錄,如果用戶不習慣使用DEBUGOUT的窗口輸出模式,可以使用DEBUGFILE做輸出,使用其他文本工具打開。另外,DEBUGFILE與DEBUGOUT不同之處在于他不限于一定運行在后臺程序化交易環(huán)境中,DEBUGFILE描述如下:用法:DEBUGFILE(PATH,STR,NUM),PATH為用戶的本地計算機路徑,STR為用戶指定輸出的一個行文字,NUM為用戶指定的一個監(jiān)控數(shù)字.例如:DEBUGFILE(D:TEST.TXT,當前資產(chǎn)為%.2f,1234),將在程序化交易的監(jiān)控部分輸出到D:TEST.TXT文件, "當前資產(chǎn)為1234.00","%.2f"為一個打印的控制符號,系統(tǒng)會將他替換為指定的一個數(shù)字輸出,%.2f為顯示兩位小數(shù),%.0f則表示不顯示小數(shù)。此外金字塔提供的另一個MSGOUT函數(shù),通過在消息窗口自行輸出字符串信息,也可以起到很好的調(diào)試作用。最后我們講一下日志記錄功能,此功能會記錄下您本地所有的下單情況。如何啟動記錄日志:選擇“交易”菜單->下單設(shè)置->程序化交易->將“記錄下單日志”打勾。打勾的同時,會提醒您日志所保存的文件路徑。在圖表交易和后臺自動交易的甚至手工下單的過程中,金字塔會將與交易有關(guān)的動作記錄在內(nèi),便于用戶查找和分析問題原因。1.6 后臺程序化注意事項(1) 圖表BUY等顯示函數(shù)是不能放在后臺做監(jiān)控交易的,但是將"允許程序化交易"勾去掉后單獨做預(yù)警是可以的。(2)只有少數(shù)的帶T的后臺交易函數(shù)允許使用在BUY前臺圖表交易策略中. Tholding, TAVGENTERPRICE,Taccount,Tasset,但是金字塔強烈不建議使用,因為這樣會造成圖表上的交易信號與實際的下單記錄不符。(3)金字塔的后臺交易部分,使用手工閃電下單的記錄,將無法通過比如TENTERPRICE等與交易記錄有關(guān)函數(shù)中得到結(jié)果,但可以通過程序化交易監(jiān)控中的手工下單干預(yù)功能完成此項目的。(4)金字塔的后臺交易,查詢持倉和資產(chǎn)均為用戶當前的實際數(shù)值,如果多個策略同時多一個品種或通一個帳戶進行操作會產(chǎn)生相互干擾現(xiàn)象,解決辦法就是通過使用交易系統(tǒng)使用虛擬持倉和資金,這樣就完全可以避免這種共振現(xiàn)象,但是推薦高級用戶使用,因為需要很多技巧需要處理。(5)用以圖表顯示的交易系統(tǒng)和后臺程序化交易的交易指令函數(shù),參數(shù)有明顯的不同,用戶不能簡單的將BUY函數(shù)加個T就可以直接后臺交易,使用前應(yīng)該將鼠標放在TBUY函數(shù)上認真看看函數(shù)說明。同名交易系統(tǒng)函數(shù)與程序化交易函數(shù)的差別:函數(shù)意義前臺圖表交易模型后臺交易系統(tǒng)開多BUYTBUY平多SELLTSELL開空BUYSHORTTBUYSHORT平空SELLSHORTTSELLSHORT其中TYPE:次周期限價LIMITREF(條件,1),LMTTYPE:本周期限價LIMITRLMTTYPE:次周期停損STOPREF(條件,1),STPTYPE:本周期停損STOPRSTPTYPE:次周期市價MARKETREF(條件,1),MKTTYPE:本周期市價MARKETRMKT開倉百分比30%KCS:= intpart(tasset*0.3/MULTIPLIER/close);語句語句T語句函數(shù)可在圖表上顯示不能在圖表上顯示總之,通過函數(shù)列表,了解他們的細微差別。第二章 圖表交易和后臺交易的主要區(qū)別和聯(lián)系2.1 圖表、交易函數(shù)的區(qū)別2.11 圖表交易函數(shù)BUY 開多BUYSHORT 開空SELL 平多SELLSHORT 平空適用于圖表程序式交易模式,本函數(shù)中可以設(shè)置下單條件、下單手數(shù)、下單價格等參數(shù)。這種交易函數(shù)優(yōu)點在于可以將本交易函數(shù)套用到若干個循環(huán)邏輯判斷語句中,對下單手數(shù)靈活設(shè)置,對下單價格靈活的掌控,與之配套使用的各類函數(shù)較多,因此能夠用于實現(xiàn)較為復(fù)雜的交易模型;缺點是沒有參數(shù)設(shè)置賬戶名、下單品種、只能運行在逐K線模式等。例2.1: BUY(vol/ref(vol,1)>3 AND CLOSE>OPEN , 1 ,LIMIT ,CLOSE );SELL(vol/ref(vol,1)>3 AND CLOSE<OPEN , 1 ,LIMIT ,CLOSE );例2.2: IF vol/ref(vol,1)>3 THEN BEGINBUY(CLOSE>OPEN , 1 ,LIMIT ,CLOSE );SELL(CLOSE<OPEN , 1 ,LIMIT ,CLOSE );END 其中LIMIT為限價委托交易控制符,新圖表程序化交易可使用的交易控制符非常豐富,還有LIMITR;MARKET; NEXTHIGH; NEXTLOW; NEXTMID;NEXTOPEN; THISCLOSE;這些交易控制符的具體用法用戶可以在公式編輯器左方的函數(shù)列表中找到。2.12 后臺交易函數(shù)TBUY開多TBUYSHORT開空TSELL平多TSELLSHORT 平空適用于后臺程序化交易模式,在圖表交易函數(shù)的基礎(chǔ)上又增加了關(guān)于下單賬戶、下單品種兩個參數(shù),對交易過程的控制能力進一步增強,本函數(shù)可以設(shè)置下單條件、下單手數(shù)、下單價格、下單賬戶、下單品種等參數(shù)。這種交易函數(shù)的優(yōu)點在于可以適用于后臺交易模式,對下單手數(shù)、價格和賬戶都可以做到精確控制,有大量的實時動態(tài)行情函數(shù)、后臺函數(shù)等可以與之配套使用,基本所有的交易模型都可以通過后臺交易模式來實現(xiàn)。例2.3:TBUY(vol/ref(vol,1)>3 AND CLOSE>OPEN ,1,LMT ,CLOSE ,0,351579 ,al02);TSELL(vol/ref(vol,1)>3 AND CLOSE<OPEN ,1,LMT ,CLOSE ,0,351579,al02);注意:限價委托交易控制符在后臺程序化交易已由LMT取代,后臺程序化交易由于是采用的真實持倉的方式工作,因此只有LMT;MKT;STP;LMTSTP這4個交易控制符,并且這些交易控制符不可混用,也就是后臺的交易控制符不能用在圖表的BUY函數(shù)中,同樣圖表的交易控制符不能用在TBUY中,后面的章節(jié)中我們還會對其用對照表方式進行詳細的對比。2.3圖表交易和后臺交易的主要區(qū)別(1)適用交易模式不同圖表交易函數(shù)用在圖表程序化交易中;后臺交易函數(shù)用于后臺程序化交易中;(2)顯示方式不同在使用時,需要在所看的當前品種分析K線圖中調(diào)用出交易指標,調(diào)用后K線圖中會顯示買賣信號;后臺交易函數(shù)使用時只會在后臺靜默的運行,不需要在當前所看的K線圖中調(diào)用交易指標,因此在當前所看的K線圖中不顯示買賣信號; (3)啟用和設(shè)置方式不同圖表程序化交易的設(shè)置和啟用界面位于菜單欄的“交易>圖表程序化交易”選項。后臺程序化交易的設(shè)置和啟用界面位于菜單欄的“交易>后臺程序化交易”選項。 (4)虛擬和真實的區(qū)別圖表程序化交易采用的是虛擬持倉、虛擬資金等概念,各個買賣點以及中間過程返回給用戶的持倉和資金是根據(jù)歷史交易信號和相關(guān)初始化的數(shù)據(jù)計算得來,資金、費率等初始化數(shù)據(jù)是在指標編輯器中的“費率設(shè)置”中進行設(shè)置。后臺程序化交易采用的是真實持倉、真實資金的概念,它們調(diào)用的是賬戶欄中真實的賬戶數(shù)據(jù)。 第三章 基于VBA的二次開發(fā)一個優(yōu)秀的程序化交易軟件不僅需要滿足個人個性化的策略實現(xiàn)外,策略的執(zhí)行也至關(guān)重要,俗話說:細節(jié)決定成敗,前面章節(jié)我們都是介紹的使用金字塔內(nèi)置的PEL腳本語言作為程序化交易使用,但是PEL終歸還是為普通非計算機專業(yè)投資者準備的腳本語言,方便投資者學習和使用的同時,也帶來了其自身存在的格式固化,運行不夠靈活,效率不足等問題,是無法滿足具有更多想法更多需求的程序化交易者的。在各種高級語言中,熟悉和精通VB的人無疑是最多的。著名的微軟OFFICE辦公軟件中的二次開發(fā)也是使用的VBA。但是金字塔不僅僅是一個被廣泛應(yīng)用的金融分析軟件,除了具有一般軟件的數(shù)據(jù)處理、統(tǒng)計分析、圖表功能外,最大的特點是集成了VBA 環(huán)境。并提供了VBA 的IDE 環(huán)境??梢詰?yīng)用金字塔的所有現(xiàn)有功能,例如其數(shù)據(jù)處理、圖表繪制、數(shù)據(jù)庫連接、內(nèi)置函數(shù)等等。利用這些接口將極大的發(fā)揮我們專業(yè)程序化交易投資者的編程空間,使我們的交易系統(tǒng)具有強大的計算能力、擴展能力和生命力。3.1金字塔VBA與OFFICE VBA區(qū)別和聯(lián)系盡管金字塔VBA與OFFICE VBA都是VBA,但是它們2個還是有些不同的地方,這里假設(shè)讀者是熟悉OFFICE VBA的用戶,如果你是VBA的初學者,那么可以不必理會這里的差別。金字塔的腳本引擎是VBS,與OFFICE的VBA主要區(qū)別在于變量無需聲明就可以使用。金字塔軟件的VBA系統(tǒng)是介于傳統(tǒng)VBS與VBA之間的系統(tǒng),支持VBA系統(tǒng)中才有的窗體,框架等等更多的對象,另外,語法上又兼容VBS。除了類模塊外,所有的框架和窗體對象模塊的數(shù)據(jù)都是公用的,框架和窗體之所以獨立是因為方便用戶編輯和管理,實際運行代碼是合在一起的。比如你在框架或者窗體中定義了一個函數(shù)過程外的全局變量,實際上是所有VBS代碼都可以調(diào)用的,在窗體框架對象中的過程名在其他窗體中調(diào)用也無需使用 窗體.過程名 這種方式,可以直接使用過程名。金字塔中的窗體與OFFICE其他組件的窗體在訪問其內(nèi)部控件時稍有不同,例如訪問UserForm1窗體的Text1編輯控件,使其隱藏。代碼如下: UserForm1_Text1.Visible = False除此之外,金字塔VBA與OFFICE VBA在IDE界面,使用方法和布局上,完全一致,如果讀者熟悉OFFICE VBA的開發(fā),那么就應(yīng)該很快掌握金字塔VBA的開發(fā)。3.2 VBA 原理的隱喻VBA 的基本原理可通過下圖做示意性解釋。金字塔對象VBA代碼VBAVBA 作為應(yīng)用VBA 編寫的代碼和金字塔對象之間的一個橋梁,為2 者之間的調(diào)用提供支持,這種調(diào)用是通過COM 自動化實現(xiàn)的。例如我們的代碼中一句代碼,調(diào)用金字塔中一個對象的一個屬性,那么這個過程大概是類似這樣的:VBA 環(huán)境解釋執(zhí)行這句代碼,如果發(fā)現(xiàn)對金字塔對象的調(diào)用,就通過COM 的方式調(diào)用這個對象,獲取其屬性,這樣VBA 代碼就可以和金字塔對象進行交互。3.3 VBA 簡介要使用 VBA 進行數(shù)據(jù)處理,第一要熟悉VBA 的IDE 環(huán)境,知道如何進行代碼書寫,如何編寫代碼,設(shè)計窗體,創(chuàng)建類模塊(對象),第二要熟悉VBA 的基本語法和。二者都是VBA 程序設(shè)計的基礎(chǔ),需要認真學習。VBA 語法不是一章就可以全部介紹完全的,本章介紹的內(nèi)容是最基本和應(yīng)該熟練掌握的內(nèi)容,對于不熟悉或者不理解的內(nèi)容可以在學習了后面的內(nèi)容后再反過頭來學習。有些內(nèi)容需要反復(fù)練習和熟悉。對于VBA 語法和用法的很多內(nèi)容可以隨時通過查看幫助來獲得相關(guān)信息。本章和下一章(金字塔 對象模型)的部分內(nèi)容,特別是表格內(nèi)的一些內(nèi)容,沒有必要完全記住,可以作為參考手冊來使用。3.3.1VBA 及其IDE 初步本部分將對 VBA 及其開發(fā)環(huán)境IDE(集成開發(fā)環(huán)境)作一概略的介紹。VBA IDE 是進行程序設(shè)計和代碼編寫的地方,同一個金字塔共享同一IDE。文中會涉及到一些諸如對象、事件等部分讀者可能不熟悉或不清楚的概念,對于此類問題可直接忽略之,因為在后面會有詳細介紹。本部分也不是一個VBA 的參考文檔,只是其語法、特征的快速瀏覽和介紹。(1)VBA 集成開發(fā)環(huán)境(IDE)的組成VBA 代碼和金字塔文檔文件是保存在一起的,可以通過點擊“工具 宏 Visual Basic工程”打開VBA 的IDE 環(huán)境,進行程序設(shè)計和代碼編寫。圖3-1Visual Basic IDE 環(huán)境圖 3-1 為金字塔 VBA 的IDE 環(huán)境,缺省情況下,VBA IDE 環(huán)境上方為菜單和工具條(圖 3-1),左側(cè)窗口為工程資源管理器窗口,右側(cè)最大的窗口為代碼窗口。每一個金字塔文檔文件,對應(yīng)的VBA 工程都有4 類對象,包括:框架、窗體、模塊和類模塊(圖 3-2)。這里的框架主要是金字塔運行時的技術(shù)分析圖表,例如我們常見的K線走勢分析圖的框架對象,雙擊這些對象會打開代碼窗口(圖3-1 右側(cè)窗口),在此窗口中可輸入相關(guān)的代碼,響應(yīng)事件,例如框架的打開、關(guān)閉,窗格的激活、品種顯示的修改、選擇等(有關(guān)事件、金字塔 對象模型見后)。窗體對象代表了自定義對話框或界面,模塊為自定義代碼的載體,類模塊則是以類或?qū)ο蟮姆绞骄帉懘a的載體,關(guān)于各對象的具體含義和使用見后。在工程資源管理器窗口的右鍵菜單下,有添加用戶窗體、模塊、類模塊的選項,也可以將已有的模塊移除、導入和導出。注意:建議用戶新建一個VBA工程來完成你的個性化VBA代碼,盡量不要在默認的工程中添加,防止多個不同工程的代碼相互干擾,您可以點擊左側(cè)工程資源窗口上的工具欄來新建一個VBA工程。(2)在 VBA IDE 下進行開發(fā)熟悉了 VBA 的IDE 環(huán)境后,我們來開發(fā)VBA 之旅的第一個程序。首先我們雙擊左側(cè)工程資源管理器上的窗口的模塊分類,然后雙擊“Macro”模塊,打開宏模塊代碼編輯窗口(圖3-3),然后選擇“插入”菜單->過程,再隨后彈出的宏名稱編輯窗口里輸入“MyFirstVBAProgram”,然后單擊確定,這樣系統(tǒng)會自動將MyFirstVBAProgram這個過程函數(shù)插入到代碼編輯窗口中,我們只要在打開窗口中輸入以下代碼:Sub MyFirstVBAProgram()MsgBox “我的第一個自編程序。”End Sub通過“運行”菜單->宏,或者按Alt+F8快捷鍵,彈出宏運行窗口,下拉框中選擇我們前面建立的“MyFirstVBAProgram”宏,然后就能看到運行的結(jié)果了。圖3-2注意:與其他程序設(shè)計語言不同,VBA 程序是事件驅(qū)動的,沒有Main 函數(shù)之類的入口的概念。本質(zhì)上,VBA 代碼應(yīng)該只是一些完成具體工作的集合,而通過界面元素或者金字塔 的事件驅(qū)動執(zhí)行,你可以通過自定義按鈕、菜單,并指定一個宏(VBA 過程,自定義界面也可以通過編程手段完成此類工作),通過單擊此按鈕即可調(diào)用相應(yīng)的VBA代碼,或者將調(diào)用綁定在金字塔的某個事件下。下面我們簡單看一下這段代碼的組成,代碼第1 行表示這是一個新的過程,名稱為“MyFirstVBAProgram” 第2行調(diào)用MsgBox 這個函數(shù),顯示一個對話框,第3 行表示過程結(jié)束。VBA 程序由不同的模塊組成,在模塊內(nèi)部,可以定義不同的變量、過程或函數(shù),由此組成一個完整的程序。(3)善用工具及其他VBA 集成開發(fā)環(huán)境,提供了很多便利的工具可以幫助或輔助我們寫出好的程序,其中的方便必須親自使用才可以體會,因此,一定要善用工具。VBA 的代碼編輯器提供了幾項非常有用的功能,代碼即時提示可以使我們不必記憶太多的東西,輸入對象后會自動列出其屬性、方法等內(nèi)容。在實際的編程過程中,一定要善于利用在線幫助,VBA 的在線幫助包含了大量對編程有用的參考信息,任何人都不可能記得住所有的函數(shù)、對象的用法和程序語言的語法,所以一定要利用好幫助。幫助的使用可以在“幫助”菜單->VBA編程信息 處獲得。可以通過幫助目錄瀏覽,或者通過查找輸入關(guān)鍵字查找相關(guān)內(nèi)容。圖3-3在代碼書寫中,如果一句代碼過長,應(yīng)該使用接行字符(“-”)將其分為幾行,而不是書寫為一行,一般來說,代碼的長度不要超過80 個字符為宜,這樣閱讀方便,不需要橫向拉動滾動條,也不容易出錯。例如上面第一個例子我們可以將對話框文字輸出分成2行:MsgBox _“我的第一個自編程序。”對于代碼格式,一定要養(yǎng)成縮進的習慣,在過程之后,循環(huán)語句、判斷語句之內(nèi),如本書的例子樣子,縮進4 個字符,便于閱讀。代碼中,在一個邏輯或者操作完成之后,應(yīng)該空一行,以表示其邏輯關(guān)系,在過程與過程之間,也應(yīng)該空一行。VBA 中,使用單引號“”表示注釋,編寫程序時,一定要養(yǎng)成注釋的習慣。注釋不是所有代碼都要注釋;一般來說,對一個模塊、過程、函數(shù),要大概說明其功能,參數(shù);對于一個過程,如果涉及較復(fù)雜的算法,要說明其使用的算法或流程。在過程和函數(shù)中,對關(guān)鍵代碼,說明其操作的目的、算法或流程。3.3.2模塊、函數(shù)和過程(1)模塊模塊是自定義的過程、函數(shù)保存的地方有兩種基本類型的模塊:類模塊和標準模塊,本節(jié)介紹標準模塊,類模塊將在專門介紹。模塊可以通過右鍵單擊工程資源管理器的工程名,選擇“插入 模塊”來新建,新建的模塊缺省的名稱為“模塊 1”,“模塊2”,建議在模塊右鍵->重命名中更改為有意義的名稱。模塊有2 個任務(wù):(1)保存過程和函數(shù);(2)定義類模塊內(nèi)的私有變量或整個工程的公有變量。在模塊中可以聲明變量(包括對象),定義過程和函數(shù)。過程和函數(shù)的定義見下文,變量的聲明如下。變量的聲明:Dim I Dim 表示聲明變量i注意:要求變量聲明VBA 缺省可以不聲明變量,在第一次使用的時候自動聲明,但此功能也是VBA 代碼(包括其他Basic 代碼)的一個主要錯誤之源。試想第一次使用了一個變量strMyFirstName,之后又通過strMyFirstNme(少一個a)來使用它,但由于拼寫不同,VBA 以為是一個新的變量,于是會新聲明一個變量,這樣的錯誤極其難以發(fā)現(xiàn)。可以通過“工具 選項”對話框,在“其他”頁,選中“VBA變量名必須顯式聲明所有變量”,則在使用變量前,都必須先通過Dim 語句聲明。(2)過程過程是最基本的運行單位。一個完整的過程一般類似如下格式:Sub Test(參數(shù)列表) End Sub在以上程序中,Sub 代表過程種類,表示運行指定的操作,但不返回運行結(jié)果;Test表示過程名稱,最后以End Sub 結(jié)束。其中按值按地址傳遞參數(shù)指一種將參數(shù)地址而不是將值傳遞給過程的方式,這就使過程訪問到實際的變量。結(jié)果,過程可改變變量的真正值。VBA 缺省按地址傳遞參數(shù)。Sub MyTest()dim V1,V2V1 = 1V2 = 2MyTestCall (v1,v2) v1,v2是參數(shù)MsgBox v1MsgBox v2End SubSub MyTestCall(V1,V2) V1=5 V2=.6End Sub調(diào)用的方法是:運行結(jié)束后,你會發(fā)現(xiàn)V1和V2值都被改變了。所有的可執(zhí)行代碼都必須屬于某個過程。不能在別的過程中定義 Sub 過程。Exit Sub 語句使執(zhí)行立即從一個 Sub 過程中退出。程序接著從調(diào)用該 Sub 過程的語句下一條語句執(zhí)行。在 Sub 過程的任何位置都可以有 Exit Sub 語句。在 Sub 過程中使用的變量分為兩類:一類是在過程內(nèi)顯式定義的,另一類則不是。在過程內(nèi)顯式定義的變量(使用 Dim 方法)都是局部變量。過程(包括函數(shù)等)的創(chuàng)建可以通過在代碼窗口直接鍵入“Sub”來創(chuàng)建,也可以使用菜單的“插入 過程”對話框來創(chuàng)建。(3)函數(shù)函數(shù)是包含在 Function 和 End Function 語句之間的一組語句。Function 過程與 Sub 過程類似,但是 Function 過程可以返回值。Function 過程可以使用參數(shù)(由調(diào)用過程傳遞的常數(shù)、變量或表達式)。如果 Function 過程無任何參數(shù),則 Function 語句必須包含空括號 ()。Function 過程通過函數(shù)名返回一個值,這個值是在過程的語句中賦給函數(shù)名的。Function 返回值的數(shù)據(jù)類型總是 Variant。 在下面的示例中,Celsius 函數(shù)將華氏度換算為攝氏度。Sub 過程 ConvertTemp 調(diào)用此函數(shù)時,包含參數(shù)值的變量被傳遞給函數(shù)。換算結(jié)果返回到調(diào)用過程并顯示在消息框中。 Sub ConvertTemp() temp = InputBox("請輸入華氏溫度。", 1) MsgBox "溫度為 " & Celsius(temp) & " 攝氏度。" End Sub Function Celsius(fDegrees) Celsius = (fDegrees - 32) * 5 / 9 End FunctionVBA 中有大量內(nèi)置函數(shù),例如前邊例子里使用過的MsgBox,InputBox。VBA 的函數(shù)主要包括數(shù)學函數(shù)(包括三角函數(shù)、隨機數(shù)等)、字符串函數(shù)等等,熟悉VBA 的內(nèi)置函數(shù)可以提高工作效率,更好的完成工作。對于VBA 的函數(shù),可以參考VBA幫助文檔。(4)在代碼中使用 Sub 和 Function 過程調(diào)用 Function 過程時,函數(shù)名必須用在變量賦值語句的右端或表達式中。例如: Temp = Celsius(fDegrees)或 MsgBox "溫度為 " & Celsius(fDegrees) & " 攝氏度。"調(diào)用 Sub 過程時,只需輸入過程名及所有參數(shù)值,參數(shù)值之間使用逗號分隔。不需使用 Call 語句,但如果使用了此語句,則必須將所有參數(shù)包含在括號之中。 下面的示例顯示了調(diào)用 MyProc 過程的兩種方式。一種使用 Call 語句;另一種則不使用。兩種方式效果相同。 Call MyProc(firstarg, secondarg) MyProc firstarg, secondarg請注意當不使用 Call 語句進行調(diào)用時,括號被省略。3.3.3數(shù)據(jù)類型和變量(1)什么是 VBA 數(shù)據(jù)類型?金字塔VBA 只有一種數(shù)據(jù)類型,稱為 Variant。Variant 是一種特殊的數(shù)據(jù)類型,根據(jù)使用的方式,它可以包含不同類別的信息。因為 Variant 是 VBScript 中唯一的數(shù)據(jù)類型,所以它也是 VBScript 中所有函數(shù)的返回值的數(shù)據(jù)類型。 最簡單的 Variant 可以包含數(shù)字或字符串信息。Variant 用于數(shù)字上下文中時作為數(shù)字處理,用于字符串上下文中時作為字符串處理。這就是說,如果使用看起來象是數(shù)字的數(shù)據(jù),則 VBScript 會假定其為數(shù)字并以適用于數(shù)字的方式處理。與此類似,如果使用的數(shù)據(jù)只可能是字符串,則 VBScript 將按字符串處理。當然,也可以將數(shù)字包含在引號 (" ") 中使其成為字符串。 (2)什么是變量?變量是一種使用方便的占位符,用于引用計算機內(nèi)存地址,該地址可以存儲 Script 運行時可更改的程序信息。例如,可以創(chuàng)建一個名為 ClickCount 的變量來存儲用戶單擊某個對象的次數(shù)。使用變量并不需要了解變量在計算機內(nèi)存中的地址,只要通過變量名引用變量就可以查看或更改變量的值。在 VBA 中只有一個基本數(shù)據(jù)類型,即 Variant,因此所有變量的數(shù)據(jù)類型都是 Variant。 (3)聲明變量聲明變量的一種方式是使用 Dim 語句、Public 語句和 Private 語句在 Script 中顯式聲明變量。例如: Dim DegreesFahrenheit聲明多個變量時,使用逗號分隔變量。例如: Dim Top, Bottom, Left, Right另一種方式是通過直接在 Script 中使用變量名這一簡單方式隱式聲明變量。這通常不是一個好習慣,因為這樣有時會由于變量名被拼錯而導致在運行 Script 時出現(xiàn)意外的結(jié)果。因此,最好通過“工具 選項”對話框,在“其他”頁,選中“VBA變量名必須顯式聲明所有變量”,則在使用變量前,都必須先通過Dim 語句聲明。 (4)命名規(guī)則變量命名必須遵循 VBA的標準命名規(guī)則。變量命名必須遵循: 第一個字符必須是字母。 不能包含嵌入的句點。 長度不能超過 255 個字符。 在被聲明的作用域內(nèi)必須唯一。 (5)變量的作用域與存活期變量的作用域由聲明它的位置決定。如果在過程中聲明變量,則只有該過程中的代碼可以訪問或更改變量值,此時變量具有局部作用域并被稱為過程級變量。如果在過程之外聲明變量,則該變量可以被 Script 中所有過程所識別,稱為 Script 級變量,具有 Script 級作用域。 變量存在的時間稱為存活期。Script 級變量的存活期從被聲明的一刻起,直到 Script 運行結(jié)束。對于過程級變量,其存活期僅是該過程運行的時間,該過程結(jié)束后,變量隨之消失。在執(zhí)行過程時,局部變量是理想的臨時存儲空間??梢栽诓煌^程中使用同名的局部變量,這是因為每個局部變量只被聲明它的過程識別。 (6)給變量賦值創(chuàng)建如下形式的表達式給變量賦值:變量在表達式左邊,要賦的值在表達式右邊。例如: B = 200(7)標量變量和數(shù)組變量多數(shù)情況下,只需為聲明的變量賦一個值。只包含一個值的變量被稱為標量變量。有時候,將多個相關(guān)值賦給一個變量更為方便,因此可以創(chuàng)建包含一系列值的變量,稱為數(shù)組變量。數(shù)組變量和標量

注意事項

本文(金字塔決策交易系統(tǒng)—高級教程(2016修訂版))為本站會員(gbs****77)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因為網(wǎng)速或其他原因下載失敗請重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!