交易開拓者代碼學(xué)習(xí)各種買賣指令及實例_第1頁
交易開拓者代碼學(xué)習(xí)各種買賣指令及實例_第2頁
交易開拓者代碼學(xué)習(xí)各種買賣指令及實例_第3頁
交易開拓者代碼學(xué)習(xí)各種買賣指令及實例_第4頁
交易開拓者代碼學(xué)習(xí)各種買賣指令及實例_第5頁
已閱讀5頁,還剩25頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

交易開拓者代碼學(xué)習(xí)各種買賣指令及實例(TB)(轉(zhuǎn))2012年07月27日22:35原文地址:交易開拓者代碼學(xué)習(xí)各種買賣指令及實例(TB)(轉(zhuǎn))作者:竹本無青各種買賣指令Buy說明產(chǎn)生一個多頭建倉操作。語法Buy(NumericShare=0,NumericPrice=0,BoolDelay=False)參數(shù)Share買入數(shù)量,為整型值,默認(rèn)為使用系統(tǒng)設(shè)置參數(shù);Price買入價格,為浮點數(shù),默認(rèn)=0時為使用現(xiàn)價(非最后Bar為Close);Delay買入動作是否延遲,默認(rèn)為當(dāng)前Bar發(fā)送委托,當(dāng)Delay=TrUe,在下一個Bar執(zhí)行。備注產(chǎn)生一個多頭建倉操作,無返回值,該函數(shù)僅支持交易指令。該函數(shù)僅用于多頭建倉,其處理規(guī)則如下:如果當(dāng)前持倉狀態(tài)為持平,即MarketPosition=0時,該函數(shù)按照參數(shù)進行多頭建倉。如果當(dāng)前持倉狀態(tài)為空倉,即MarketPosition=-1時,該函數(shù)首先平掉所有空倉,達(dá)到持平的狀態(tài),然后再按照參數(shù)進行多頭建倉。如果當(dāng)前持倉狀態(tài)為多倉,即MarketPosition=1時,該函數(shù)將繼續(xù)建倉,但具體是否能夠成功建倉要取決于系統(tǒng)中關(guān)于連續(xù)建倉的設(shè)置,以及資金,最大持倉量等限制。示例在MarketPosition=0的情況下:Buy(50,10.2,1)表示用10.2的價格買入50張合約,延遲到下一個Bar發(fā)送委托。Buy(10,Close)表示用當(dāng)前Bar收盤價買入10張合約,馬上發(fā)送委托。BUy(5,0)表示用現(xiàn)價買入5張合約,馬上發(fā)送委托。BUyToCover說明產(chǎn)生一個空頭平倉操作。語法BUyToCover(NUmericShare=0,NUmericPrice=0,BoolDelay=False)參數(shù)Share買入數(shù)量,為整型值,默認(rèn)為平掉當(dāng)前所有持倉;Price買入價格,為浮點數(shù),默認(rèn)=0時為使用現(xiàn)價(非最后Bar為Close);1文檔來源為:從網(wǎng)絡(luò)收集整理.word版本可編輯.Delay買入動作是否延遲,默認(rèn)為當(dāng)前Bar發(fā)送委托,當(dāng)Delay=TrUe,在下一個Bar執(zhí)行。備注產(chǎn)生一個空頭平倉操作,無返回值,該函數(shù)僅支持交易指令。該函數(shù)僅用于空頭平倉,其處理規(guī)則如下:如果當(dāng)前持倉狀態(tài)為持平,即MarketPosition=0時,該函數(shù)不執(zhí)行任何操作。如果當(dāng)前持倉狀態(tài)為多倉,即MarketPosition=1時,該函數(shù)不執(zhí)行任何操作。如果當(dāng)前持倉狀態(tài)為空倉,即MarketPosition=-1時,如果此時Share使用默認(rèn)值,該函數(shù)將平掉所有空倉,達(dá)到持平的狀態(tài),否則只平掉參數(shù)Share的空倉。示例在MarketPosition=-1的情況下:BUyTOCover(50,10.2,1)表示用10.2的價格空頭買入50張合約,延遲到下一個Bar發(fā)送委托。BUyTOCover(10,Close)表示用當(dāng)前Bar收盤價空頭買入10張合約,馬上發(fā)送委托。BUyToCover(5,0)表示用現(xiàn)價空頭買入5張合約),馬上發(fā)送委托。sell說明產(chǎn)生一個多頭平倉操作。(BK)語法Sell(NUmericShare=0,NUmericPrice=0,BoolDelay=False)參數(shù)Share賣出數(shù)量,為整型值,默認(rèn)為平掉當(dāng)前所有持倉;Price賣出價格,為浮點數(shù),默認(rèn)=0時為使用現(xiàn)價(非最后Bar為Close);Delay賣出動作是否延遲,默認(rèn)為當(dāng)前Bar發(fā)送委托,當(dāng)Delay=TrUe,在下一個Bar執(zhí)行。備注產(chǎn)生一個多頭平倉操作,無返回值,該函數(shù)僅支持交易指令。該函數(shù)僅用于多頭平倉,其處理規(guī)則如下:如果當(dāng)前持倉狀態(tài)為持平,即MarketPosition=0時,該函數(shù)不執(zhí)行任何操作。如果當(dāng)前持倉狀態(tài)為空倉,即MarketPosition=-1時,該函數(shù)不執(zhí)行任何操作。如果當(dāng)前持倉狀態(tài)為多倉,即MarketPosition=1時,如果此時Share使用默認(rèn)值,該函數(shù)將平掉所有多倉,達(dá)到持平的狀態(tài),否則只平掉參數(shù)Share的多倉。示例在MarketPosition=0的情況下:Sell(50,10.2,1)表示用10.2的價格賣出50張合約,延遲到下一個Bar發(fā)送委托。Sell(10,Close)表示用當(dāng)前Bar收盤價賣出10張合約,馬上發(fā)送委托。1文檔來源為:從網(wǎng)絡(luò)收集整理.word版本可編輯.Sell(5,0)表示用現(xiàn)價賣出5張合約,馬上發(fā)送委托。sellshort說明產(chǎn)生一個空頭建倉操作。語法SellShort(NumericShare=0,NumericPrice=0,BoolDelay=False)參數(shù)Share賣出數(shù)量,為整型值,默認(rèn)為使用系統(tǒng)設(shè)置參數(shù);Price賣出價格,為浮點數(shù),默認(rèn)=0時為使用現(xiàn)價(非最后Bar為Close);Delay賣出動作是否延遲,默認(rèn)為當(dāng)前Bar發(fā)送委托,當(dāng)Delay=TrUe,在下一個Bar執(zhí)行。備注產(chǎn)生一個空頭建倉操作,無返回值,該函數(shù)僅支持交易指令。該函數(shù)僅用于空頭建倉,其處理規(guī)則如下:如果當(dāng)前持倉狀態(tài)為持平,即MarketPosition=0時,該函數(shù)按照參數(shù)進行空頭建倉。如果當(dāng)前持倉狀態(tài)為多倉,即MarketPosition=1時,該函數(shù)首先平掉所有多倉,達(dá)到持平的狀態(tài),然后再按照參數(shù)進行空頭建倉。如果當(dāng)前持倉狀態(tài)為空倉,即MarketPosition=-1時,該函數(shù)將繼續(xù)建倉,但具體是否能夠成功建倉要取決于系統(tǒng)中關(guān)于連續(xù)建倉的設(shè)置,以及資金,最大持倉量等限制。示例在MarketPosition=0的情況下:SellShort(50,10.2,1)表示用10.2的價格空頭賣出50張合約,延遲到下一個Bar發(fā)送委托。SellShort(10,Close)表示用當(dāng)前Bar收盤價空頭賣出10張合約,馬上發(fā)送委托。SellShort(5,0)表示用現(xiàn)價空頭賣出5張合約,馬上發(fā)送委托。對應(yīng)的BPK,SPK,你清楚了嗎函數(shù)名描述Buy平掉所有空頭持倉,開多頭倉位。(*BPK*)Sell平掉指定的多頭持倉。SellShort平掉所有多頭持倉,開空頭倉位。(*SPK*)BuyToCover平掉指定的空頭持倉。獲得當(dāng)前持倉狀態(tài),太妙了MarketPosition說明獲得當(dāng)前持倉狀態(tài)。語法IntegerMarketPosition()參數(shù)無備注獲得當(dāng)前持倉狀態(tài),返回值為整型,該函數(shù)僅支持交易指令。返回值定義如下:-1當(dāng)前位置為持空倉0當(dāng)前位置為持平1當(dāng)前位置為持多倉示例無內(nèi)建平倉指令--精華之特色內(nèi)建平倉指令除了上節(jié)的Sell和BUyTOCOver可以進行平倉之外,TradeBIaZer公式提供了額外的八種平倉函數(shù),通過合理的應(yīng)用內(nèi)建平倉函數(shù),可以幫助您有效的鎖定風(fēng)險并及時獲利。您可以組合使用內(nèi)建平倉函數(shù),也可以在自己的交易指令中調(diào)用內(nèi)建平倉函數(shù)進行平倉,八個內(nèi)建平倉函數(shù)如下:函數(shù)名描述SetExitOnClose該平倉函數(shù)用來在當(dāng)日收盤后產(chǎn)生一個平倉動作,將當(dāng)前所有的持倉按當(dāng)日收盤價全部平掉。SetBreakEven該平倉函數(shù)在獲利條件滿足的情況下啟動,當(dāng)盈利回落達(dá)到保本時產(chǎn)生平倉動作,平掉指定的倉位。SetStopLoss該平倉函數(shù)在虧損達(dá)到設(shè)定條件時產(chǎn)生平倉動作,平掉指定的倉位。SetProfitTarget該平倉函數(shù)在盈利達(dá)到設(shè)定條件時產(chǎn)生平倉動作,平掉指定的倉位。SetPeriodTrailing該平倉函數(shù)在盈利回落到設(shè)定條件時產(chǎn)生平倉動作,平掉指定的倉位。SetPercentTrailing該平倉函數(shù)在盈利回落到設(shè)定條件時產(chǎn)生平倉動作,平掉指定的倉位。SetDollarTrailing該平倉函數(shù)在盈利回落到設(shè)定條件時產(chǎn)生平倉動作,平掉指定的倉位。SetInactivate該平倉函數(shù)在設(shè)定時間內(nèi)行情一直在某個幅度內(nèi)波動時產(chǎn)生平倉動作,平掉指定的倉位。關(guān)于EXitPOSitiOn上述多個平倉函數(shù)都用到了參數(shù)ExitPosition作為平倉函數(shù)倉位控制的重要參數(shù),有必要對該參數(shù)進行單獨說明。ExitPosition是布爾型參數(shù),當(dāng)ExitPosition=True時,表示將當(dāng)前所有的持倉作為一個整體,根據(jù)其平均建倉成本,計算各平倉函數(shù)的盈虧,當(dāng)條件滿足時,會將所有倉位一起平掉;當(dāng)ExitPosition=False時,表示單獨對每個建倉位置進行平倉,單獨計算各平倉函數(shù)盈虧時,當(dāng)單個建倉位置條件滿足后,平掉該建倉位置即可。觸發(fā)單觸發(fā)單觸發(fā)單是交易開拓者特有的交易方式,觸發(fā)單是指用戶設(shè)置條件,將觸發(fā)單提交到交易開拓者的交易服務(wù)器,當(dāng)設(shè)定條件滿足情況,交易服務(wù)器會自動發(fā)送委托到交易所。觸發(fā)單可以幫助解決用戶盯盤的辛苦,及手動發(fā)單的速度問題。觸發(fā)單分為以下四種類型:吊買、吊賣、追買、追賣。每個觸發(fā)單在發(fā)送時需要輸入以下參數(shù):觸發(fā)價格:觸發(fā)單設(shè)定的條件價格,通過比較現(xiàn)價和觸發(fā)價格確定是否下單。下單之后,該觸發(fā)單會從交易服務(wù)器中刪除;執(zhí)行價格:條件滿足之后,發(fā)送委托的價格,設(shè)定為0可自動獲取當(dāng)時的叫買/賣價;過期時間:設(shè)定觸發(fā)單的過期時間,到這個時間還沒有觸發(fā)的訂單會被設(shè)為過期,不再進行監(jiān)控。吊買吊買是指當(dāng)現(xiàn)價向下跌破觸發(fā)價格,即按執(zhí)行價格產(chǎn)生一個即時買入委托單,如下圖所示:吊賣吊賣是指當(dāng)現(xiàn)價向上突破觸發(fā)價格,即按執(zhí)行價格產(chǎn)生一個即時賣出委托單,如下圖所示:追買追買是指當(dāng)現(xiàn)價向上突破觸發(fā)價格,即按執(zhí)行價格產(chǎn)生一個即時買入委托單,如下圖所示:追賣追賣是指當(dāng)現(xiàn)價向下跌破觸發(fā)價格,即按執(zhí)行價格產(chǎn)生一個即時賣出委托單,如下圖所示:修改或刪除觸發(fā)單當(dāng)存在某個商品的觸發(fā)單,可通過雙擊帳戶管理的觸發(fā)單頁面的項目,打開交易師,進行修1文檔來源為:從網(wǎng)絡(luò)收集整理.word版本可編輯.改或刪除操作。您可以修改數(shù)量、觸發(fā)單類型、觸發(fā)價格、執(zhí)行價格、過期時間及止損獲利等,完成修改之后,點擊[修改]按鈕即可完成修改;您可以直接點擊[刪除]按鈕將該觸發(fā)單刪除。注意:觸發(fā)單在發(fā)送之后將會生效,該委托單在服務(wù)器上運行,此時您關(guān)閉程序或電腦不會影響觸發(fā)單的執(zhí)行。SetPercentTrailing(2000,0.2,True);又是一個寶SetPercentTrailing(2000,0.2,True);當(dāng)前所有持倉盈利在大于2000之后回落,當(dāng)回落百分比達(dá)到20%之后,執(zhí)行所有持倉位置的百分比回落平倉。(此時是計算所有持倉的盈利數(shù))SetPercentTrailing(1000,0.1,False);當(dāng)前持倉的某一個建倉位置的盈利大于1000之后回落,當(dāng)回落百分比達(dá)到10%之后,執(zhí)行該持倉位置的百分比回落平倉。(此時只計算該持倉位置的盈利)SetStopLoss(0,2000,True);當(dāng)前所有持倉虧損達(dá)到2000之后,執(zhí)行所有持倉位置的止損平倉。(此時是計算所有持倉的虧損數(shù))SetStopLoss(1,50,False);當(dāng)前持倉的某一個建倉位置每張合約的虧損達(dá)到50之后,執(zhí)行該持倉位置的止損平倉。(此時只計算該持倉位置的每張合約虧損)SetBreakEven(0,2000,True);當(dāng)前所有持倉的盈利達(dá)到2000之后,啟動所有持倉位置的保本平倉。(此時是計算所有持倉的盈利數(shù))SetBreakEven(1,50,False);當(dāng)前持倉的某一個建倉位置每張合約的盈利達(dá)到50之后,啟動該持倉位置的保本平倉。(此時只計算該持倉位置的每張約的盈利)精華中精華文華所沒有實現(xiàn)復(fù)雜策略工具一循環(huán)語句循環(huán)語句包括兩種表達(dá)方式:For和While。ForFor語句是一個循環(huán)語句,重復(fù)執(zhí)行某項操作,直到循環(huán)結(jié)束。語法如下:For循環(huán)變量=初始值To結(jié)束值{TradeBIaZer公式語句;}循環(huán)變量為在之前已經(jīng)定義的一個數(shù)值型變量,F(xiàn)or循環(huán)的執(zhí)行是從循環(huán)變量從初始值到結(jié)束值,按照步長為1遞增,依次執(zhí)行TradeBIaZer公式語句。結(jié)束值必須大于或等于初始值才有意義,初始值和結(jié)束值可以使用浮點數(shù),但是在執(zhí)行過程中會被直接取整。只計算其整數(shù)部分。TradeBIaZer公式語句是一些語句的組合,如果TradeBIaZer公式語句是單條,您可以省略{},二條或者二條以上的語句必須使用{}。第一次執(zhí)行時,首先將循環(huán)變量賦值為初始值,然后判斷循環(huán)變量是否小于等于結(jié)束值,如果滿足條件,則執(zhí)行TradeBlazer公式語句,同時循環(huán)變量加1。接著重新判斷循環(huán)變量是否小于等于結(jié)束值,一直到條件為False,退出循環(huán)。例如,以下的用戶計算Price最近Length周期的和。ParamsNumericSeriesPrice(1);NumericLength(10);VarsNumericSumValue(0);Numerici;Beginfori=0toLength-1{SumValue=SumValuePrice[i];}ReturnSumValue;End如果希望For語句從大到小進行循環(huán),可以使用以下的語法:For循環(huán)變量=初始值DownTo結(jié)束值{TradeBIaZer公式語句;}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í)行某一項操作。即,只要條件表達(dá)式的值為真(TrUe)時,就重復(fù)執(zhí)行某個動作。直到行情信息改變以致條件為假(FalSe)時,循環(huán)才結(jié)束。語法如下:While(Condition){TradeBlazer公式語句;}Condition是一個邏輯表達(dá)式,當(dāng)Condition為True的時候,TradeBlazer公式語句將會被循環(huán)執(zhí)行,Condition可以是多個條件表達(dá)式的邏輯組合,Condition必須用()括起來。TradeBlazer公式語句是一些語句的組合,如果TradeBlazer公式語句是單條,您可以省略{},二條或者二條以上的語句必須使用{}。例如,以下的公式用來計算要產(chǎn)生大于100000成交量需要最近Bar的個數(shù):VarsNumericSumVolume(0);NumericCounter(0);BeginWhile(SumVolume<100000){SumVolume=SumVolumeVol[Counter]Counter=Counter1;}End首先,我們定義兩個變量SumVolume和Counter,并將其默認(rèn)值設(shè)為0。當(dāng)SumVolume<100000這個表達(dá)式為True時,While內(nèi)的TradeBIaZer公式語句一直被調(diào)用,將前Counter個Bar的Vol力口至USumVolume中,當(dāng)SumVolume大于等于100000時,退出循環(huán)。在使用While循環(huán)的時候,有可能會遇到循環(huán)一直執(zhí)行,永遠(yuǎn)不能退出的情況,這種情況我們稱之為死循環(huán),比如下面的語句;While(True){TradeBlazer公式語句;}在這種情況下,循環(huán)將一直執(zhí)行,導(dǎo)致程序不能繼續(xù)工作,在這種情況,我們可以使用Break來跳出循環(huán),詳細(xì)情況參加下節(jié)。針對上節(jié)的例子,要想從死循環(huán)中跳出,我們可以在循環(huán)之中添加Break語句,如下:While(True){TradeBlazer公式語句;If(Condition)Break;}循環(huán)在每次執(zhí)行后,都將判斷Condition的值,當(dāng)Condition為True時,則執(zhí)行Break語句,跳出整個循環(huán)。Continue有的時候在循環(huán)中,我們可能希望跳過后面的代碼,進入下一次循環(huán),在這種情況下,可以使用Continue語句來達(dá)到目的,如下:While(Condition1){TradeBIaZer公式語句1;If(Condition2)Continue;TradeBlazer公式語句2;}當(dāng)Conditionl滿足時,循環(huán)被執(zhí)行,在執(zhí)行完TradeBlazer公式語句1后,將判斷COndition2的值,當(dāng)Condition2為True,將跳過TradeBlazer公式語句2,重新判斷Conditionl的值,進入下一次循環(huán)。否則將繼續(xù)執(zhí)行TradeBlazer公式語句2。精華中精華文華所沒有實現(xiàn)復(fù)雜策略工具二控制語句TradeBlazer公式支持兩大類的控制語句:條件語句和循環(huán)語句。條件語句條件語句包括以下四類表達(dá)方式:IfIf語句是一個條件語句,當(dāng)特定的條件滿足后執(zhí)行一部分操作。語法如下:If(Condition){TradeBlazer公式語句;}Condition是一個邏輯表達(dá)式,當(dāng)Condition為True的時候,TradeBlaZer公式語句將會被執(zhí)行,Condition可以是多個條件表達(dá)式的邏輯組合,Condition必須用()括起來。TradeBlazer公式語句是一些語句的組合,如果TradeBlazer公式語句是單條,您可以省略{},二條或者二條以上的語句必須使用{}。例如,您可以計算圖表中上升缺口(當(dāng)前Bar的開盤價高于上一個Bar的最高價)出現(xiàn)了多少次,只要在圖表中使用If語句,當(dāng)找到一個滿足條件的Bar時,即條件為真時,變量加1,腳本如下:VarsNumericSeriesCounter(0);BeginIf(Open>High[1]){Counter=Counter[1]1;...}...End在TradeBIaZer公式中,If語句被廣泛使用,如K線型態(tài)和特征走勢,都需要大量的使用If語句,當(dāng)條件滿足的時候,在滿足條件的Bar上面進行標(biāo)記。例如,下面的語句就是特征走勢的例子:If(High>High[1]ANDLow<Low[1]){}If語句在不是用括號的情況,只執(zhí)行下面的第一條語句,如下的語句,Alert不會只在條件為True時執(zhí)行,而是每次都執(zhí)行。If(High>High[1]ANDLow<Low[1])要想Alert只在條件為True時執(zhí)行,您需要按照下面的格式編寫:If(High>High[1]ANDLow<Low[1]){}If-ElseIf-EISe語句是對指定條件進行判斷,如果條件滿足執(zhí)行If后的語句。否則執(zhí)行日Se后面的語句。語法如下:If(Condition){TradeBIaZer公式語句1;}ElSe{TradeBlazer公式語句2;}Condition是一個邏輯表達(dá)式,當(dāng)Condition為True的時候,TradeBlazer公式語句1將會被執(zhí)行;Condition為False時,TradeBlazer公式語句2將會被執(zhí)行。Condition可以是多個條件表達(dá)式的邏輯組合,Condition必須用()括起來。TradeBlazer公式語句是一些語句的組合,如果TradeBlazer公式語句是單條,您可以省略{},二條或者二條以上的語句必須使用{}。例如,比較當(dāng)前Bar和上一個Bar的收盤價,如果Close>Close[1],Value1=Value1Vol;否貝UValue1=Value1-Vol,腳本如下:If(Colse>Close[1])Value1=Value1Vol;ElseValue1=Value1-Vol;If-Else-IfIf-Else-If是在If-Else的基礎(chǔ)上進行擴展,支持條件的多重分支。語法如下:If(Condition1){TradeBIaZer公式語句1;}ElseIf(Condition2){TradeBlazer公式語句2;}Else{TradeBlazer公式語句3;}Conditionl是一個邏輯表達(dá)式,當(dāng)Conditionl為True的時候,TradeBlazer公式語句1將會被執(zhí)行,Conditionl為False時,將會繼續(xù)判斷Condition2的值,當(dāng)Condition2為True時,TradeBlazer公式語句2將會被執(zhí)行。Condition2為False時,TradeBlazer公式語句3將會被執(zhí)行。Condition^Condition2可以是多個條件表達(dá)式的邏輯組合,條件表達(dá)式必須用()括起來。TradeBlazer公式語句是一些語句的組合,如果TradeBlazer公式語句是單條,您可以省略{},二條或者二條以上的語句必須使用{}。If-ElSe-If的語句可以根據(jù)需要一直擴展,在最后的日Se之后再加If(COnditiOn)和新的執(zhí)行代碼即可。當(dāng)然您也可以省略最后的日Se分支,語法如下:If(Condition1){TradeBlazer公式語句1;}ElSeIf(Condition2){TradeBlazer公式語句2;}If-Else的嵌套If-EISe的嵌套是在If-EISe的執(zhí)行語句中包含新的條件語句,即一個條件被包含在另一個條件中。語法如下:If(Condition1){If(Condition2){TradeBIaZer公式語句1;}ElSe{TradeBlazer公式語句2;}}ElSe{If(Condition3){TradeBlazer公式語句3;}ElSe{TradeBlazer公式語句4;}}COndition1是一個邏輯表達(dá)式,當(dāng)COndition1為True的時候,將會繼續(xù)判斷COndition2的值,

