電子信箱 service [at] bituzi.com
幣圖誌首頁 facebook粉絲團 google plus google plus

EasyLanguage PowerEditor寫作教學

上次我介紹過樞紐點進場方式,也許對一些新手來說不知道要怎麼用程式語言去把它寫出來,所以這次來具體的把程式寫出來,順便利用這個機會來介紹一下EasyLanguage PowerEditor的一些寫程式的方式。之前有說過大概如何構造出一支程式,但是只有具體說出大概支架,可能有些人對於細節要如何去描寫出來有點疑惑,所以下面就來講解一下如何寫出樞紐點進場方式的程式。


首先先把所有完整程式寫出來給大家瞧瞧:

Inputs:TrailBar4;

Vars:Pivot0, Support10, Support20, Support30, Resistance10, Resistance20, Resistance30);

If Date<>Date [1] then Begin

Pivot=(High+Low+Close)/3

Resistance1=Pivot*2-Low

Resistance2= Pivot+Range

Resistance3= Resistance1+Range

Support1=Pivot*2-High

Support2= Pivot-Range

Support3= Support1-Range

End;

If Time>Sess1StartTime and Time

If Low>Support3 then Begin

Sell next bar at Support3 Stop;

Sell next bar at Support2 Stop;

End;

If High

Buy next bar at Resistance 3 Stop;

Buy next bar at Resistance 2 Stop;

End;

End;

Exitlong next bar at LowestLow,TrailBar Stop;

Exitshort next bar at HighestHigh,TrailBar Stop;

SetExitOnClose;

我們這邊開始來解釋一下上面程式為什麼這樣寫。首先Inputs後面接的變數是我們可以在程式中任意改變的參數,也是我們要最佳化的參數,當然參數名稱有它命名的規則,不過原則上如果是用英文字組成的名稱都不會有什麼問題,不要加上一些奇奇怪怪的符號就好了。Vars後面所接的變數是我們在程式計算過程中要用來儲存計算結果的變數,而在這些參數或是變數的後面括號中的數值是我們設定的起始值,所以我們可以隨時改變參數的值,而變數的數值也會隨便計算結果的改變而改變,不過要記得在Inputs參數跟Vars變數最後面都要加上分號代表此段程式結束,在之後的每段程式結束也都要加上分號。

接下來是程式的主要部份:

If XXXXXX then Begin

###########;

End;

這意思是說如果滿足XXXXXX條件,那麼就執行###########指令,最後一定要加上End;表示結束。所以If Date<>Date [1] then Begin就表示說如果這根K棒的日期不等於前一根K棒的日期時我們就開始執行下面指令,也就是說只有在每天開盤第1K棒出現後會執行這個指令,去計算出我們要的3個支撐點與3個壓力點。再來就是我們的進場方式,If Time>Sess1StartTime and Time是表示說在我們指數開盤的時間與收盤的時間才會進場,當然我們一般並不會讓時間範圍設定這麼大,你可以設定你自己想進場的時間範圍,比如說:930分到1點之間也可以。那當時間在這些範圍當中,程式就會開始執行並去計算是否有滿足我們所設定的進場條件,我們設定的條件是,當K棒的低點大於Support3時,我們設定在價格在向下突破Support3或是Support2時我們進場放空。Sell next bar at Support3 Stop;其中Stop的作用通常是表示說我們進場的價位是所設定的或是比他差一點的價位,所以通常是用在價格突破的時候。相反的,當K棒的高點小於Resistance3時,我們設定在價格在向上突破Resistance3或是Resistance2時我們進場作多。

最後我們要說明出場方式,當我們持有多單時,多單出場是用Exitlong來表示,所以Exitlong next bar at LowestLow,TrailBar Stop;就表示如果價格低於前4K棒的最低點時,多單出場。LowestPrice,N這個函數是表示NK棒中價格(Price)的最低值。同理,當我們持有空單部位,空單出場是用ExitShort來表示,所以Exitshort next bar at HighestHigh,TrailBar Stop;

就表示如果價格高於前4K棒的最高點時,空單出場。因為我們是寫當沖策略,所以在收盤前一定要出場,所以你必須自己加上收盤前的出場時間才可以,而加上SetExitOnClose;這個指令是確保你在作回測時,如果有部位,收盤前一定會出場。

當然這支程式其實是一支很簡單的程式,通常一支程式寫出來可能比這個複雜很多,但是如果是新手就要一步一步慢慢來,畢竟要把自己的想法完全用程式語言寫出來,其實也沒那麼容易的,必須要多寫多想多參考其他人的寫法才是。

0 意見: