期貨程序化編程基礎(chǔ)(交易開拓者)_第1頁
期貨程序化編程基礎(chǔ)(交易開拓者)_第2頁
期貨程序化編程基礎(chǔ)(交易開拓者)_第3頁
期貨程序化編程基礎(chǔ)(交易開拓者)_第4頁
期貨程序化編程基礎(chǔ)(交易開拓者)_第5頁
已閱讀5頁,還剩70頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、華泰長城期貨有限公司華泰長城期貨有限公司Huatai Great Wall Futures Co., Ltd.QQ:909118951交易開拓者(交易開拓者(TB)編程基礎(chǔ))編程基礎(chǔ)-公式篇公式篇基本框架基本框架TBTB公式概述公式概述1數(shù)據(jù)數(shù)據(jù)2語句語句3變量變量5數(shù)據(jù)回溯數(shù)據(jù)回溯6參數(shù)參數(shù)4公式公式1什么是什么是TradeBlazer公式公式 1、TradeBlazer公式是一種專為分析金融數(shù)據(jù)-時間序列而設(shè)計的高級語言,它提供直接、強大的框架將交易思想轉(zhuǎn)化為用戶函數(shù)、技術(shù)分析,交易指令等計算機能夠識別的代碼。 2、TradeBlazer公式是一門語法簡單但是功能強大的語言,利用它能創(chuàng)建自

2、己的交易和技術(shù)分析工具。通過組合普通的交易指令和簡單的語句,TradeBlazer公式能夠很容易并且直接的用簡單語句表達自己的交易規(guī)則和行為。 3、交易開拓者能夠讀取TradeBlazer公式,在歷史價格數(shù)據(jù)基礎(chǔ)上進行評估,并能自動執(zhí)行特定的交易動作,將交易思想轉(zhuǎn)化為實際的交易操作。概述概述TradeBlazer公式能做什么?公式能做什么? 通過TradeBlazer公式,能夠創(chuàng)建自己的交易指令、技術(shù)指標、K線型態(tài)、特征走勢、用戶函數(shù)。 TradeBlazer公式包含的公式類型如下:用戶函數(shù):用戶函數(shù):用戶函數(shù)是能夠通過函數(shù)名稱進行引用的指令集,它執(zhí)行一系列操作并返回一個值。您可以在其他任何公

3、式中使用用戶函數(shù)進行計算; 技術(shù)指標:技術(shù)指標:技術(shù)指標是基于基礎(chǔ)數(shù)據(jù),通過一系列的數(shù)學(xué)運算,在每個Bar返回相應(yīng)的結(jié)果值的一類公式,這些值在圖表模塊中輸出為線條、柱狀圖、點等表現(xiàn)形式; K線型態(tài):線型態(tài):K線型態(tài)是類似于技術(shù)指標的一類公式,它主要著重于反映一段K線的特定型態(tài),并通過不同的技術(shù)指標的方式輸出到圖表; 特征走勢:特征走勢:特征走勢是類似于技術(shù)指標的一類公式,它主要著重于反映整個價格曲線的趨勢、變化特征,并通過特定的表達方式輸出到圖表; 交易指令:交易指令:交易指令是包含買、賣、平倉,頭寸,倉位控制的并執(zhí)行交易指令的一類公式,它主要幫助您將您的交易思想轉(zhuǎn)化為計算機的操作。 通過調(diào)用

4、TradeBlazer公式,您可以在交易開拓者中進行技術(shù)分析、交易策略優(yōu)化測試、公式報警、自動交易等操作。概述概述數(shù)據(jù)類型Bar數(shù)據(jù),是指商品在不同周期下形成的數(shù)據(jù),是指商品在不同周期下形成的序列數(shù)據(jù)序列數(shù)據(jù),在單獨的每個,在單獨的每個Bar上面包上面包含開盤價、收盤價、最高價、最低價、成交量及時間。期貨等品種還有持倉含開盤價、收盤價、最高價、最低價、成交量及時間。期貨等品種還有持倉量等數(shù)據(jù)。量等數(shù)據(jù)。 疊加數(shù)據(jù),交易開拓者的超級圖表支持商品疊加的顯示,當疊加的圖表調(diào)用疊加數(shù)據(jù),交易開拓者的超級圖表支持商品疊加的顯示,當疊加的圖表調(diào)用各項公式時,可能有需要使用疊加的商品對應(yīng)的基礎(chǔ)數(shù)據(jù),針對這樣

