




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、交易開拓者代碼學習各種買賣指令及實例 (TB)(轉)2012年07月27日 22:35原文地址:交易開拓者代碼學習各種買賣指令及實例 (TB)(轉)作者:竹本無青各種買賣指令Buy說明 產生一個多頭建倉操作。 語法 Buy(Numeric Share=0,Numeric Price=0,Bool Delay=False)參數 Share 買入數量,為整型值,默認為使用系統設置參數;Price 買入價格,為浮點數,默認=0時為使用現價(非最后Bar為Close);Delay 買入動作是否延遲,默認為當前Bar發送委托,當Delay=True,在下一個Bar執行。 備注 產生一個多頭建倉操作,無返
2、回值,該函數僅支持交易指令。該函數僅用于多頭建倉,其處理規則如下:如果當前持倉狀態為持平,即MarketPosition = 0 時,該函數按照參數進行多頭建倉。如果當前持倉狀態為空倉,即MarketPosition = -1 時,該函數首先平掉所有空倉,達到持平的狀態,然后再按照參數進行多頭建倉。如果當前持倉狀態為多倉,即MarketPosition = 1 時,該函數將繼續建倉,但具體是否能夠成功建倉要取決于系統中關于連續建倉的設置,以及資金,最大持倉量等限制。 示例 在MarketPosition=0的情況下:Buy(50,10.2,1) 表示用10.2的價格買入50張合約,延遲到下一個
3、Bar發送委托。Buy(10,Close) 表示用當前Bar收盤價買入10張合約,馬上發送委托。Buy(5,0) 表示用現價買入5張合約,馬上發送委托。 BuyToCover說明 產生一個空頭平倉操作。 語法 BuyToCover(Numeric Share=0,Numeric Price=0,Bool Delay=False)參數 Share 買入數量,為整型值,默認為平掉當前所有持倉;Price 買入價格,為浮點數,默認=0時為使用現價(非最后Bar為Close);Delay 買入動作是否延遲,默認為當前Bar發送委托,當Delay=True,在下一個Bar執行。 備注 產生一個空頭平倉操
4、作,無返回值,該函數僅支持交易指令。該函數僅用于空頭平倉,其處理規則如下:如果當前持倉狀態為持平,即MarketPosition = 0 時,該函數不執行任何操作。如果當前持倉狀態為多倉,即MarketPosition = 1 時,該函數不執行任何操作。如果當前持倉狀態為空倉,即MarketPosition = -1 時,如果此時Share使用默認值,該函數將平掉所有空倉,達到持平的狀態,否則只平掉參數Share的空倉。 示例 在MarketPosition = -1的情況下:BuyToCover(50,10.2,1) 表示用10.2的價格空頭買入50張合約,延遲到下一個Bar發送委托。Buy
5、ToCover(10,Close) 表示用當前Bar收盤價空頭買入10張合約,馬上發送委托。BuyToCover(5,0) 表示用現價空頭買入5張合約),馬上發送委托。 sell說明 產生一個多頭平倉操作。 (BK)語法 Sell(Numeric Share=0,Numeric Price=0,Bool Delay=False)參數 Share 賣出數量,為整型值,默認為平掉當前所有持倉;Price 賣出價格,為浮點數,默認=0時為使用現價(非最后Bar為Close);Delay 賣出動作是否延遲,默認為當前Bar發送委托,當Delay=True,在下一個Bar執行。 備注 產生一個多頭平倉操
6、作,無返回值,該函數僅支持交易指令。該函數僅用于多頭平倉,其處理規則如下:如果當前持倉狀態為持平,即MarketPosition = 0 時,該函數不執行任何操作。如果當前持倉狀態為空倉,即MarketPosition = -1 時,該函數不執行任何操作。如果當前持倉狀態為多倉,即MarketPosition = 1 時,如果此時Share使用默認值,該函數將平掉所有多倉,達到持平的狀態,否則只平掉參數Share的多倉。 示例 在MarketPosition=0的情況下:Sell(50,10.2,1) 表示用10.2的價格賣出50張合約,延遲到下一個Bar發送委托。Sell(10,Close)
7、 表示用當前Bar收盤價賣出10張合約,馬上發送委托。Sell(5,0) 表示用現價賣出5張合約,馬上發送委托。 sellshort說明 產生一個空頭建倉操作。 語法 SellShort(Numeric Share=0,Numeric Price=0,Bool Delay=False)參數 Share 賣出數量,為整型值,默認為使用系統設置參數;Price 賣出價格,為浮點數,默認=0時為使用現價(非最后Bar為Close);Delay 賣出動作是否延遲,默認為當前Bar發送委托,當Delay=True,在下一個Bar執行。 備注 產生一個空頭建倉操作,無返回值,該函數僅支持交易指令。該函數僅
8、用于空頭建倉,其處理規則如下:如果當前持倉狀態為持平,即MarketPosition = 0 時,該函數按照參數進行空頭建倉。如果當前持倉狀態為多倉,即MarketPosition = 1 時,該函數首先平掉所有多倉,達到持平的狀態,然后再按照參數進行空頭建倉。如果當前持倉狀態為空倉,即MarketPosition = -1 時,該函數將繼續建倉,但具體是否能夠成功建倉要取決于系統中關于連續建倉的設置,以及資金,最大持倉量等限制。 示例 在MarketPosition=0的情況下:SellShort(50,10.2,1) 表示用10.2的價格空頭賣出50張合約,延遲到下一個Bar發送委托。Se
9、llShort(10,Close) 表示用當前Bar收盤價空頭賣出10張合約,馬上發送委托。SellShort(5,0) 表示用現價空頭賣出5張合約,馬上發送委托。對應的BPK,SPK,你清楚了嗎函數名 描述 Buy 平掉所有空頭持倉,開多頭倉位。(*BPK*)Sell 平掉指定的多頭持倉。 SellShort 平掉所有多頭持倉,開空頭倉位。 (*SPK*)BuyToCover 平掉指定的空頭持倉。 獲得當前持倉狀態,太妙了MarketPosition說明 獲得當前持倉狀態。 語法 Integer MarketPosition()參數 無 備注 獲得當前持倉狀態,返回值為整型,該函數僅支持交易
10、指令。返回值定義如下:-1 當前位置為持空倉0 當前位置為持平1 當前位置為持多倉 示例 無內建平倉指令-精華之特色內建平倉指令除了上節的Sell和BuyToCover可以進行平倉之外,TradeBlazer公式提供了額外的八種平倉函數,通過合理的應用內建平倉函數,可以幫助您有效的鎖定風險并及時獲利。您可以組合使用內建平倉函數,也可以在自己的交易指令中調用內建平倉函數進行平倉,八個內建平倉函數如下:函數名 描述 SetExitOnClose 該平倉函數用來在當日收盤后產生一個平倉動作,將當前所有的持倉按當日收盤價全部平掉。 SetBreakEven 該平倉函數在獲利條件滿足的情況下啟動,當盈利
11、回落達到保本時產生平倉動作,平掉指定的倉位。 SetStopLoss 該平倉函數在虧損達到設定條件時產生平倉動作,平掉指定的倉位。 SetProfitTarget 該平倉函數在盈利達到設定條件時產生平倉動作,平掉指定的倉位。 SetPeriodTrailing 該平倉函數在盈利回落到設定條件時產生平倉動作,平掉指定的倉位。 SetPercentTrailing 該平倉函數在盈利回落到設定條件時產生平倉動作,平掉指定的倉位。 SetDollarTrailing 該平倉函數在盈利回落到設定條件時產生平倉動作,平掉指定的倉位。 SetInactivate 該平倉函數在設定時間內行情一直在某個幅度內波
12、動時產生平倉動作,平掉指定的倉位。 關于ExitPosition上述多個平倉函數都用到了參數ExitPosition,作為平倉函數倉位控制的重要參數,有必要對該參數進行單獨說明。ExitPosition是布爾型參數,當ExitPosition=True時,表示將當前所有的持倉作為一個整體,根據其平均建倉成本,計算各平倉函數的盈虧,當條件滿足時,會將所有倉位一起平掉;當ExitPosition=False時,表示單獨對每個建倉位置進行平倉,單獨計算各平倉函數盈虧時,當單個建倉位置條件滿足后,平掉該建倉位置即可。觸發單觸發單觸發單是交易開拓者特有的交易方式,觸發單是指用戶設置條件,將觸發單提交到交
13、易開拓者的交易服務器,當設定條件滿足情況,交易服務器會自動發送委托到交易所。觸發單可以幫助解決用戶盯盤的辛苦,及手動發單的速度問題。觸發單分為以下四種類型:吊買、吊賣、追買、追賣。每個觸發單在發送時需要輸入以下參數:觸發價格:觸發單設定的條件價格,通過比較現價和觸發價格確定是否下單。下單之后,該觸發單會從交易服務器中刪除;執行價格:條件滿足之后,發送委托的價格,設定為0可自動獲取當時的叫買/賣價;過期時間:設定觸發單的過期時間,到這個時間還沒有觸發的訂單會被設為過期,不再進行監控。吊買吊買是指當現價向下跌破觸發價格,即按執行價格產生一個即時買入委托單,如下圖所示:吊賣吊賣是指當現價向上突破觸發
14、價格,即按執行價格產生一個即時賣出委托單,如下圖所示:追買追買是指當現價向上突破觸發價格,即按執行價格產生一個即時買入委托單,如下圖所示:追賣追賣是指當現價向下跌破觸發價格,即按執行價格產生一個即時賣出委托單,如下圖所示:修改或刪除觸發單當存在某個商品的觸發單,可通過雙擊帳戶管理的觸發單頁面的項目,打開交易師,進行修改或刪除操作。您可以修改數量、觸發單類型、觸發價格、執行價格、過期時間及止損獲利等,完成修改之后,點擊修改按鈕即可完成修改;您可以直接點擊刪除按鈕將該觸發單刪除。注意: 觸發單在發送之后將會生效,該委托單在服務器上運行,此時您關閉程序或電腦不會影響觸發單的執行。 SetPercen
15、tTrailing(2000,0.2,True); 又是一個寶SetPercentTrailing(2000,0.2,True); 當前所有持倉盈利在大于2000之后回落,當回落百分比達到20%之后,執行所有持倉位置的百分比回落平倉。(此時是計算所有持倉的盈利數)SetPercentTrailing(1000,0.1,False); 當前持倉的某一個建倉位置的盈利大于1000之后回落,當回落百分比達到10%之后,執行該持倉位置的百分比回落平倉。(此時只計算該持倉位置的盈利) SetStopLoss(0,2000,True); 當前所有持倉虧損達到2000之后,執行所有持倉位置的止損平倉。(此時
16、是計算所有持倉的虧損數)SetStopLoss(1,50, False); 當前持倉的某一個建倉位置每張合約的虧損達到50之后,執行該持倉位置的止損平倉。(此時只計算該持倉位置的每張合約虧損)SetBreakEven(0,2000,True); 當前所有持倉的盈利達到2000之后,啟動所有持倉位置的保本平倉。(此時是計算所有持倉的盈利數)SetBreakEven(1,50, False); 當前持倉的某一個建倉位置每張合約的盈利達到50之后,啟動該持倉位置的保本平倉。(此時只計算該持倉位置的每張約的盈利) 精華中精華文華所沒有實現復雜策略工具一循環語句循環語句包括兩種表達方式:For和Whil
17、e。ForFor語句是一個循環語句,重復執行某項操作,直到循環結束。語法如下:For 循環變量 = 初始值 To 結束值TradeBlazer公式語句;循環變量為在之前已經定義的一個數值型變量,For循環的執行是從循環變量從初始值到結束值,按照步長為1遞增,依次執行TradeBlazer公式語句。結束值必須大于或等于初始值才有意義,初始值和結束值可以使用浮點數,但是在執行過程中會被直接取整。只計算其整數部分。TradeBlazer公式語句是一些語句的組合,如果TradeBlazer公式語句是單條,您可以省略,二條或者二條以上的語句必須使用。第一次執行時,首先將循環變量賦值為初始值,然后判斷循環
18、變量是否小于等于結束值,如果滿足條件,則執行TradeBlazer公式語句,同時循環變量加1。接著重新判斷循環變量是否小于等于結束值,一直到條件為False,退出循環。例如,以下的用戶計算Price最近Length周期的和。ParamsNumericSeries Price(1);Numeric Length(10);VarsNumeric SumValue(0);Numeric i;Beginfor i = 0 to Length - 1SumValue = SumValue Price i ;Return SumValue;End如果希望For語句從大到小進行循環,可以使用以下的語法:Fo
19、r 循環變量 = 初始值 DownTo 結束值TradeBlazer公式語句;For-DownTo讓循環變量從結束值每次遞減1直到等于結束值,依次調用TradeBlazer公式語句執行,初始值必須大于或等于結束值才有意義。For語句是比較常用的一種循環控制語句,它應用于知道循環次數的地方,很多內建用戶函數中都使用For語句來完成相應的功能,比如Summation,Highest,Lowest,LinearReg等。WhileWhile語句在條件為真的時候重復執行某一項操作。即,只要條件表達式的值為真(True)時,就重復執行某個動作。直到行情信息改變以致條件為假(False)時,循環才結束。語
20、法如下:While (Condition)TradeBlazer公式語句;Condition是一個邏輯表達式,當Condition為True的時候,TradeBlazer公式語句將會被循環執行,Condition可以是多個條件表達式的邏輯組合,Condition必須用()括起來。TradeBlazer公式語句是一些語句的組合,如果TradeBlazer公式語句是單條,您可以省略,二條或者二條以上的語句必須使用。例如,以下的公式用來計算要產生大于100000成交量需要最近Bar的個數:VarsNumeric SumVolume(0);Numeric Counter (0);BeginWhile
21、(SumVolume < 100000)SumVolume = SumVolume VolCounterCounter = Counter 1;End首先,我們定義兩個變量SumVolume和Counter,并將其默認值設為0。當SumVolume <100000這個表達式為True時,While內的TradeBlazer公式語句一直被調用,將前Counter個Bar的Vol加到SumVolume中,當SumVolume大于等于100000時,退出循環。在使用While循環的時候,有可能會遇到循環一直執行,永遠不能退出的情況,這種情況我們稱之為死循環,比如下面的語句;While (
22、True)TradeBlazer公式語句;在這種情況下,循環將一直執行,導致程序不能繼續工作,在這種情況,我們可以使用Break來跳出循環,詳細情況參加下節。針對上節的例子,要想從死循環中跳出,我們可以在循環之中添加Break語句,如下:While (True)TradeBlazer公式語句;If (Condition)Break;循環在每次執行后,都將判斷Condition的值,當Condition為True時,則執行Break語句,跳出整個循環。Continue有的時候在循環中,我們可能希望跳過后面的代碼,進入下一次循環,在這種情況下,可以使用Continue語句來達到目的,如下:Whil
23、e (Condition1)TradeBlazer公式語句1;If (Condition2)Continue;TradeBlazer公式語句2;當Condition1滿足時,循環被執行,在執行完TradeBlazer公式語句1后,將判斷Condition2的值,當Condition2為True,將跳過TradeBlazer公式語句2,重新判斷Condition1的值,進入下一次循環。否則將繼續執行TradeBlazer公式語句2。 精華中精華文華所沒有實現復雜策略工具二控制語句TradeBlazer公式支持兩大類的控制語句:條件語句和循環語句。條件語句條件語句包括以下四類表達方式:IfIf語句
24、是一個條件語句,當特定的條件滿足后執行一部分操作。語法如下:If (Condition)TradeBlazer公式語句;Condition是一個邏輯表達式,當Condition為True的時候,TradeBlazer公式語句將會被執行,Condition可以是多個條件表達式的邏輯組合,Condition必須用()括起來。TradeBlazer公式語句是一些語句的組合,如果TradeBlazer公式語句是單條,您可以省略,二條或者二條以上的語句必須使用。例如,您可以計算圖表中上升缺口(當前Bar的開盤價高于上一個Bar的最高價)出現了多少次,只要在圖表中使用If語句,當找到一個滿足條件的Bar時
25、,即條件為真時,變量加1,腳本如下:VarsNumericSeries Counter(0);BeginIf ( Open > High1)Counter = Counter1 1;.End在TradeBlazer公式中,If語句被廣泛使用,如K線型態和特征走勢,都需要大量的使用If語句,當條件滿足的時候,在滿足條件的Bar上面進行標記。例如,下面的語句就是特征走勢的例子:If(High > High1 AND Low < Low1)PlotNumeric(High,"Outside Bar");If語句在不是用括號的情況,只執行下面的第一條語句,如下的語
26、句,Alert不會只在條件為True時執行,而是每次都執行。If(High > High1 AND Low < Low1)PlotNumeric(High,"Outside Bar");Alert("Outside Bar");要想Alert只在條件為True時執行,您需要按照下面的格式編寫:If(High > High1 AND Low < Low1)PlotNumeric(High,"Outside Bar");Alert("Outside Bar");If-ElseIf-Else語句是
27、對指定條件進行判斷,如果條件滿足執行If后的語句。否則執行Else后面的語句。語法如下:If (Condition)TradeBlazer公式語句1;ElseTradeBlazer公式語句2;Condition是一個邏輯表達式,當Condition為True的時候,TradeBlazer公式語句1將會被執行;Condition為False時,TradeBlazer公式語句2將會被執行。Condition可以是多個條件表達式的邏輯組合,Condition必須用()括起來。TradeBlazer公式語句是一些語句的組合,如果TradeBlazer公式語句是單條,您可以省略,二條或者二條以上的語句必
28、須使用。例如,比較當前Bar和上一個Bar的收盤價,如果Close > Close1,Value1 = Value1 Vol;否則Value1 = Value1 - Vol,腳本如下:If (Colse > Close1)Value1 = Value1 Vol;ElseValue1 = Value1 - Vol;If-Else-IfIf-Else-If是在If-Else的基礎上進行擴展,支持條件的多重分支。語法如下:If (Condition1)TradeBlazer公式語句1;Else If(Condition2)TradeBlazer公式語句2;ElseTradeBlazer公
29、式語句3;Condition1是一個邏輯表達式,當Condition1為True的時候,TradeBlazer公式語句1將會被執行,Condition1為False時,將會繼續判斷Condition2的值,當Condition2為True時,TradeBlazer公式語句2將會被執行。Condition2為False時,TradeBlazer公式語句3將會被執行。Condition1,Condition2可以是多個條件表達式的邏輯組合,條件表達式必須用()括起來。TradeBlazer公式語句是一些語句的組合,如果TradeBlazer公式語句是單條,您可以省略,二條或者二條以上的語句必須使用
30、。If-Else-If的語句可以根據需要一直擴展,在最后的Else之后再加If(Condition)和新的執行代碼即可。當然您也可以省略最后的Else分支,語法如下:If (Condition1)TradeBlazer公式語句1;Else If(Condition2)TradeBlazer公式語句2;If-Else的嵌套If-Else的嵌套是在If-Else的執行語句中包含新的條件語句,即一個條件被包含在另一個條件中。語法如下:If (Condition1)If (Condition2)TradeBlazer公式語句1;ElseTradeBlazer公式語句2;ElseIf (Conditio
31、n3)TradeBlazer公式語句3;ElseTradeBlazer公式語句4;Condition1是一個邏輯表達式,當Condition1為True的時候,將會繼續判斷Condition2的值,當Condition2為True時,TradeBlazer公式語句1將會被執行。Condition2為False時,TradeBlazer公式語句2將會被執行。當Condition1為False的時候,將會繼續判斷Condition3的值,當Condition3為True時,TradeBlazer公式語句3將會被執行。Condition3為False時,TradeBlazer公式語句4將會被執行。C
32、ondition1,Condition2,Condition3可以是多個條件表達式的邏輯組合,條件表達式必須用()括起來。TradeBlazer公式語句是一些語句的組合,如果TradeBlazer公式語句是單條,您可以省略,二條或者二條以上的語句必須使用。例如,在一個交易指令中,條件設置如下:當前行情上漲的時候,如果收盤價高于開盤價時,則產生一個以收盤價買入1張合約;否則產生一個以開盤價買入1張合約。當前行情沒有上漲的時候,如果收盤價高于開盤價,則產生一個以收盤價賣出1張合約;否則產生一個以開盤價賣出1張合約。腳本如下:If (Open > High1)If (Close>Open
33、)Buy(1,Open);ElseBuy(1,Close);ElseIf (Close > Open)Sell(1,Open);ElseSell (1,Close); 接平倉東東SetDollarTrailing (2000,True); 當前所有持倉盈利在回落達到2000之后,執行所有持倉位置的價值回落平倉。(此時是計算所有持倉的盈利數)SetDollarTrailing (1000,False); 當前持倉的某一個建倉位置的盈利在回落達到1000之后,執行該持倉位置的價值回落平倉。(此時只計算該持倉位置的盈利) 說明 當日收盤全部平倉。 語法 SetExitOnClose()參數 無
34、 備注 當日收盤全部平倉,無返回值,該函數僅支持交易指令。在當日收盤之后以收盤價全部平倉,將持倉狀態變為持平,該函數僅用于歷史數據測試,在小于1日線的周期情況下,該操作在建倉日期的最后一個Bar上執行,在1日線及以上的周期中,該操作以建倉Bar的收盤價在同一Bar內執行。在自動交易中因為收盤之后不一定能夠保證成功發送委托,所以該函數延遲到第二天的開盤發送。PositionProfit說明 獲得當前持倉位置的浮動盈虧。 語法 Numeric PositionProfit()參數 無 備注 獲得當前持倉位置的浮動盈虧,已考慮交易費用,返回值為浮點數,該函數僅支持交易指令。只有當MarketPosi
35、tion != 0時,即有持倉的狀況下,該函數才有意義,否則返回0。當前持倉的平均建倉價格說明 獲得當前持倉的平均建倉價格。 語法 Numeric AvgEntryPrice()參數 無 備注 獲得當前持倉的平均建倉價格,返回值為浮點數,該函數僅支持交易指令。 示例 無當前持倉位置的每手浮動盈虧ContractProfit說明 獲得當前持倉位置的每手浮動盈虧。 語法 Numeric ContractProfit()參數 無 備注 獲得當前持倉位置的每手浮動盈虧,已考慮交易費用,返回值為浮點數,該函數僅支持交易指令。只有當MarketPosition != 0時,即有持倉的狀況下,該函數才有意義
36、,否則返回0。獲得當前的可用資金CurrentCapital說明 獲得當前的可用資金。 語法 Numeric CurrentCapital()參數 無 備注 獲得當前的可用資金,已考慮交易費用,返回值為浮點數,該函數僅支持交易指令。根據參數進行獲利平倉操作SetProfitTarget (0,2000,True); 當前所有持倉盈利達到2000之后,執行所有持倉位置的獲利平倉。(此時是計算所有持倉的盈利數)SetProfitTarget (1,50, False); 當前持倉的某一個建倉位置每張合約的盈利達到50之后,執行該持倉位置的獲利平倉。(此時只計算該持倉位置的每張合約盈利) 第一課:實
37、例之戰一個文華交易系統的移植例子多空趨勢-交易系統之文華的公式腳本:Copy to clipboard - 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*C
38、LOSE HIGH LOW)/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)&am
39、p;&(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;CROS
40、S(K,D)|(CLOSE>MA1*1.001),BP;TradeBlazer公式代碼:Copy to clipboard - CODE:/-/ 簡稱: Test/ 名稱: 多空趨勢交易系統/ 類別: 交易指令/ 類型: 其他/ 輸出:/-ParamsNumeric Length1(16);Numeric Length2(35);Numeric Length3(9);Numeric Lots(1);VarsNumericSeries Value1;NumericSeries Value2;Numeric LowestValue;NumericSeries Value5;NumericSe
41、ries RSV;NumericSeries KValue;NumericSeries DValue;Numeric AvgVol5;NumericSeries CloseTmp1;NumericSeries CloseTmp2;NumericSeries RSIValue;NumericSeries PreLow;NumericSeries PreKValue;Numeric Lowest33Value;NumericSeries VarTmp1;NumericSeries VarTmp2;NumericSeries ZL;Numeric SH;BeginValue1 = XAverage(
42、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 = KValue1;PreLow = Low1;AvgVol5 = Average(Vol,5);
43、Lowest33Value = Lowest(Low,33);VarTmp1 =(2*CLOSE HIGH LOW)/4 - Lowest33Value )/(Highest(High,33) - Lowest33Value) * 100;ZL = XAverage(VarTmp1,17);VarTmp2 = 0.667*ZL1 0.333*ZL;SH = XAverage(VarTmp2,2);CloseTmp1 = Max(Close - Close1, 0);CloseTmp2 = Abs(Close - Close1);RSIValue = WAverage(CloseTmp1,6)/
44、WAverage(CloseTmp2,6) *100;/以上為KD部分只要如何換書寫方式就可了,higest =hhv lowest=llv xAverager=ma / Buy什么時做買入動作,條件If( (CrossOver(Close,Value1 ) && (KValue > DValue) && (ZL>SH) Or(CrossOver(Value1,Value2) && (ZL>SH) && (Vol > 1.25 * AvgVol5) && (KValue > DValu
45、e) 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) &&am
46、p; (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/-/ 編譯版本 GS2004.06.12/ 用戶版本
47、2007-06-25 10:37/ 版權所有 TradeBlazer/ 更改聲明 TradeBlazer Software保留對TradeBlazer平臺/ 每一版本的TrabeBlazer公式修改和重寫的權利/- 第二課:交易思想是靈魂要是打算根據3日的高低價平倉呢?想法如下想實現這樣一個一個想法:價格突破5天最高價,開多倉,把當天和前一天的K線做比較,取兩日的最低價格做為止損,當價格突破3日最低價時,平多倉。價格突破5日最低價,開空倉,把今天和 .你看看哦,代碼大致如此: ParamsvarsNumericSeries EntryHi;NumericSeries EntryLo;Numer
48、icSeries ShortStop;NumericSeries LongStop;NumericSeries SellHi;NumericSeries SellLo;Numeric myEntryPrice;Numeric myExitPrice;begin/入場點,開多和開空點,突破5天最高或最低EntryHi = Highest(high1,5);EntryLo = Lowest(low1,5);/離場點,止盈點,三天較高或較低SellHi=Highest(high1,3);SellLo= Lowest(low1,3);/止損點,兩天較高或較低ShortStop= Highest(hig
49、h1,2);LongStop=Lowest(low1,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
50、,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 > Op
51、en, 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(myExitP
52、rice < Open, Open,myExitPrice);BuyToCover(0,myExitPrice);end 第三課:雙均線策略/ 以下為均線交易系統,5日均線上穿20均線為買入,5日均線下穿20均線為買出Params / 宣告參數定義Numeric Length1(5); / 5日均線的參數值Numeric Length2(20); / 20日均線的參數值Numeric Lots(1); / 默認的交易數量,您可以通過公式計算來產生Vars / 宣告變量定義NumericSeries MA1; / 中間變量,用來保存5日均線的值,因為CrossOver的輸入參數需要序列變量
53、,因此定義為序列變量NumericSeries MA2; / 中間變量,用來保存20日均線的值,因為CrossOver的輸入參數需要序列變量,因此定義為序列變量Begin / 宣告公式正文開始MA1 = AverageFC(Close,Length1); / 求出5日均線值,并將值賦給MA1MA2 = AverageFC(Close,Length2); / 求出20日均線值,并將值賦給MA2If(CrossOver(MA1,MA2) / 當出現5日均線上穿20均線時買入Buy(Lots,Close); / 用當前Bar的收盤價買入,詳細的Buy函數調用請參見幫助文件If(CrossUnder(
54、MA1,MA2)/ 當出現5日均線下穿20均線時賣出Sell; / Sell不用參數時會自動平掉所有倉位,詳細的Sell函數調用請參見幫助文件End / 宣告公式正文結束 問題集中一下,雙策略收盤價格突破5天均線,開倉,跌破5天線平倉;收盤價格突破25天均線,開倉,跌破25天線平倉;各平各的倉,不可亂平.是這樣解決如果您希望兩個交易指令不相互平倉,那直接開兩個圖表分別執行交易指令就可以啦!你舉例的交易指令除了參數還都是一樣的。所以只需要更改兩個圖表中交易指令的參數就可以解決了。操作步驟如下:1、新建一個交易指令,假定命名為Demo:Copy to clipboard - CODE:Params / 宣告參數定義Numeric Length(5); / 均線的參數值Nu
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025小學五年級語文下冊知識點教學計劃
- 系統抗性信號傳導-洞察及研究
- 高校校園文明禮儀德育架構及職責
- 老年針刺操作規范及流程
- 初三化學實驗課程教學計劃
- 監理在第三方人才測評中的管控措施
- 2025屆福建省六校高二物理第二學期期末統考模擬試題含解析
- 2025幼兒園春季教職工健康管理計劃
- 2025-2026學年度小學科技創新活動計劃
- 設備長周期安全穩定經濟運行的維護措施
- 廣州市藝術中學招聘教師考試真題2024
- 工業自動化設備保修及維修管理措施
- 期末作文預測外研版七年級英語下冊
- 2025-2030中國兒童魚油行業銷售動態及競爭策略分析報告
- 統編版五年級升六年級語文暑期銜接《課外閱讀》專項測試卷及答案
- 小小理財家課件
- DB43-T 2622-2023 醫療導管標識管理規范
- 譯林版一年級下冊全冊英語知識點梳理
- 案場物業制度管理制度
- 護理事業十五五發展規劃(2026-2030)
- CJ/T 316-2009城鎮供水服務
評論
0/150
提交評論