當(dāng)Condition2為True時,TradeBIaZer公式語句1將會被執(zhí)行。Condition2為False時,TradeBIaZer

公式語句2將會被執(zhí)行。當(dāng)Condition1為False的時候,將會繼續(xù)判斷Condition3的值,當(dāng)

Condition3為True時,TradeBlazer公式語句3將會被執(zhí)行。COndition3為False時,TradeBlazer

公式語句4將會被執(zhí)行。ConditionLCOndition2,Condition3可以是多個條件表達(dá)式的邏輯

1文檔來源為:從網(wǎng)絡(luò)收集整理.word版本可編輯.組合,條件表達(dá)式必須用()括起來。TradeBIaZer公式語句是一些語句的組合,如果TradeBIaZer公式語句是單條,您可以省略{},二條或者二條以上的語句必須使用{}。例如,在一個交易指令中,條件設(shè)置如下:當(dāng)前行情上漲的時候,如果收盤價高于開盤價時,則產(chǎn)生一個以收盤價買入1張合約;否則產(chǎn)生一個以開盤價買入1張合約。當(dāng)前行情沒有上漲的時候,如果收盤價高于開盤價,則產(chǎn)生一個以收盤價賣出1張合約;否則產(chǎn)生一個以開盤價賣出1張合約。腳本如下:If(Open>High[1]){If(Close>Open){Buy(1,Open);}Else{Buy(1,Close);}}Else{If(Close>Open){Sell(1,Open);}Else{Sell(1,Close);}}接平倉東東SetDollarTrailing(2000,True);當(dāng)前所有持倉盈利在回落達(dá)到2000之后,執(zhí)行所有持倉位置的價值回落平倉。(此時是計算所有持倉的盈利數(shù))SetDollarTrailing(1000,False);當(dāng)前持倉的某一個建倉位置的盈利在回落達(dá)到1000之后,執(zhí)行該持倉位置的價值回落平倉。(此時只計算該持倉位置的盈利)說明當(dāng)日收盤全部平倉。語法SetExitOnClose()參數(shù)無備注當(dāng)日收盤全部平倉,無返回值,該函數(shù)僅支持交易指令。在當(dāng)日收盤之后以收盤價全部平倉,將持倉狀態(tài)變?yōu)槌制?,該函?shù)僅用于歷史數(shù)據(jù)測試,在小于1日線的周期情況下,該操作在建倉日期的最后一個Bar上執(zhí)行,在1日線及以上的周期中,該操作以建倉Bar的收盤價在同一Bar內(nèi)執(zhí)行。在自動交易中因為收盤之后不一定能夠保證成功發(fā)送委托,所以該函數(shù)延遲到第二天的開盤發(fā)送。PositionProfit說明獲得當(dāng)前持倉位置的浮動盈虧。語法NumericPositionProfit()參數(shù)無備注獲得當(dāng)前持倉位置的浮動盈虧,已考慮交易費用,返回值為浮點數(shù),該函數(shù)僅支持交易指令。只有當(dāng)MarketPosition!=0時,即有持倉的狀況下,該函數(shù)才有意義,否則返回0。當(dāng)前持倉的平均建倉價格說明獲得當(dāng)前持倉的平均建倉價格。語法NumericAvgEntryPrice()參數(shù)無備注獲得當(dāng)前持倉的平均建倉價格,返回值為浮點數(shù),該函數(shù)僅支持交易指令。示例無當(dāng)前持倉位置的每手浮動盈虧ContractProfit說明獲得當(dāng)前持倉位置的每手浮動盈虧。語法NumericContractProfit()參數(shù)無備注獲得當(dāng)前持倉位置的每手浮動盈虧,已考慮交易費用,返回值為浮點數(shù),該函數(shù)僅支持交易指令。只有當(dāng)MarketPosition!=0時,即有持倉的狀況下,該函數(shù)才有意義,否則返回0。獲得當(dāng)前的可用資金CurrentCapital說明獲得當(dāng)前的可用資金。語法NumericCurrentCapital()參數(shù)無備注獲得當(dāng)前的可用資金,已考慮交易費用,返回值為浮點數(shù),該函數(shù)僅支持交易指令。根據(jù)參數(shù)進行獲利平倉操作SetProfitTarget(0,2000,True);當(dāng)前所有持倉盈利達(dá)到2000之后,執(zhí)行所有持倉位置的獲利平倉。(此時是計算所有持倉的盈利數(shù))SetProfitTarget(1,50,False);當(dāng)前持倉的某一個建倉位置每張合約的盈利達(dá)到50之后,執(zhí)行該持倉位置的獲利平倉。(此時只計算該持倉位置的每張合約盈利)第一課:實例之戰(zhàn)一個文華交易系統(tǒng)的移植例子多空趨勢-交易系統(tǒng)之文華的公式腳本:[Copytoclipboard][-]CODE:MA1:=EMA(CLOSE,16);MA2:=EMA(CLOSE,35),COLORYELLOW;MA3:=EMA(CLOSE,60);MA4:=REF(HIGH,1);LOWV:=LLV(LOW,9);HIGHV:=HHV(HIGH,9);RSV:=EMA((CLOSE-LOWV)/(HIGHV-LOWV)*100,3);K:=EMA(RSV,3);D:=MA(K,3);MV5:=MA(VOL,5);KK:=REF(K,1);PP:=REF(LOW,1);VAR3:=(2*CLOSEHIGHLOW)/4;VAR4:=LLV(LOW,33);VAR5:=HHV(HIGH,33);ZL:=EMA((VAR3-VAR4)/(VAR5-VAR4)*100,17);SH:=EMA(0.667*REF(ZL,1)0.333*ZL,2);LC:=REF(CLOSE,1);RSI:=SMA(MAX(CLOSE-LC,0),6,1)/SMA(ABS(CLOSE-LC),6,1)*100;CROSS(CLOSE,MA1)&&(K>D)&&(ZL>SH)||CROSS(MA1,MA2)&&(ZL>SH)&&(VOL>1.25*MV5)&&(K>D)||CROSS(K,D)&&(CLOSE>MA1)&&(ZL>SH)||CROSS(RSI,70),BK;CROSS(PP,CLOSE)&&(D>K)&&(SH>ZL)||CROSS(D,K)&&(CLOSE<MA1)&&(MA1<MA2)||CROSS(KK,K)&&(SH>ZL),SK;CROSS(D,K)||(CLOSE<MA1*1.001),SP;CROSS(K,D)||(CLOSE>MA1*1.001),BP;TradeBIaZer公式代碼:[Copytoclipboard][-]CODE:// //簡稱:Test//名稱:多空趨勢交易系統(tǒng)1文檔來源為:從網(wǎng)絡(luò)收集整理.word版本可編輯.//類別:交易指令//類型:其他//輸出:// ParamsNumericLength1(16);NumericLength2(35);NumericLength3(9);NumericLots(1);VarsNumericSeriesValue1;NumericSeriesValue2;NumericLowestValue;NumericSeriesValue5;NumericSeriesRSV;NumericSeriesKValue;NumericSeriesDValue;NumericAvgVol5;NumericSeriesCloseTmp1;NumericSeriesCloseTmp2;NumericSeriesRSIValue;NumericSeriesPreLow;NumericSeriesPreKValue;NumericLowest33Value;NumericSeriesVarTmp1;NumericSeriesVarTmp2;NumericSeriesZL;NumericSH;BeginValue1=XAverage(Close,Length1);Value2=XAverage(Close,Length2);//取兩條均線的值LowestValue=Lowest(Low,Length3);//取最低值Value5=(CLOSE-LowestValue)/(Highest(High,Length3)-LowestValue)*100;RSV=XAverage(Value5,3);KValue=XAverage(RSV,3);DValue=Average(KValue,3);PreKValue=KValue[1];PreLow=Low[1];AvgVol5=Average(Vol,5);Lowest33Value=Lowest(Low,33);VarTmp1=((2*CLOSEHIGHLOW)/4-Lowest33Value)/(Highest(High,33)-Lowest33Value)*100;ZL=XAverage(VarTmp1,17);VarTmp2=0.667*ZL[1]0.333*ZL;SH=XAverage(VarTmp2,2);CloseTmp1=Max(Close-Close[1],0);CloseTmp2=Abs(Close-Close[1]);RSIValue=WAverage(CloseTmp1,6)/WAverage(CloseTmp2,6)*100;//以上為KD部分只要如何換書寫方式就可了,,higest==hhvIowest==IlvXAverager=ma1文檔來源為:從網(wǎng)絡(luò)收集整理.word版本可編輯.//BUy什么時做買入動作,條件If((CrossOver(Close,Value1)&&(KValue>DValue)&&(ZL>SH))Or(CrossOver(ValUe1,ValUe2)&&(ZL>SH)&&(Vol>1.25*AvgVol5)&&(KValUe>DValUe))Or(CrossOver(KValUe,DValUe)&&(Close>ValUe1)&&(ZL>SH))Or(CrOSSOver(RSIValue,70)))//條件{BUy(LotS,CloSe);}//SellShort什么作賣出動作If((CroSSOver(PreLow,CloSe)&&(KValUe>DValUe)&&(SH>ZL))Or(CroSSOver(DValUe,KValUe)&&(CloSe<ValUe1)&&(ValUe1<ValUe2))Or(CrOSSOver(PreKValue,KValue)&&(SH>ZL)))//條件{SellShort(LotS,CloSe);}//Sell什么做多平動作If(CroSSOver(DValUe,KValUe)||CloSe<ValUe1*1.001)//條件{Sell;}//BuyToCover什么進個做空平動作If(CroSSOver(KValUe,DValUe)||CloSe>ValUe1*1.001)//條件{BuyToCover;}End// //編譯版本//用戶版本2007-06-2510:37//版權(quán)所有TradeBlazer//更改聲明TradeBIaZerSoftware保留對TradeBIaZer平臺//每一版本的TrabeBlaZer公式修改和重寫的權(quán)利// 第二課:交易思想是靈魂要是打算根據(jù)3日的高低價平倉呢?想法如下想實現(xiàn)這樣一個一個想法:價格突破5天最高價,開多倉,把當(dāng)天和前一天的K線做比較,取兩日的最低價格做為止損,當(dāng)價格突破3日最低價時,平多倉。價格突破5日最低價,開空倉,把今天和...你看看哦,代碼大致如此:ParamsvarsNumericSeriesEntryHi;NumericSeriesEntryLo;NumericSeriesShortStop;NumericSeriesLongStop;NumericSeriesSellHi;NumericSeriesSellLo;NumericmyEntryPrice;NumericmyExitPrice;begin//入場點,開多和開空點,突破5天最高或最低EntryHi=Highest(high[1],5);EntryLo=Lowest(low[1],5);//離場點,止盈點,三天較高或較低SellHi=Highest(high[1],3);SellLo=Lowest(low[1],3);//止損點,兩天較高或較低ShortStop=Highest(high[1],2);LongStop=Lowest(low[1],2);if(MarketPosition==0){If(CrossOver(high,EntryHi)){myEntryPrice=min(high,EntryHi);myEntryPrice=IIF(myEntryPrice<Open,Open,myEntryPrice);Buy(0,myEntryPrice);}If(CrossUnder(Low,EntryLo)){myEntryPrice=max(low,EntryLo);myEntryPrice=IIF(myEntryPrice>Open,Open,myEntryPrice);SellShort(0,myEntryPrice);}}If(MarketPosition==1){if(CrossUnder(Low,LongStop)){myExitPrice=max(low,LongStop);myExitPrice=IIF(myExitPrice>Open,Open,myExitPrice);Sell(0,myExitPrice);}Elseif(CrossUnder(Low,SellLo)){myExitPrice=max(low,SellLo);myExitPrice=IIF(myExitPrice>Open,Open,myExitPrice);Sell(0,myExitPrice);}}If(MarketPosition==-1){if(CrossOver(high,ShortStop)){myExitPrice=min(high,ShortStop);myExitPrice=IIF(myExitPrice<Open,Open,myExitPrice);BuyToCover(0,myExitPrice);}Elseif(CrossOver(high,SellHi)){myExitPrice=min(high,SellHi);myExitPrice=IIF(myExitPrice<Open,Open,myExitPrice);BuyToCover(0,myExitPrice);}}end第三課:雙均線策略//以下為均線交易系統(tǒng),5日均線上穿20均線為買入,5日均線下穿20均線為買出Params//宣告參數(shù)定義NumericLength1(5);//5日均線的參數(shù)值NumericLength2(20);//20日均線的參數(shù)值NumericLots(1);//默認(rèn)的交易數(shù)量,您可以通過公式計算來產(chǎn)生Vars//宣告變量定義NUmeriCSerieSMA1;//中間變量,用來保存5日均線的值,因為CrOSSOver的輸入?yún)?shù)需要序列變量,因此定義為序列變量NumericSeriesMA2;//中間變量,用來保存20日均線的值,因為CrossOver的輸入?yún)?shù)需要序列變量,因此定義為序列變量Begin//宣告公式正文開始MA1=AverageFC(Close,Length1);//求出5日均線值,并將值賦給MA1MA2=AverageFC(Close,Length2);//求出20日均線值,并將值賦給MA2If(CrossOver(MA1,MA2))//當(dāng)出現(xiàn)5日均線上穿20均線時買入{Buy(LotsQose);//用當(dāng)前Bar的收盤價買入,詳細(xì)的BUy函數(shù)調(diào)用請參見幫助文件}If(CrossUnder(MA1,MA2))//當(dāng)出現(xiàn)5日均線下穿20均線時賣出{Sell;//Sell不用參數(shù)時會自動平掉所有倉位,詳細(xì)的Sell函數(shù)調(diào)用請參見幫助文件1文檔來源為:從網(wǎng)絡(luò)收集整理.word版本可編輯.}End//宣告公式正文結(jié)束問題集中一下,雙策略收盤價格突破5天均線,開倉,跌破5天線平倉;收盤價格突破25天均線,開倉,跌破25天線平倉;各平各的倉,不可亂平.是這樣解決如果您希望兩個交易指令不相互平倉,那直接開兩個圖表分別執(zhí)行交易指令就可以啦!你舉例的交易指令除了參數(shù)還都是一樣的。所以只需要更改兩個圖表中交易指令的參數(shù)就可以解決了。操作步驟如下:1、新建一個交易指令,假定命名為Demo:[Copytoclipboard][-]CODE:Params//宣告參數(shù)定義NumericLength(5);//均線的參數(shù)值NumericLots(1);//默認(rèn)的交易數(shù)量,您可以通過公式計算來產(chǎn)生Vars//宣告變量定義NUmeriCSerieSMA1;//中間變量,用來保存均線的值,因為CrOSSOver的輸入?yún)?shù)需要序列變量,因此定義為序列變量Begin//宣告公式正文開始MA1=AverageFC(Close7Length);//求出均線值,并將值賦給MA1If(CroSSOver(CloSe,MA1))//當(dāng)出現(xiàn)收盤價上穿均線時買入{Buy(LotsQose);//用當(dāng)前Bar的收盤價買入,詳細(xì)的BUy函數(shù)調(diào)用請參見幫助文件}{Sell;//Sell不用參數(shù)時會自動平掉所有倉位,詳細(xì)的Sell函數(shù)調(diào)用請參見幫助文件}End//宣告公式正文結(jié)束2、編譯

溫馨提示

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

評論

0/150

提交評論