5、的需求各項公式時,可能有需要使用疊加的商品對應(yīng)的基礎(chǔ)數(shù)據(jù),針對這樣的需求,TradeBlazer公式提供了疊加數(shù)據(jù)的支持。公式提供了疊加數(shù)據(jù)的支持。行情數(shù)據(jù),行情數(shù)據(jù),TradeBlazer公式還可以支持實時行情數(shù)據(jù)的調(diào)用,行情數(shù)據(jù)是公式還可以支持實時行情數(shù)據(jù)的調(diào)用,行情數(shù)據(jù)是指當前商品最新的報價數(shù)據(jù),該數(shù)據(jù)和指當前商品最新的報價數(shù)據(jù),該數(shù)據(jù)和Bar無關(guān),行情數(shù)據(jù)的回溯沒有意義無關(guān),行情數(shù)據(jù)的回溯沒有意義。 屬性數(shù)據(jù),除了以上的各項數(shù)據(jù)之外,屬性數(shù)據(jù),除了以上的各項數(shù)據(jù)之外,TradeBlazer公式還提供一組重要的公式還提供一組重要的屬性數(shù)據(jù),反映了該商品的一些基本信息,比如當前數(shù)據(jù)周期,買

6、賣盤個數(shù)屬性數(shù)據(jù),反映了該商品的一些基本信息,比如當前數(shù)據(jù)周期,買賣盤個數(shù)、保證金設(shè)置等信息。在所有的、保證金設(shè)置等信息。在所有的Bar上面獲取的市場屬性數(shù)據(jù)都是一樣的,上面獲取的市場屬性數(shù)據(jù)都是一樣的,屬性數(shù)據(jù)的回溯沒有意義。屬性數(shù)據(jù)的回溯沒有意義。數(shù)據(jù)數(shù)據(jù)Bar數(shù)據(jù)數(shù)據(jù)所有的Bar按照不同周期組合,并按照時間從先到后進行排列,由此形成為序列數(shù)據(jù),整個序列稱之為Bar數(shù)據(jù)。以下列出所有的以下列出所有的Bar數(shù)據(jù)系統(tǒng)函數(shù):數(shù)據(jù)系統(tǒng)函數(shù): 函數(shù)名函數(shù)名簡寫簡寫描述描述DateD當前Bar的日期。TimeT當前Bar的時間。OpenO當前Bar的開盤價。HighH當前Bar的最高價。LowL當前B

7、ar的最低價。CloseC當前Bar的收盤價。VolV當前Bar的成交量。OpenInt無無當前Bar的持倉量。CurrentBar無無當前Bar的索引值,從0開始計數(shù)。BarStatus無無當前Bar的狀態(tài)值,0表示為第一個Bar,1表示為中間的普通Bar,2表示最后一個Bar。計算方法計算方法TradeBlazer公式在計算時按照Bar數(shù)據(jù)的Bar數(shù)目,從第一個Bar到最后一個Bar,依次進行計算,如果公式中出現(xiàn)了調(diào)用Bar數(shù)據(jù)函數(shù)的,則取出當前Bar的相應(yīng)值,進行運算。如下圖箭頭所示,公式執(zhí)行從上至下,Bar從左到右執(zhí)行。在公式的編寫中,經(jīng)常會遇到當前Bar的數(shù)據(jù)和上一個Bar,上N個B

8、ar數(shù)據(jù)進行比較,計算的情況,針對這種情況,TradeBlazer公式提供了一種處理機制:回溯。即對數(shù)據(jù)的向前引用,比如,獲取上一個Bar的收盤價:Close1,獲取10天前的成交量:Vol10。以下提供一個簡單的例子來說明如何進行回溯處理。假定有如下語句:If (Close Close1) Buy(1,Close);以上公式執(zhí)行一個簡單的操作,當前Bar的收盤價大于上一個Bar的收盤價,即執(zhí)行按照當前收盤價買入1手的動作。根據(jù)上表的數(shù)據(jù),公式將在CurrentBar為2和3的時候調(diào)用Buy指令。如果您足夠仔細的話,您會發(fā)現(xiàn):對于上面的一段公式的執(zhí)行,有一個小小的問題,當?shù)谝淮斡嬎愎綍r,即C

9、urrentBar = 0時,這個時候需要獲取上一個Bar的數(shù)據(jù),但是當前Bar已經(jīng)是第一個Bar,這個時候就存在著問題,如何來獲取此時的Close1呢,TradeBlazer公式將默認Close1為無效值,即系統(tǒng)函數(shù)中的InvalidNumeric,Close Close1的表達式計算結(jié)果是一個Bool值,其結(jié)果也是一個無效值,對于Bool值,我們將False作為其無效值。因此,第一個Bar計算時,Buy指令不會被執(zhí)行。對于技術(shù)分析這類公式來說,假定Bar數(shù)據(jù)的總數(shù)共有100,相同的代碼將從CurrentBar = 0到CurrentBar = 99 共執(zhí)行100遍,分別輸出公式中的結(jié)果值。

