首先看一下 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;
剛開始學寫easylanguage,有了DK大的文章,真是一大助力
回覆刪除謝謝啦 ~
想請問一下, 對於期貨換月價差在做回測時如何解決? 想用台股加權現貨來做回測的話不知效果如何?
回覆刪除還有就是哪裡可以下載到加權現貨歷史資料呢?
謝謝
小福星:目前我的回測是不管換月價差的。如果你要用現貨來作回測…我想也是可以,只是歷史資料這個部份…我就不知道了;另外…雖然期貨最後會回到現貨的價格,不過基本上除了結算日之外,會有一定的價差,再加上現貨並不是即時的反應市場的狀況…所以我想也許不是很適合。
回覆刪除