量化投資經(jīng)典TB公式入門課件_第1頁
量化投資經(jīng)典TB公式入門課件_第2頁
量化投資經(jīng)典TB公式入門課件_第3頁
量化投資經(jīng)典TB公式入門課件_第4頁
量化投資經(jīng)典TB公式入門課件_第5頁
已閱讀5頁,還剩103頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

TB公式入門TB公式入門1Bar數(shù)據(jù):公式在進行計算時,都是建立在基本數(shù)據(jù)源(Bar數(shù)據(jù))之上,我們這里所謂的Bar數(shù)據(jù),是指商品在不同周期下形成的序列數(shù)據(jù),在單獨的每個Bar上面包含開盤價、收盤價、最高價、最低價、成交量及時間。期貨等品種還有持倉量等數(shù)據(jù)。所有的Bar按照不同周期組合,并按照時間從先到后進行排列,由此形成為序列數(shù)據(jù),整個序列稱之為Bar數(shù)據(jù)。公式如何執(zhí)行:TradeBlazer公式在計算時按照Bar數(shù)據(jù)的Bar數(shù)目,從第一個Bar到最后一個Bar,依次進行計算,如果公式中出現(xiàn)了調(diào)用Bar數(shù)據(jù)函數(shù)的,則取出當(dāng)前Bar的相應(yīng)值,進行運算。公式執(zhí)行從上至下,Bar從左到右執(zhí)行。交易開拓者公式基礎(chǔ)Bar數(shù)據(jù):公式在進行計算時,都是建立在基本數(shù)據(jù)源(Bar數(shù)2公式執(zhí)行順序公式執(zhí)行順序3公式執(zhí)行順序公式執(zhí)行順序4公式的種類指標(biāo)K線形態(tài)特征走勢交易指令函數(shù)公式的種類指標(biāo)5公式環(huán)境的組織層次(1)

BAR數(shù)據(jù)指標(biāo)K線形態(tài)特征走勢交易指令公式環(huán)境的組織層次(1)BAR數(shù)據(jù)指標(biāo)K線形態(tài)特征走6公式環(huán)境的組織層次(2)

BAR數(shù)據(jù)指標(biāo)K線形態(tài)特征走勢交易指令函數(shù)公式環(huán)境的組織層次(2)BAR數(shù)據(jù)指標(biāo)K線形態(tài)特征走勢交7建立一個最簡單的指標(biāo):畫零線BeginPlotNumeric(“Line1”,0);EndBegin和End宣告公式正文的開始和結(jié)束,公式語句應(yīng)該放到Begin和End之間。PlotNumeric表示輸出一個數(shù)值型組成的數(shù)組。技術(shù)指標(biāo)屬性的設(shè)置建立一個最簡單的指標(biāo):畫零線Begin8再畫一條線…BeginPlotNumeric(“Line1”,5);End再畫一條線…Begin9參數(shù)一根線ParamsNumericLength(0);BeginPlotNumeric(“Line1”,length);EndN根線ParamsNumericLength1(0);NumericLength2(5);BeginPlotNumeric(“Line1”,length1);PlotNumeric(“Line2”,length2);End參數(shù)一根線10取較大值ParamsNumericLength1(0);NumericLength2(5);Beginif(Length1>=Length2){ PlotNumeric(“Line1”,length1);}else{ PlotNumeric(“Line1”,length1);}EndPlotNumeric由輸出的名字來區(qū)分是否為同一條線。取較大值Params11關(guān)于IF語句If語句是一個條件語句,當(dāng)特定的條件滿足后執(zhí)行一部分操作。語法如下:If(Condition){TradeBlazer公式語句;}TradeBlazer公式語句是一些語句的組合,如果TradeBlazer公式語句是單條,您可以省略{},二條或者二條以上的語句必須使用{}。關(guān)于IF語句If語句是一個條件語句,當(dāng)特定的條件滿足后執(zhí)行一12關(guān)于條件表達式邏輯操作符:AND(&&),OR(||),NOT(!)表達式1AND表達式2

表達式1OR表達式2

NOT表達式1

注意:浮點數(shù)字的等于詳細介紹參見幫助文件-公式系統(tǒng)-操作符注意:條件表達式括號后面不要加分號。關(guān)于條件表達式邏輯操作符:AND(&&),OR(||),N13IF-ElseIf-Else語句是對指定條件進行判斷,如果條件滿足執(zhí)行If后的語句。否則執(zhí)行Else后面的語句。語法如下:If(Condition){TradeBlazer公式語句1;}Else{TradeBlazer公式語句2;}IF-ElseIf-Else語句是對指定條件進行判斷,如果條14If-Else-IfIf-Else-If是在If-Else的基礎(chǔ)上進行擴展,支持條件的多重分支。語法如下:If(Condition1){TradeBlazer公式語句1;}ElseIf(Condition2){TradeBlazer公式語句2;}Else{TradeBlazer公式語句3;}If-Else-If的語句可以根據(jù)需要一直擴展,在最后的Else之后再加If(Condition)和新的執(zhí)行代碼即可。當(dāng)然您也可以省略最后的Else分支,If-Else-IfIf-Else-If是在If-Else的15If-Else的嵌套If-Else的嵌套是在If-Else的執(zhí)行語句中包含新的條件語句,即一個條件被包含在另一個條件中。If(Condition1){If(Condition2){TradeBlazer公式語句1;}Else{TradeBlazer公式語句2;}}Else{If(Condition3){TradeBlazer公式語句3;}Else{TradeBlazer公式語句4;}}If-Else的嵌套If-Else的嵌套是在If-Else16回到指標(biāo)賦值語句用變量使流程清晰ParamsNumericLength1(0);NumericLength2(5);VarsNumericbiger;Beginif(Length1>=Length2){ biger=Length1;}else{ biger=Length2;}PlotNumeric(“Line1”,biger);End回到指標(biāo)賦值語句17公式的三段論公式的三段論18函數(shù)(1)用函數(shù)使流程更加簡潔Params NumericLength1(0); NumericLength2(5);Vars Numericbiger;Begin biger=GetBiger(Length1,Length2); PlotNumeric(“Line1”,biger);End函數(shù)(1)用函數(shù)使流程更加簡潔19函數(shù)(1)GetBiger的內(nèi)容Return語句ParamsNumericLength1(0);NumericLength2(5);Beginif(Length1>=Length2){ returnLength1;}else{ returnLength2;}End函數(shù)(1)GetBiger的內(nèi)容20指標(biāo)模板Params …..Vars Numericline1; Numericline2; …..Begin line1=GetLine1(…….); line2=GetLine2(…….); …… PlotNumeric(“Line1”,line1); PlotNumeric(“Line2”,line2); …..End參考MA指標(biāo)的模板寫法指標(biāo)模板Params21函數(shù)(2)假設(shè)要寫這樣一個指標(biāo):兩個數(shù)字型參數(shù),比較其大小,并輸出兩條線Params NumericLength1(0); NumericLength2(5);Vars Numericbiger; Numericsmaller;Begin biger=GetBiger(Length1,Length2); smaller=GetSmaller(Length1,Length2); PlotNumeric(“bigger”,biger); PlotNumeric(“smaller”,smaller);End然而……函數(shù)(2)假設(shè)要寫這樣一個指標(biāo):兩個數(shù)字型參數(shù),比較其大小,22函數(shù)(2)引用型參數(shù)函數(shù)compare的內(nèi)容ParamsNumericparam1(0);Numericparam2(5);NumericRefsamller;Beginif(param1>=param2){ smaller=param2; returnparam1;}else{ smaller=param1; returnLength2;}End函數(shù)(2)引用型參數(shù)23函數(shù)(2)調(diào)用compareParams Numericparam1(0); Numericparam2(5);Vars Numericbiger; Numericsmaller;Begin biger=compare(param1,param2,smaller); PlotNumeric(“bigger”,biger); PlotNumeric(“smaller”,smaller);End函數(shù)(2)調(diào)用compare24一個新需求用函數(shù)計算最近三根BAR的最低點Begin if(low<=low[1]&&low<=low[2]) { returnlow; } if(low[1]<=low&&low[1]<=low[2]) { returnlow[1]; } if(low[2]<=low&&low[2]<=low[1]) { returnlow[2]; }End一個新需求用函數(shù)計算最近三根BAR的最低點25一個新需求(另一種寫法:冒泡)Vars numericsmallest(999999); //初始值很重要!Begin if(low[2]<samllest) { smallest=low[2]; } if(low[1]<samllest) { smallest=low[1]; } if(low<samllest) { smallest=low; } returnsmallest;End一個新需求(另一種寫法:冒泡)Vars26最近N個BAR的最低值(循環(huán)語句)Params numericLength(5);Vars numericsmallest(999999); //初始值很重要! numerici;Begin fori=1toLength-1 { if(low[i]<=smallest) { smallest=low[i]; } } returnsmallest;End最近N個BAR的最低值(循環(huán)語句)Params27最近N個BAR的最低值Params numericLength(5);Vars numericsmallest(999999); //初始值很重要! numerici;Begin if(CurrentBar<Length-1) { returnInvalidNumeric; } fori=1toLength-1 { if(low[i]<=smallest) { smallest=low[i]; } } returnsmallest;End最近N個BAR的最低值Params28數(shù)據(jù)回溯如何使用回溯表達?XXX[nOffset]nOffset是要回溯引用的Bar相對于當(dāng)前Bar的偏移值,該值必須大于等于0,當(dāng)nOffset=0時,即為獲取當(dāng)前Bar的參數(shù)值。并且nOffset不能大于當(dāng)時的CurrentBar,這樣會導(dǎo)致數(shù)據(jù)訪問越界。造成不可預(yù)知的計算結(jié)果。變量回溯,參數(shù)回溯,函數(shù)回溯(系統(tǒng)函數(shù))數(shù)據(jù)回溯如何使用回溯表達?XXX[nOffset]29序列參數(shù)Params numericSeries Price(1); numeric Length(5);Vars numericsmallest(999999); //初始值很重要! numerici;Begin if(CurrentBar<Length-1) { returnInvalidNumeric; } fori=1toLength-1 { if(Price[i]<=smallest) { smallest=Price[i]; } } returnsmallest;End序列參數(shù)Params30沒完沒了的新需求得到最低值與最低值的位置沒完沒了的新需求得到最低值與最低值的位置31沒完沒了的新需求Params numericSeries Price(1); numericRef Position;Vars numericSeries smallest(999999); numericSeries i;Begin if(CurrentBar==0) { smallest=Price; I=0; Position=i; returnsmallest; }else { smallest=smallest[1]; I=i[1]; } if(price<=smallest) { samllest=price; I=currentBar; } returnsmallest;End沒完沒了的新需求Params32關(guān)于常量和變量的定義常量是用來代替一個數(shù)或字符串的名稱。在公式整個執(zhí)行過程中不發(fā)生改變。變量是一個存儲值的地址,當(dāng)變量被聲明之后,就可以在腳本中使用變量,可以對其賦值,也可以在其他地方引用變量的值進行計算,要對變量進行操作,直接使用變量名稱即可。變量的主要用處在于它可以存放計算或比較的結(jié)果,以方便在之后的腳本中直接引用運算的值,而無需重現(xiàn)計算過程。關(guān)于常量和變量的定義常量是用來代替一個數(shù)或字符串的名稱。在33關(guān)于變量的類型TradeBlazer公式支持有三種基本數(shù)據(jù)類型:數(shù)值型(Numeric)、字符串(String)、布爾型(Bool)。為了通過用戶函數(shù)返回多個值,我們對三種數(shù)據(jù)類型進行了擴展,增加了引用數(shù)據(jù)類型。另外,為了對變量,參數(shù)進行回溯,我們增加了序列數(shù)據(jù)類型。因此,我們的數(shù)據(jù)類型共有九種關(guān)于變量的類型TradeBlazer公式支持有三種基本數(shù)據(jù)類349種數(shù)據(jù)類型Bool布爾型。BoolRef布爾型引用。BoolSeries和周期長度一致的Bool型序列值。Numeric數(shù)值型。NumericRef數(shù)值型引用。NumericSeries和周期長度一致的Numeric型序列值。String字符串。StringRef字符串引用。StringSeries和周期長度一致的String型序列值。9種數(shù)據(jù)類型Bool布爾型。35關(guān)于參數(shù)參數(shù)是一個預(yù)先聲明的地址,用來存放輸入?yún)?shù)的值,在聲明之后,您就可以在接下來的公式中使用該參數(shù)的名稱來引用其值。參數(shù)的值在公式的內(nèi)部是不能夠被修改,在整個程序中一直保持不變,不能對參數(shù)進行賦值操作(引用參數(shù)是個特例)。參數(shù)的好處在于您可以在調(diào)用執(zhí)行技術(shù)分析,交易指令的時候才指定相應(yīng)的參數(shù),而不需要重新編譯。詳細使用參見幫助文件-公式系統(tǒng)-參數(shù)關(guān)于參數(shù)參數(shù)是一個預(yù)先聲明的地址,用來存放輸入?yún)?shù)的值,在聲36交易策略-完整的交易系統(tǒng)通常單個交易指令只完成建倉或平倉的單個動作,而一個完整的交易策略應(yīng)該至少包含建倉、平倉交易指令,并且根據(jù)需要加上止損,獲利等鎖定風(fēng)險和收益的交易指令。多個交易指令的組合才能更加有效的幫助我們完整的進行交易,因此,我們將多個交易指令的有效組合稱之為交易策略。交易策略-完整的交易系統(tǒng)通常單個交易指令只完成建倉或平倉的單37交易策略的運行機制(1)假定我們創(chuàng)建一個交易策略,該交易策略由以下交易指令組成,并按照如下順序應(yīng)用到超級圖表中。交易策略的運行機制(1)假定我們創(chuàng)建一個交易策略,該交易策略38交易策略的運行機制(2)當(dāng)我們將該交易策略應(yīng)用到超級圖表上時,TradeBlazer公式將會從圖表的第一個Bar開始執(zhí)行交易策略,在第一個Bar上首先執(zhí)行多頭建倉指令A(yù),可能會產(chǎn)生交易委托(開倉),該委托可能被設(shè)置為在當(dāng)前Bar執(zhí)行,也可以被設(shè)置為延遲到下一個Bar執(zhí)行。當(dāng)多頭建倉指令A(yù)執(zhí)行完成之后,將按順序調(diào)用多頭平倉指令B,同時該指令會判斷當(dāng)前的持倉狀態(tài),倉位等信息,當(dāng)條件滿足的時候會產(chǎn)生交易委托(平倉)。交易策略的運行機制(2)當(dāng)我們將該交易策略應(yīng)用到超級圖表上時39交易策略的運行機制(3)接下來依次執(zhí)行止損平倉指令C和獲利平倉指令D,當(dāng)四個交易指令在第一個Bar上都執(zhí)行完之后,將會移到第二個Bar執(zhí)行,這時候,系統(tǒng)會首先讀取上一個Bar是否有延遲的交易委托,如果有延遲的交易委托,對這些委托先進行處理,然后像第一個Bar一樣,依次調(diào)用各個交易指令。以此類推,從圖表的第一個Bar到最后一個Bar,全部執(zhí)行完成之后,整個交易策略執(zhí)行完畢。在整個執(zhí)行過程產(chǎn)生的所有交易委托被保存下來供超級圖表模塊顯示或進行性能測試分析。交易策略的運行機制(3)接下來依次執(zhí)行止損平倉指令C和獲利平40歷史數(shù)據(jù)測試和實際交易的關(guān)系歷史數(shù)據(jù)測試和實際交易的關(guān)系41MarketPosition與A_TotalPosition普通型函數(shù)狀態(tài)型函數(shù)MarketPosition與A_TotalPosition42Q函數(shù)和A函數(shù)Q函數(shù),指以Q_開頭的系統(tǒng)函數(shù),主要是獲取實時行情信息。A函數(shù),指以A_開頭的系統(tǒng)函數(shù),獲取自動交易關(guān)聯(lián)帳戶的帳戶信息,只有在啟動自動交易的情況下才能取值。Q函數(shù)和A函數(shù)都是反映最新的實時狀態(tài),不能取歷史上的值,所以只能在當(dāng)前有效,在公式中表現(xiàn)為只能在最后Bar上取值。Q函數(shù)和A函數(shù)Q函數(shù),指以Q_開頭的系統(tǒng)函數(shù),主要是獲取實時43交易設(shè)置的作用交易設(shè)置的作用44Buy,SellShort等Buy:多頭開倉;Sell:多頭平倉SellShort:空頭開倉;BuyToCover:空頭平倉BoolBuy(NumericShare=0,NumericPrice=0,BoolDelay=False)Share買入數(shù)量,為整型值,默認為使用系統(tǒng)設(shè)置參數(shù);

Price買入價格,為浮點數(shù),默認=0時為使用現(xiàn)價(非最后Bar為Close);

Delay買入動作是否延遲,默認為當(dāng)前Bar發(fā)送委托,當(dāng)Delay=True,在下一個Bar執(zhí)行。Buy,SellShort等Buy:多頭開倉;Sell:多45關(guān)于Delay默認情況下,4個交易函數(shù)產(chǎn)生的委托單即時發(fā)送;當(dāng)參數(shù)Delay=True時,委托單將延遲到下一個Bar發(fā)送,這樣設(shè)計的原因在于:延遲的委托單才會保證發(fā)送的交易指令的正確性。假定在某商品A的周期為5分鐘的數(shù)據(jù)上應(yīng)用交易指令,A商品每1秒鐘會產(chǎn)生一個Tick數(shù)據(jù),因此一段時間內(nèi)(<5分鐘)A商品最后一個Bar的數(shù)據(jù)的收盤價,最高價,最低價以及成交量等數(shù)據(jù),會隨著Tick的變化和累計而產(chǎn)生相應(yīng)的變化。在某種情況下,上一個Tick更新時,Buy的預(yù)設(shè)條件可能為False,下一個Tick更新時,Buy的預(yù)設(shè)條件為True。如果不延遲,將會馬上發(fā)送該委托單到交易所。但是,當(dāng)更多的Tick累計,產(chǎn)生一個新的Bar時,Buy的預(yù)設(shè)條件可能會變成False。在這種情況,前面產(chǎn)生的委托單將會丟失,不會在測試和優(yōu)化報表中出現(xiàn)。該委托單實際上是由于噪音數(shù)據(jù)產(chǎn)生的錯誤訊號導(dǎo)致,為了避免這種情況的出現(xiàn),一定要等最后Bar數(shù)據(jù)更新結(jié)束之后,新Bar產(chǎn)生第一個Tick時,才會發(fā)送上一個Bar產(chǎn)生的委托單。當(dāng)交易函數(shù)的延遲設(shè)置為False。將會實時發(fā)送產(chǎn)生的委托單,按Tick進行更新。在使用該參數(shù)時,需要確認自己所編寫的公式不會用到這些無效的中間數(shù)據(jù),從而影響交易結(jié)果。關(guān)于Delay默認情況下,4個交易函數(shù)產(chǎn)生的委托單即時發(fā)送;46信號消失基于前面的描述,如果用Close變化的數(shù)據(jù)來計算開平倉條件,就可能出現(xiàn)信號消失。為了解決信號消失,可以使用前面所講的Delay,或者使用另外一種方式,特別是我們經(jīng)常用的突破系統(tǒng)。使用High,Low,Open這樣能夠保持住的價格來進行條件判斷。是價格往上的突破形成的交易操作用High來判斷。是價格下上的突破形成的交易操作用Low來判斷。其他不確定方向的情況最好用Open來判斷。信號消失基于前面的描述,如果用Close變化的數(shù)據(jù)來計算開平47交易策略的性能測試及報表交易匯總:按照多頭交易、空頭交易和全部交易列出當(dāng)前交易策略的交易統(tǒng)計信息。交易分析:對當(dāng)前策略的交易情況進行分析,包括交易分析、盈虧分析和連續(xù)盈虧分析。交易記錄:按開倉平倉對所有交易進行配對組合,并計算盈虧及累計盈虧。平倉分析:按平倉記錄對交易情況進行分析和匯總。階段總結(jié):按年、月對交易盈虧及次數(shù)進行統(tǒng)計。資產(chǎn)變化:列出資產(chǎn)的變化記錄及統(tǒng)計信息。圖表分析:按資產(chǎn)圖表和盈虧圖表兩大類共十三小類對帳戶進行圖表分析。系統(tǒng)設(shè)置:顯示交易策略的參數(shù),設(shè)置以及數(shù)據(jù)等內(nèi)容。交易策略的性能測試及報表交易匯總:按照多頭交易、空頭交易和全48交易策略的參數(shù)優(yōu)化及報表參數(shù)優(yōu)化目標(biāo)有以下七種選項:凈利潤最大,交易次數(shù)最大,平均凈利潤最大,盈利因子最大,收益率最大,盈虧比率最大,回報率最大。尋找最優(yōu)的參數(shù)。需防止過度優(yōu)化。尋找最穩(wěn)定的系統(tǒng)。而不是最大化的系統(tǒng)。交易策略的參數(shù)優(yōu)化及報表參數(shù)優(yōu)化目標(biāo)有以下七種選項:49實例講解-夾板規(guī)定一個上軌,上穿就空;一個下軌,下穿就多;一個最大偏離范圍,突破上下軌后再繼續(xù)偏離出最大范圍,就剁。實例講解-夾板規(guī)定一個上軌,上穿就空;一個下軌,下穿就多;一50夾板擴展1贏夠就走輸了也走收盤前平倉夾板擴展1贏夠就走51夾板擴展2把原來的狀態(tài)當(dāng)作參數(shù)輸入加減倉夾板擴展2把原來的狀態(tài)當(dāng)作參數(shù)輸入52夾板擴展3動態(tài)的基點夾板擴展3動態(tài)的基點53謝謝!謝謝!54TB公式入門TB公式入門55Bar數(shù)據(jù):公式在進行計算時,都是建立在基本數(shù)據(jù)源(Bar數(shù)據(jù))之上,我們這里所謂的Bar數(shù)據(jù),是指商品在不同周期下形成的序列數(shù)據(jù),在單獨的每個Bar上面包含開盤價、收盤價、最高價、最低價、成交量及時間。期貨等品種還有持倉量等數(shù)據(jù)。所有的Bar按照不同周期組合,并按照時間從先到后進行排列,由此形成為序列數(shù)據(jù),整個序列稱之為Bar數(shù)據(jù)。公式如何執(zhí)行:TradeBlazer公式在計算時按照Bar數(shù)據(jù)的Bar數(shù)目,從第一個Bar到最后一個Bar,依次進行計算,如果公式中出現(xiàn)了調(diào)用Bar數(shù)據(jù)函數(shù)的,則取出當(dāng)前Bar的相應(yīng)值,進行運算。公式執(zhí)行從上至下,Bar從左到右執(zhí)行。交易開拓者公式基礎(chǔ)Bar數(shù)據(jù):公式在進行計算時,都是建立在基本數(shù)據(jù)源(Bar數(shù)56公式執(zhí)行順序公式執(zhí)行順序57公式執(zhí)行順序公式執(zhí)行順序58公式的種類指標(biāo)K線形態(tài)特征走勢交易指令函數(shù)公式的種類指標(biāo)59公式環(huán)境的組織層次(1)

BAR數(shù)據(jù)指標(biāo)K線形態(tài)特征走勢交易指令公式環(huán)境的組織層次(1)BAR數(shù)據(jù)指標(biāo)K線形態(tài)特征走60公式環(huán)境的組織層次(2)

BAR數(shù)據(jù)指標(biāo)K線形態(tài)特征走勢交易指令函數(shù)公式環(huán)境的組織層次(2)BAR數(shù)據(jù)指標(biāo)K線形態(tài)特征走勢交61建立一個最簡單的指標(biāo):畫零線BeginPlotNumeric(“Line1”,0);EndBegin和End宣告公式正文的開始和結(jié)束,公式語句應(yīng)該放到Begin和End之間。PlotNumeric表示輸出一個數(shù)值型組成的數(shù)組。技術(shù)指標(biāo)屬性的設(shè)置建立一個最簡單的指標(biāo):畫零線Begin62再畫一條線…BeginPlotNumeric(“Line1”,5);End再畫一條線…Begin63參數(shù)一根線ParamsNumericLength(0);BeginPlotNumeric(“Line1”,length);EndN根線ParamsNumericLength1(0);NumericLength2(5);BeginPlotNumeric(“Line1”,length1);PlotNumeric(“Line2”,length2);End參數(shù)一根線64取較大值ParamsNumericLength1(0);NumericLength2(5);Beginif(Length1>=Length2){ PlotNumeric(“Line1”,length1);}else{ PlotNumeric(“Line1”,length1);}EndPlotNumeric由輸出的名字來區(qū)分是否為同一條線。取較大值Params65關(guān)于IF語句If語句是一個條件語句,當(dāng)特定的條件滿足后執(zhí)行一部分操作。語法如下:If(Condition){TradeBlazer公式語句;}TradeBlazer公式語句是一些語句的組合,如果TradeBlazer公式語句是單條,您可以省略{},二條或者二條以上的語句必須使用{}。關(guān)于IF語句If語句是一個條件語句,當(dāng)特定的條件滿足后執(zhí)行一66關(guān)于條件表達式邏輯操作符:AND(&&),OR(||),NOT(!)表達式1AND表達式2

表達式1OR表達式2

NOT表達式1

注意:浮點數(shù)字的等于詳細介紹參見幫助文件-公式系統(tǒng)-操作符注意:條件表達式括號后面不要加分號。關(guān)于條件表達式邏輯操作符:AND(&&),OR(||),N67IF-ElseIf-Else語句是對指定條件進行判斷,如果條件滿足執(zhí)行If后的語句。否則執(zhí)行Else后面的語句。語法如下:If(Condition){TradeBlazer公式語句1;}Else{TradeBlazer公式語句2;}IF-ElseIf-Else語句是對指定條件進行判斷,如果條68If-Else-IfIf-Else-If是在If-Else的基礎(chǔ)上進行擴展,支持條件的多重分支。語法如下:If(Condition1){TradeBlazer公式語句1;}ElseIf(Condition2){TradeBlazer公式語句2;}Else{TradeBlazer公式語句3;}If-Else-If的語句可以根據(jù)需要一直擴展,在最后的Else之后再加If(Condition)和新的執(zhí)行代碼即可。當(dāng)然您也可以省略最后的Else分支,If-Else-IfIf-Else-If是在If-Else的69If-Else的嵌套If-Else的嵌套是在If-Else的執(zhí)行語句中包含新的條件語句,即一個條件被包含在另一個條件中。If(Condition1){If(Condition2){TradeBlazer公式語句1;}Else{TradeBlazer公式語句2;}}Else{If(Condition3){TradeBlazer公式語句3;}Else{TradeBlazer公式語句4;}}If-Else的嵌套If-Else的嵌套是在If-Else70回到指標(biāo)賦值語句用變量使流程清晰ParamsNumericLength1(0);NumericLength2(5);VarsNumericbiger;Beginif(Length1>=Length2){ biger=Length1;}else{ biger=Length2;}PlotNumeric(“Line1”,biger);End回到指標(biāo)賦值語句71公式的三段論公式的三段論72函數(shù)(1)用函數(shù)使流程更加簡潔Params NumericLength1(0); NumericLength2(5);Vars Numericbiger;Begin biger=GetBiger(Length1,Length2); PlotNumeric(“Line1”,biger);End函數(shù)(1)用函數(shù)使流程更加簡潔73函數(shù)(1)GetBiger的內(nèi)容Return語句ParamsNumericLength1(0);NumericLength2(5);Beginif(Length1>=Length2){ returnLength1;}else{ returnLength2;}End函數(shù)(1)GetBiger的內(nèi)容74指標(biāo)模板Params …..Vars Numericline1; Numericline2; …..Begin line1=GetLine1(…….); line2=GetLine2(…….); …… PlotNumeric(“Line1”,line1); PlotNumeric(“Line2”,line2); …..End參考MA指標(biāo)的模板寫法指標(biāo)模板Params75函數(shù)(2)假設(shè)要寫這樣一個指標(biāo):兩個數(shù)字型參數(shù),比較其大小,并輸出兩條線Params NumericLength1(0); NumericLength2(5);Vars Numericbiger; Numericsmaller;Begin biger=GetBiger(Length1,Length2); smaller=GetSmaller(Length1,Length2); PlotNumeric(“bigger”,biger); PlotNumeric(“smaller”,smaller);End然而……函數(shù)(2)假設(shè)要寫這樣一個指標(biāo):兩個數(shù)字型參數(shù),比較其大小,76函數(shù)(2)引用型參數(shù)函數(shù)compare的內(nèi)容ParamsNumericparam1(0);Numericparam2(5);NumericRefsamller;Beginif(param1>=param2){ smaller=param2; returnparam1;}else{ smaller=param1; returnLength2;}End函數(shù)(2)引用型參數(shù)77函數(shù)(2)調(diào)用compareParams Numericparam1(0); Numericparam2(5);Vars Numericbiger; Numericsmaller;Begin biger=compare(param1,param2,smaller); PlotNumeric(“bigger”,biger); PlotNumeric(“smaller”,smaller);End函數(shù)(2)調(diào)用compare78一個新需求用函數(shù)計算最近三根BAR的最低點Begin if(low<=low[1]&&low<=low[2]) { returnlow; } if(low[1]<=low&&low[1]<=low[2]) { returnlow[1]; } if(low[2]<=low&&low[2]<=low[1]) { returnlow[2]; }End一個新需求用函數(shù)計算最近三根BAR的最低點79一個新需求(另一種寫法:冒泡)Vars numericsmallest(999999); //初始值很重要!Begin if(low[2]<samllest) { smallest=low[2]; } if(low[1]<samllest) { smallest=low[1]; } if(low<samllest) { smallest=low; } returnsmallest;End一個新需求(另一種寫法:冒泡)Vars80最近N個BAR的最低值(循環(huán)語句)Params numericLength(5);Vars numericsmallest(999999); //初始值很重要! numerici;Begin fori=1toLength-1 { if(low[i]<=smallest) { smallest=low[i]; } } returnsmallest;End最近N個BAR的最低值(循環(huán)語句)Params81最近N個BAR的最低值Params numericLength(5);Vars numericsmallest(999999); //初始值很重要! numerici;Begin if(CurrentBar<Length-1) { returnInvalidNumeric; } fori=1toLength-1 { if(low[i]<=smallest) { smallest=low[i]; } } returnsmallest;End最近N個BAR的最低值Params82數(shù)據(jù)回溯如何使用回溯表達?XXX[nOffset]nOffset是要回溯引用的Bar相對于當(dāng)前Bar的偏移值,該值必須大于等于0,當(dāng)nOffset=0時,即為獲取當(dāng)前Bar的參數(shù)值。并且nOffset不能大于當(dāng)時的CurrentBar,這樣會導(dǎo)致數(shù)據(jù)訪問越界。造成不可預(yù)知的計算結(jié)果。變量回溯,參數(shù)回溯,函數(shù)回溯(系統(tǒng)函數(shù))數(shù)據(jù)回溯如何使用回溯表達?XXX[nOffset]83序列參數(shù)Params numericSeries Price(1); numeric Length(5);Vars numericsmallest(999999); //初始值很重要! numerici;Begin if(CurrentBar<Length-1) { returnInvalidNumeric; } fori=1toLength-1 { if(Price[i]<=smallest) { smallest=Price[i]; } } returnsmallest;End序列參數(shù)Params84沒完沒了的新需求得到最低值與最低值的位置沒完沒了的新需求得到最低值與最低值的位置85沒完沒了的新需求Params numericSeries Price(1); numericRef Position;Vars numericSeries smallest(999999); numericSeries i;Begin if(CurrentBar==0) { smallest=Price; I=0; Position=i; returnsmallest; }else { smallest=smallest[1]; I=i[1]; } if(price<=smallest) { samllest=price; I=currentBar; } returnsmallest;End沒完沒了的新需求Params86關(guān)于常量和變量的定義常量是用來代替一個數(shù)或字符串的名稱。在公式整個執(zhí)行過程中不發(fā)生改變。變量是一個存儲值的地址,當(dāng)變量被聲明之后,就可以在腳本中使用變量,可以對其賦值,也可以在其他地方引用變量的值進行計算,要對變量進行操作,直接使用變量名稱即可。變量的主要用處在于它可以存放計算或比較的結(jié)果,以方便在之后的腳本中直接引用運算的值,而無需重現(xiàn)計算過程。關(guān)于常量和變量的定義常量是用來代替一個數(shù)或字符串的名稱。在87關(guān)于變量的類型TradeBlazer公式支持有三種基本數(shù)據(jù)類型:數(shù)值型(Numeric)、字符串(String)、布爾型(Bool)。為了通過用戶函數(shù)返回多個值,我們對三種數(shù)據(jù)類型進行了擴展,增加了引用數(shù)據(jù)類型。另外,為了對變量,參數(shù)進行回溯,我們增加了序列數(shù)據(jù)類型。因此,我們的數(shù)據(jù)類型共有九種關(guān)于變量的類型TradeBlazer公式支持有三種基本數(shù)據(jù)類889種數(shù)據(jù)類型Bool布爾型。BoolRef布爾型引用。BoolSeries和周期長度一致的Bool型序列值。Numeric數(shù)值型。NumericRef數(shù)值型引用。NumericSeries和周期長度一致的Numeric型序列值。String字符串。StringRef字符串引用。StringSeries和周期長度一致的String型序列值。9種數(shù)據(jù)類型Bool布爾型。89關(guān)于參數(shù)參數(shù)是一個預(yù)先聲明的地址,用來存放輸入?yún)?shù)的值,在聲明之后,您就可以在接下來的公式中使用該參數(shù)的名稱來引用其值。參數(shù)的值在公式的內(nèi)部是不能夠被修改,在整個程序中一直保持不變,不能對參數(shù)進行賦值操作(引用參數(shù)是個特例)。參數(shù)的好處在于您可以在調(diào)用執(zhí)行技術(shù)分析,交易指令的時候才指定相應(yīng)的參數(shù),而不需要重新編譯。詳細使用參見幫助文件-公式系統(tǒng)-參數(shù)關(guān)于參數(shù)參數(shù)是一個預(yù)先聲明的地址,用來存放輸入?yún)?shù)的值,在聲90交易策略-完整的交易系統(tǒng)通常單個交易指令只完成建倉或平倉的單個動作,而一個完整的交易策略應(yīng)該至少包含建倉、平倉交易指令,并且根據(jù)需要加上止損,獲利等鎖定風(fēng)險和收益的交易指令。多個交易指令的組合才能更加有效的幫助我們完整的進行交易,因此,我們將多個交易指令的有效組合稱之為交易策略。交易策略-完整的交易系統(tǒng)通常單個交易指令只完成建倉或平倉的單91交易策略的運行機制(1)假定我們創(chuàng)建一個交易策略,該交易策略由以下交易指令組成,并按照如下順序應(yīng)用到超級圖表中。交易策略的運行機制(1)假定我們創(chuàng)建一個交易策略,該交易策略92交易策略的運行機制(2)當(dāng)我們將該交易策略應(yīng)用到超級圖表上時,TradeBlazer公式將會從圖表的第一個Bar開始執(zhí)行交易策略,在第一個Bar上首先執(zhí)行多頭建倉指令A(yù),可能會產(chǎn)生交易委托(開倉),該委托可能被設(shè)置為在當(dāng)前Bar執(zhí)行,也可以被設(shè)置為延遲到下一個Bar執(zhí)行。當(dāng)多頭建倉指令A(yù)執(zhí)行完成之后,將按順序調(diào)用多頭平倉指令B,同時該指令會判斷當(dāng)前的持倉狀態(tài),倉位等信息,當(dāng)條件滿足的時候會產(chǎn)生交易委托(平倉)。交易策略的運行機制(2)當(dāng)我們將該交易策略應(yīng)用到超級圖表上時93交易策略的運行機制(3)接下來依次執(zhí)行止損平倉指令C和獲利平倉指令D,當(dāng)四個交易指令在第一個Bar上都執(zhí)行完之后,將會移到第二個Bar執(zhí)行,這時候,系統(tǒng)會首先讀取上一個Bar是否有延遲的交易委托,如果有延遲的交易委托,對這些委托先進行處理,然后像第一個Bar一樣,依次調(diào)用各個交易指令。以此類推,從圖表的第一個Bar到最后一個Bar,全部執(zhí)行完成之后,整個交易策略執(zhí)行完畢。在整個執(zhí)行過程產(chǎn)生的所有交易委托被保存下來供超級圖表模塊顯示或進行性能測試分析。交易策略的運行機制(3)接下來依次執(zhí)行止損平倉指令C和獲利平94歷史數(shù)據(jù)測試和實際交易的關(guān)系歷史數(shù)據(jù)測試和實際交易的關(guān)系95MarketPosition與A_TotalPosition普通型函數(shù)狀態(tài)型函數(shù)MarketPosition與A_TotalPosition96Q函數(shù)和A函數(shù)Q函數(shù),指

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論