10、注意注意:在執(zhí)行TradeBlazer公式時,可能出現(xiàn)數(shù)據(jù)不存在的情況,可通過系統(tǒng)函數(shù)HistoryDataExist進行判斷,如果該函數(shù)返回True,即為Bar數(shù)據(jù)有效。 疊加數(shù)據(jù)疊加數(shù)據(jù)交易開拓者的超級圖表支持商品疊加的顯示,當疊加的圖表調(diào)用各項公式時,可能有需要使用疊加的商品對應(yīng)的基礎(chǔ)數(shù)據(jù)假定,我們新建一個超級圖表模塊,其主數(shù)據(jù)對應(yīng)的商品為:cu1107,在此基礎(chǔ)上,我們疊加了cu1108和cu1109。此時,根據(jù)疊加操作的先后順序,cu1107為Data0,cu1108為Data1,cu1109為Data2,在TradeBlazer公式中,我們可以通過Data1.Close(),Dat

11、a2.Vol()類似方法調(diào)用疊加Bar數(shù)據(jù),疊加Bar數(shù)據(jù)的函數(shù)和Bar數(shù)據(jù)一樣,只是需要在調(diào)用的時候加上數(shù)據(jù)源。我們也可以使用Data0.Open()來調(diào)用Bar數(shù)據(jù),默認情況下,可以省略對主數(shù)據(jù)源的指定,為了方便,一般直接使用Open()來代替Data0.Open()。 數(shù)據(jù)類型數(shù)據(jù)類型TradeBlazer公式支持有三種基本數(shù)據(jù)類型:數(shù)值型、字符串、布爾型。為了通過用戶函數(shù)返回多個值,我們對三種數(shù)據(jù)類型進行了擴展,增加了引用數(shù)據(jù)類型。另外,為了對變量,參數(shù)進行回溯,我們增加了序列數(shù)據(jù)類型。因此,我們的數(shù)據(jù)類型共有九種,如下表所示:名稱名稱說明說明Bool布爾型。BoolRef布爾型引用。

12、BoolSeries和周期長度一致的Bool型序列值。Numeric數(shù)值型。NumericRef數(shù)值型引用。NumericSeries和周期長度一致的Numeric型序列值。String字符串。StringRef字符串引用。StringSeries和周期長度一致的String型序列值。數(shù)值型的表達式可以是一個數(shù)字,當然,他們也可以是一個數(shù)值型的保留字,例如:保留字Close。或者是通過運算符號組合的一個計算表達式,該表達式的結(jié)果是數(shù)值型。下文中的例子都是數(shù)值型的表達式。 154; Vol; (High+Low)/2;布爾型的表達式能夠返回一個值True/False,或者說它可以對表達式的值進行

13、評估,然后返回其值,要么為True,要么為False。邏輯表達式永遠要涉及到比較運算,下面我們有一些邏輯表達式,它也就是對一個表達式的值是True還是False進行判斷。 Close Open; 5 = = = 邏輯運算符邏輯運算符AND/& OR/| NOT/!括號括號 () 其它其它. , 操作符操作符說明說明+加-減*乘/除%求模求冪()括號操作符操作符說明說明大于=大于等于不等于=等于表達式表達式1表達式表達式2表達式表達式1 AND 表達式表達式2TrueTrueTrueTrueFalseFalseFalseTrueFalseFalseFalseFalse表達式表達式1表達式

14、表達式2表達式表達式1 OR 表達式表達式2TrueTrueTrueTrueFalseTrueFalseTrueTrueFalseFalseFalseAND邏輯操作符的應(yīng)用情況: OR邏輯操作符的應(yīng)用情況: 表達式表達式1NOT表達式表達式1TrueFalseFalseTrueNOT邏輯操作符的應(yīng)用情況: 算術(shù)運算符號關(guān)系運算符號字符串操作符字符串操作符+是唯一的可以應(yīng)用于控制字符串表達式的數(shù)學(xué)操作符,它可用于連接兩個文本字符串為一個字符串。如下:這是一個字符串表達式,+返回值為數(shù)值型。;This is expression A+ and this is expression B.;上面字符串

15、表達式的輸出值,應(yīng)該是這是一個字符串表達式,返回值為數(shù)值型。和This is expression A and this is expression B.。使用注釋使用注釋注釋可以標注解釋語句,公式在編譯執(zhí)行時會忽略注釋語句。注釋分為單行注釋和多行注釋。單行注釋單行注釋在單行中對需要注釋部分之前通過添加/,使/之后的語句形成注釋。以下是注釋的例子:/這是一個注釋語句;多行注釋多行注釋在需要注釋的部分之前添加/*,之后添加*/,形成注釋。以下是注釋的例子:/*這是一個多行注釋的語句;*/ 標點符號標點符號通常,在寫語句的過程中,會用到很多的標點符號。可用來定義參數(shù)、定義變量、創(chuàng)建規(guī)則的優(yōu)先權(quán)。例

16、如,TradeBlazer公式用;來標注一個語句結(jié)束。標點符號也是一個保留字,因為符號也是語言結(jié)構(gòu)的一部分,在下表中列出了TradeBlazer公式中所用到的標點符號,和該標點符號所表達的意思:符號符號名稱名稱說明說明;分號語句結(jié)束的標志。,逗號當函數(shù)帶有多個參數(shù)時,用于分隔多個參數(shù)。()小括號括號之內(nèi)的表達式有計算的優(yōu)先權(quán)。 雙引號字符串常量。中括號回溯數(shù)據(jù),引用以前的數(shù)據(jù),或者數(shù)組中的元素。大括號控制語句的起始。.點擴展數(shù)據(jù)源的數(shù)據(jù)調(diào)用。功能關(guān)鍵字功能關(guān)鍵字保留字保留字說明說明Params用該關(guān)鍵字宣告參數(shù)定義的起始,參數(shù)必須填寫默認值。Vars用該關(guān)鍵字宣告變量定義的起始(可以賦初值),

17、 變量不填寫初值時,系統(tǒng)將自動為其填充初值。If條件語句。Else條件語句。Begin用該關(guān)鍵字宣告程序主體的起始。End用該關(guān)鍵字宣告程序主體的結(jié)束。For循環(huán)語句。To循環(huán)語句。DownTo循環(huán)語句。While循環(huán)語句。Break循環(huán)語句。Continue循環(huán)語句。True真。False假。數(shù)據(jù)源數(shù)據(jù)源保留字保留字說明說明Data0-Data49支持50個數(shù)據(jù)源。數(shù)據(jù)輸出數(shù)據(jù)輸出保留字保留字說明說明FieldBool用戶字段的布爾型返回數(shù)據(jù)。FieldNumeric用戶字段的數(shù)值型返回數(shù)據(jù)。FieldString用戶字段的字符串返回數(shù)據(jù)。PlotBool輸出布爾型值。PlotNumeric

18、輸出數(shù)值型值。PlotString輸出字符串值。PlotBar畫K線型態(tài)。UnPlot取消指定位置的輸出。Commentary在超級圖表當前Bar添加一行注釋信息。 Alert報警輸出。Buy買入操作。Sell賣出操作。.其他系統(tǒng)函數(shù)。語句概念一個語句代表一個完全的指示或描述,語句中包含有保留字、操作符、符號。并且語句總是以;作為語句結(jié)束的標志。以下為語句的一些例子:This is one statement;This is another statement;This isone statement;This isanotherstatement;This is yet another;Th

19、is is one statement;This is another;語句語句賦值語句賦值語句賦值語句用于給公式變量指定一個具體的值的語句,賦值語句使用賦值操作賦值語句用于給公式變量指定一個具體的值的語句,賦值語句使用賦值操作符符(=)進行處理。進行處理。以下為賦值語句的一些例子:以下為賦值語句的一些例子:Vars Bool b;Begin B = true; .EndVars Numeric Value1;Begin Value1 = (Close + Open)/2; .EndVars String str;Begin str =It Is A Test!; .End控制語句控制語句 T

20、radeBlazer公式支持兩大類的控制語句:條件語句和循環(huán)語句。 條件語句條件語句條件語句包括以下四類表達方式: If If-Else If-Else-If If-Else的嵌套的嵌套 循環(huán)語句循環(huán)語句循環(huán)語句包括兩種表達方式:循環(huán)語句包括兩種表達方式:For和和While。If 語句語句If語句是一個條件語句,當特定的條件滿足后執(zhí)行一部分操作。If (Condition) TradeBlazer公式語句;Condition是一個邏輯表達式,當Condition為True的時候,TradeBlazer公式語句將會被執(zhí)行,Condition可以是多個條件表達式的邏輯組合,Condition必須

21、用()括起來。TradeBlazer公式語句是一些語句的組合,如果TradeBlazer公式語句是單條,您可以省略,二條或者二條以上的語句必須使用。例如,您可以計算圖表中上升缺口(當前Bar的開盤價高于上一個Bar的最高價)出現(xiàn)了多少次,只要在圖表中使用If語句,當找到一個滿足條件的Bar時,即條件為真時,變量加1,腳本如下:Vars NumericSeries Counter(0);Begin If ( Open High1) Counter = Counter1 + 1; . End在TradeBlazer公式中,If語句被廣泛使用,如K線型態(tài)和特征走勢,都需要大量的使用If語句,當條件滿

