[TS懶人包] [保險服務]

2010年2月7日 星期日

基本邏輯判斷

接下來這個主題可以算是程式交易最為重要的地方,那就是邏輯判斷式子和迴圈的運用。通常策略要進場前總是會需要判斷一些條件(當然也可以什麼條件都沒有),然後依照判斷條件的結果去執行。所以這邊提到的會是 if ... 的運用。


首先看一下 EasyLanguage 裡面對 if 的幾個用法,我順便用中文舉個例子:

If 突破三日高點 Then
買進;

上面的程式碼翻成中文就會變成:假如(if)突破三日高點然後(then)買進

另外一個用法是:

If 突破三日高點 Then Begin
買進;
記錄三日低點;
End;

上面的程式碼翻成中文是:假如(if)突破三日高點然後(then begin)買進、記錄三日低點,結束(End;)

二個例子的差別在於第一個例子並沒有用到 Begin 和最後的 End;

那什麼時候需要 Begin 呢?簡單的說…只要你的判斷式後面所需要執行的命令只有一行的話,那你就可以偷點懶…少打一些程式碼,不需要加上 Begin... End;

不過如果你需要執行的命令是二行以上的話,那就需要加上 Begin...End; 了。

接下來再 if 的判斷部份還有一個是偶爾會用到的,會像下面這樣:

If 突破三日高點 Then Begin
買進;

End
Else Begin

睡覺;
End;

這個部份翻成中文為:假如(if)突破三日高點然後(then begin)買進否則(end else begin)睡覺,結束(End;)

簡單的說會是一個 if ... else ... 的程式語法,也就是當假如(if)成立的時候去作某一些事,當假如(if)不成立的時候去作另外一些事。

在這個 if ... else 的語法部份…請特別注意分號(;)標示的部位,常常會有寫錯的時候…哪邊後面該加分號…哪邊又不該加…它是有固定的用法的,在第一個 End 後面是不加分號的,不然程式在檢查的時候可是會出錯的。

通常 if ... else 的程式都可以拆開成二個 if 來判斷…像上面的例子就可以拆開成:

If 突破三日高點 Then Begin
買進;
End;
If 沒有突破三日高點 Then Begin
睡覺;
End;


在判斷的過程中…你可以加上很多的條件…只要利用 And 把他們接起來就行了:

If 突破三日高點 And 收盤價大於月線 And 時間小於一點 Then Begin
買進;
End;


3 則留言:

  1. 剛開始學寫easylanguage,有了DK大的文章,真是一大助力
    謝謝啦 ~

    回覆刪除
  2. 想請問一下, 對於期貨換月價差在做回測時如何解決? 想用台股加權現貨來做回測的話不知效果如何?

    還有就是哪裡可以下載到加權現貨歷史資料呢?

    謝謝

    回覆刪除
  3. 小福星:目前我的回測是不管換月價差的。如果你要用現貨來作回測…我想也是可以,只是歷史資料這個部份…我就不知道了;另外…雖然期貨最後會回到現貨的價格,不過基本上除了結算日之外,會有一定的價差,再加上現貨並不是即時的反應市場的狀況…所以我想也許不是很適合。

    回覆刪除

請留下您的大名…匿名者恕不回應…

Related Posts Plugin for WordPress, Blogger...