22、足的時候,在滿足條件的Bar上面進行標記。例如,下面的語句就是特征走勢的例子:If(High High1 AND Low High1 AND Low High1 AND Low Close1,Value1 = Value1 + Vol;否則Value1 = Value1 - Vol,腳本如下:If (Colse Close1) Value1 = Value1 + Vol;Else Value1 = Value1 - Vol;If-Else-If 語句語句If-Else-If是在If-Else的基礎(chǔ)上進行擴展,支持條件的多重分支。語法如下:If (Condition1) TradeBlazer公

23、式語句1;Else If(Condition2) TradeBlazer公式語句2;Else TradeBlazer公式語句3;lCondition1是一個邏輯表達式,當Condition1為True的時候,TradeBlazer公式語句1將會被執(zhí)行,Condition1為False時,將會繼續(xù)判斷Condition2的值,當Condition2為True時,TradeBlazer公式語句2將會被執(zhí)行。Condition2為False時,TradeBlazer公式語句3將會被執(zhí)行。Condition1,Condition2可以是多個條件表達式的邏輯組合,條件表達式必須用()括起來。If-Els

24、e-If的語句可以根據(jù)需要一直擴展,在最后的Else之后再加If(Condition)和新的執(zhí)行代碼即可。當然您也可以省略最后的Else分支,語法如下:If (Condition1) TradeBlazer公式語句1;Else If(Condition2) TradeBlazer公式語句2;If-Else的嵌套的嵌套If-Else的嵌套是在If-Else的執(zhí)行語句中包含新的條件語句,即一個條件被包含在另一個條件中。語法如下:If (Condition1) If (Condition2) TradeBlazer公式語句1; Else TradeBlazer公式語句2; Else If (Cond

25、ition3) TradeBlazer公式語句3; Else TradeBlazer公式語句4; Condition1是一個邏輯表達式,當Condition1為True的時候,將會繼續(xù)判斷Condition2的值,當Condition2為True時,TradeBlazer公式語句1將會被執(zhí)行。Condition2為False時,TradeBlazer公式語句2將會被執(zhí)行。當Condition1為False的時候,將會繼續(xù)判斷Condition3的值,當Condition3為True時,TradeBlazer公式語句3將會被執(zhí)行。Condition3為False時,TradeBlazer公式語句

26、4將會被執(zhí)行。Condition1,Condition2,Condition3可以是多個條件表達式的邏輯組合,條件表達式必須用()括起來。TradeBlazer公式語句是一些語句的組合,如果TradeBlazer公式語句是單條,您可以省略,二條或者二條以上的語句必須使用。TradeBlazer公式語句是一些語句的組合,如果TradeBlazer公式語句是單條,您可以省略,二條或者二條以上的語句必須使用。循環(huán)語句循環(huán)語句 ForFor語句是一個循環(huán)語句,重復(fù)執(zhí)行某項操作,直到循環(huán)結(jié)束。語句是一個循環(huán)語句,重復(fù)執(zhí)行某項操作,直到循環(huán)結(jié)束。語法如下:語法如下:For 循環(huán)變量循環(huán)變量 = 初始值初始

27、值 To 結(jié)束值結(jié)束值 TradeBlazer公式語句公式語句;循環(huán)變量為在之前已經(jīng)定義的一個數(shù)值型變量,F(xiàn)or循環(huán)的執(zhí)行是從循環(huán)變量從初始值到結(jié)束值,按照步長為1遞增,依次執(zhí)行TradeBlazer公式語句。結(jié)束值必須大于或等于初始值才有意義,初始值和結(jié)束值可以使用浮點數(shù),但是在執(zhí)行過程中會被直接取整。只計算其整數(shù)部分。TradeBlazer公式語句是一些語句的組合,如果TradeBlazer公式語句是單條,您可以省略,二條或者二條以上的語句必須使用。第一次執(zhí)行時,首先將循環(huán)變量賦值為初始值,然后判斷循環(huán)變量是否小于等于結(jié)束值,如果滿足條件,則執(zhí)行TradeBlazer公式語句,同時循環(huán)變量

28、加1。接著重新判斷循環(huán)變量是否小于等于結(jié)束值,一直到條件為False,退出循環(huán)。例如,以下的用戶計算Price最近Length周期的和。Params NumericSeries Price(1); Numeric Length(10);Vars Numeric SumValue(0); Numeric i;Begin for i = 0 to Length - 1 SumValue = SumValue + Pricei; Return SumValue;End如果希望For語句從大到小進行循環(huán),可以使用以下的語法:For 循環(huán)變量 = 初始值 DownTo 結(jié)束值 TradeBlazer公式

29、語句;For-DownTo讓循環(huán)變量從結(jié)束值每次遞減1直到等于結(jié)束值,依次調(diào)用TradeBlazer公式語句執(zhí)行,初始值必須大于或等于結(jié)束值才有意義。For語句是比較常用的一種循環(huán)控制語句,它應(yīng)用于知道循環(huán)次數(shù)的地方,很多內(nèi)建用戶函數(shù)中都使用For語句來完成相應(yīng)的功能,比如Summation,Highest,Lowest,LinearReg等。WhileWhile語句在條件為真的時候重復(fù)執(zhí)行某一項操作。即,只要條件表達式的值為真(True)時,就重復(fù)執(zhí)行某個動作。直到行情信息改變以致條件為假(False)時,循環(huán)才結(jié)束。語法如下:While (Condition) TradeBlazer公式語

30、句;Condition是一個邏輯表達式,當Condition為True的時候,TradeBlazer公式語句將會被循環(huán)執(zhí)行,Condition可以是多個條件表達式的邏輯組合,Condition必須用()括起來。TradeBlazer公式語句是一些語句的組合,如果TradeBlazer公式語句是單條,您可以省略,二條或者二條以上的語句必須使用。大于100000成交量需要最近Bar的個數(shù):Vars Numeric SumVolume(0); Numeric Counter (0);Begin While (SumVolume 100000) SumVolume = SumVolume + VolC

31、ounter ; Counter = Counter + 1; End 首先,我們定義兩個變量SumVolume和Counter,并將其默認值設(shè)為0。當SumVolume High,Tmp,High); oLower = IIf(Tmp High1 + Average(Close,10)*0.5) Buy(100, High1 + Average(Close,10)*0.5); 如果使用變量,則整個代碼變得簡潔: Value1 = High1 + Average(Close,10)*0.5; If (Close Value1) Buy(100,Value1); 如果一些表達式的組合經(jīng)常在不同的

32、公式中被調(diào)用,這個時候變量就不能實現(xiàn)功能,變量只能在單個公式的內(nèi)部使用,這個時候我們需要建立用戶函數(shù)來完成這些功能。 變量變量變量類型變量類型 TradeBlazer公式支持九種數(shù)據(jù)類型,但對于變量定義,引用類型是無效的,剩余六種數(shù)據(jù)類型中分為簡單和序列兩大類,簡單類型變量是單個的值,不能對其進行回溯,序列類型變量是和Bar長度一致的數(shù)據(jù)排列,我們可以通過回溯來獲取當前Bar以前的任意值。變量聲明變量聲明在使用變量之前,必須對變量進行聲明,TradeBlazer公式使用關(guān)鍵字Vars來進行變量宣告,并指定變量類型。可以選擇賦默認值,也可以不賦默認值。變量定義的語法如下:Vars 變量類型 變量

33、名1(初值); 變量類型 變量名2(初值); 變量類型 變量名3(初值);下面是一些變量定義的例子: Vars NumericSeries MyVal1(0); /定義數(shù)值型序列變量MyVal1,默認值為0; Numeric MyVal2(0); /定義數(shù)值型變量MyVal2,默認值為0; Bool MyVal3(False); /定義布爾型變量MyVal3,默認值為False; String MyVal4(Test);/定義字符串變量MyVal4,默認值為Test。 變量定義的個數(shù)沒有限制,變量名稱的命名規(guī)范詳細說明參見命名規(guī)則。 整個公式中只能出現(xiàn)一個Vars宣告,并且要放到公式的開始部分

34、,在參數(shù)定義之后,正文之前。變量的默認值變量的默認值 在聲明變量時,通常會賦給變量一個默認值。例在聲明變量時,通常會賦給變量一個默認值。例如上例中的如上例中的0,F(xiàn)alse,Test等就是變量的默認等就是變量的默認值。如果某個變量沒有賦予默認值,系統(tǒng)將會自值。如果某個變量沒有賦予默認值,系統(tǒng)將會自動給該變量賦予默認值。數(shù)值型變量的默認值為動給該變量賦予默認值。數(shù)值型變量的默認值為0,布爾型變量的默認值為,布爾型變量的默認值為False,字符串的默認,字符串的默認值為空串。值為空串。 變量的默認值是在當公式在執(zhí)行時,給該變量賦變量的默認值是在當公式在執(zhí)行時,給該變量賦予的初值,使該變量在引用時存

35、在著有效的值。予的初值,使該變量在引用時存在著有效的值。在該公式每個在該公式每個Bar的執(zhí)行過程中,改變量的默認的執(zhí)行過程中,改變量的默認值都會被重新賦值。值都會被重新賦值。變量賦值變量賦值變量聲明完成之后,您可以在腳本正文中給變量指定一個值。語法如下: Name = Expression; Name是變量的名稱,表達式的類型可以是數(shù)值型、布爾型、字符串中的任何一種。不過表達式的類型一定要和變量的數(shù)據(jù)類型相匹配。如果變量被指定為是數(shù)值型的,那么表達式一定要是數(shù)值型的表達式。 例如:下面的語句將Close的10周期平均值賦值給變量Value1: Value1 = Average(Close ,

36、10); 在下面這個語句中,聲明了一個名為KeyReversal的邏輯型變量,然后又把計算的值賦給它。 Vars Bool KeyReversal(False); Begin KeyReversal = Low High1; . End變量使用 變量定義、賦值之后,在表達式中直接使用變量名就可以引用變量的值。例如在下面的語句中計算了買入價格后,把值賦給數(shù)值型變量EntryPrc,在買入指令中便可直接應(yīng)用變量名,通過變量名便可引用變量的值:Vars Numeric EntryPrc(0);Begin EntryPrc = Highest(High,10); If (MarkerPosition

37、1) Buy(1,EntryPrc); End接下來的例子,我們計算最近10個Bar最高價中的最大值(不包括當前Bar),對比當前High,然后通過If語句,產(chǎn)生報警信息。Vars Bool Con1(False);Begin Con1 = High Highest(High,10)1; If(Con1) Alert(New 10-bar high); End其實我們并不一定都要應(yīng)用條件為True的情況,有時候我們需要判斷條件為False的時候執(zhí)行某些代碼,如下的例子:Vars Bool Con1(False);Begin Con1 = High Lowest(Low,10)1; If(Con

38、1=False) Alert(New high or low); End序列變量序列變量序列變量是變量中的一種,可以對序列變量進行回溯獲取以前Bar的變量數(shù)據(jù)。序列變量的聲明和簡單變量一樣,只是定義的數(shù)據(jù)類型不同,您必須選擇以下的3種類型來定義序列變量:NumericSeries/BoolSeries/StringSeries。例如:Vars NumericSeries MyNumSVal(0); BoolSeries MyBoolVal(False); StringSeries MyStrVal();序列變量和簡單變量一樣,可以對其賦予默認值。序列變量定義之后,您可以象簡單變量一樣的對其使用

39、,不會有任何的不同。除了支持全部簡單變量的功能之外,序列變量還可以通過nOffset來回溯以前的變量值。 對于序列變量,TradeBlazer公式在內(nèi)部針對其回溯的特性作了很多的特殊處理,也需要為序列變量保存相應(yīng)的歷史數(shù)據(jù),因此,和簡單變量相比,執(zhí)行的速度和占用內(nèi)存空間方面都作了一些犧牲。因此,盡管您可以定義一個序列變量,把它當作簡單變量來使用,但是,我們強烈建議您只將需要進行回溯的變量定義為序列變量。 數(shù)據(jù)回溯數(shù)據(jù)回溯 在TradeBlazer公式中有三種類型的數(shù)據(jù)回溯:變量回溯、參數(shù)回溯和函數(shù)回溯。數(shù)據(jù)回溯數(shù)據(jù)回溯變量回溯變量回溯TradeBlazer公式共支持九種數(shù)據(jù)類型,但對于變量定義

40、,引用類型是無效的,剩余六種數(shù)據(jù)類型中分為簡單和序列兩大類,簡單類型變量是單個的值,不能對其進行回溯,序列類型變量是和Bar長度一致的數(shù)據(jù)排列,我們可以通過回溯來獲取當前Bar以前的任意值。要使用變量回溯,需要在變量的后面,使用中括號nOffset,nOffset是要回溯引用的Bar相對于當前Bar的偏移值,該值必須大于等于0,當nOffset = 0時,即為獲取當前Bar的變量值。例如,我們定義如下技術(shù)指標:Vars NumericSeries MyVal;Begin MyVal = Average(Close,10); PlotNumeric(MyVal,MyVal3);End以上公式定義

41、數(shù)值型序列變量MyVal,MyVal等于收盤價的10個周期的平均值,然后將序列變量MyVal的前3個Bar數(shù)據(jù)輸出。以上公式MyVal的前9個數(shù)據(jù)因為需要計算的Bar數(shù)據(jù)不足,返回?zé)o效值,從第10個Bar開始,MyVal獲取到正確的平均值,但是我們需要輸出的數(shù)據(jù)是MyVal3,即前3個Bar的數(shù)據(jù),因此,直到第12個Bar,有效的數(shù)據(jù)才會被輸出。以上公式的12是該公式需要的最少引用周期數(shù),如果將輸出信息畫到超級圖表中,前11個Bar是沒有圖形顯示的。當nOffsetCurrentBar或者nOffset MyVal) MyVal = Pricei; MyBar = i; HighestBar

42、= MyBar; Return MyVal;End用戶函數(shù)的調(diào)用用戶函數(shù)的調(diào)用 用戶函數(shù)成功創(chuàng)建之后(編譯/保存成功),您可以在其他的用戶函數(shù)、技術(shù)分析、交易指令等公式中調(diào)用用戶函數(shù),調(diào)用用戶函數(shù)時需要注意保持參數(shù)類型的匹配,即用戶函數(shù)參數(shù)的聲明數(shù)據(jù)類型需和調(diào)用時傳入?yún)?shù)的數(shù)據(jù)匹配,這是所指的匹配是指基本數(shù)據(jù)類型:數(shù)值型,布爾型,字符串三種類型匹配,并且保持序列參數(shù)和傳入變量類型的對應(yīng)。我們可以對用戶函數(shù)定義為Numeric或者NumericRef的參數(shù)使用Numeric類型的變量作為傳入?yún)?shù);但不能將在定義為NumericSeries類型的參數(shù)時傳入Numeric。具體的對應(yīng)關(guān)系如下表:函數(shù)

43、參數(shù)聲明類型函數(shù)參數(shù)聲明類型可傳入的變量類型可傳入的變量類型NumericNumeric,NumericRef,NumericSeriesNumericRefNumeric,NumericRef,NumericSeriesNumericSeriesNumericSeriesBoolBool,BoolRef,BoolSeriesBoolRefBool,BoolRef,BoolSeriesBoolSeriesBoolSeriesStringString,StringRef,StringSeriesStringRefString,StringRef,StringSeriesStringSeriesS

44、tringSeries技術(shù)指標技術(shù)指標 技術(shù)指標是最常用的一類公式,它通過計算一系列的數(shù)學(xué)公式,在每個Bar都返回值,這些值在圖表模塊中輸出為線條、柱狀圖、點等表現(xiàn)形式,通過分析圖形特點、走勢和曲線幫助客戶分析行情走勢,得出合理的交易判斷。當技術(shù)指標應(yīng)用在圖表中時,您可以設(shè)置技術(shù)指標各輸出值的表現(xiàn)形式,以及顏色、粗細等,如下圖的點,線,柱狀圖所示:技術(shù)指標的使用規(guī)則技術(shù)指標的使用規(guī)則歸納如下:支持三種基本類型的參數(shù)定義,支持指定參數(shù)默認值;不支持使用引用參數(shù);支持六種類型的變量定義,支持指定變量的默認值;可以訪問Data0-Data49個數(shù)據(jù)源的Bar數(shù)據(jù);可以訪問行情數(shù)據(jù)、屬性數(shù)據(jù);必須通過

45、PlotNumeric、PlotBool、PlotString返回數(shù)據(jù),返回數(shù)據(jù)類型為三種基本類型的組合;可以輸出多組數(shù)據(jù),通過PlotNumeric、PlotBool、PlotString的第一個參數(shù),即輸出名稱來區(qū)分輸出數(shù)據(jù);可以支持Alert來進行報警;技術(shù)指標可以調(diào)用所有的用戶函數(shù)進行計算;技術(shù)指標可以根據(jù)設(shè)置調(diào)用部分的系統(tǒng)函數(shù);技術(shù)指標在執(zhí)行時,必須要指定相應(yīng)的數(shù)據(jù)源和周期,需要調(diào)用歷史數(shù)據(jù)的,只有歷史數(shù)據(jù)存在的情況下才能返回正確的值。布林線的腳本ParamsNumeric Length(20);Numeric Offset(2); VarsNumeric UpLine;/上軌Num

46、eric DownLine;/下軌 NumericSeries MidLine;/中間線Numeric Band;BeginMidLine = AverageFC(Close,Length);Band = StandardDev(Close,Length,2); UpLine = MidLine + Offset * Band;DownLine = MidLine - Offset * Band; PlotNumeric(UpLine,UpLine);PlotNumeric(DownLine,DownLine);PlotNumeric(MidLine,MidLine);EndPlotNumer

47、ic用法K線型態(tài) K線型態(tài)是另外一種形式的技術(shù)分析公式,它對滿足設(shè)定條件的Bar進行標記,使之醒目,便于客戶進行分析。當K線型態(tài)應(yīng)用在圖表中時,您可以設(shè)置其輸出值的顏色、風(fēng)格和粗細,如圖所示:使用規(guī)則特征走勢的使用規(guī)則歸納如下:支持三種基本類型的參數(shù)定義,支持指定參數(shù)默認值;不支持使用引用參數(shù);支持六種類型的變量定義,支持指定變量的默認值;可以訪問Data0-Data49個數(shù)據(jù)源的Bar數(shù)據(jù);可以訪問行情數(shù)據(jù)、屬性數(shù)據(jù);必須通過PlotNumeric、PlotBool、PlotString返回數(shù)據(jù),返回數(shù)據(jù)類型為三種基本類型的組合;只能輸出一組數(shù)據(jù),用名稱進行區(qū)分;可以支持Alert來進行報警

48、;特征走勢可以調(diào)用所有的用戶函數(shù)進行計算;特征走勢可以根據(jù)設(shè)置調(diào)用部分的系統(tǒng)函數(shù);特征走勢在執(zhí)行時,必須要指定相應(yīng)的數(shù)據(jù)源和周期,需要調(diào)用歷史數(shù)據(jù)的,只有歷史數(shù)據(jù)存在的情況下才能返回正確的值。示例,特征走勢創(chuàng)歷史新高,腳本如下:Params Numeric Length(5);Vars Bool Condition(False);Begin Condition = (High =Highest(High,Length) ; If (Condition) PlotNumeric(CLSXG,High) End特征走勢創(chuàng)歷史新高判斷條件,條件滿足的情況下用PlotNumeric、PlotBool、PlotString輸出信息。交易指令交易指令TradeBlazer公式提供一種簡單的方法表達您的交易思想,那就是使用交易指令,一個簡單的交易指令如下:If (Condition) Buy (1,Close);以上的

溫馨提示

  • 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論