if..then

By | 2015-10-19

一個腳本的完成,有幾個步驟:

  1. 我們透過參數及變數的宣告,準備好要加以運算的數據。
  2. 我們透過運算因子,完成各種數值間的運算。

接下來,我們必須為這些運算的結果安排其先後順序,以及建構與輸出語法間的的因果關係,這些工作,我們都是透過流程控制的語法來完成, 前面我們有用到的IF ……..THEN就是一個典型的流程控制語法。

接下來的章節,我們就一一來介紹這些控制流程的語法,完成這部份的學習,XS的基本語法,就大致完備了。

IF..Then

if then的流程控制,在腳本中我們最常運用到的流程控制,應該就是如果…………那就……….,也就是if ……..then了

例如我們要電腦在股價創今天高點時通知我們,我們會寫成 :

close=q_dailyhigh then ret=1;
但在撰寫腳本時,並不是每個想法都只是單純的if……..then ,有時候我們在符合某個條件時,想要電腦幫我們處理的, 不只有一行敘述,有時候符合條件時我們希望電腦幫我們執行某動作,在不符合條件時執行另一個動作,因此, 本節我們來學習if…….then這個我們最常用的流程控制語法,到底有那幾種不同的寫法,用來處理不同的情境。
if then 1
這一種是我們最常用也最簡單的寫法,例如我們要電腦在股票出現K棒三連陽時通知我們,我們只要寫以下的兩行腳本 :
if trueall(close>close[1],3)
then ret=1;
這樣的敘述很單純,就是如果IF後面的那個敘述式為真,那就執行then後面的那一個敘述式。
單條件單敘述

但有的時候,我們在寫腳本的時候,除了希望在某敘述式為真時,請電腦幫我們執行某敘述,有時候我們也希望當該敘述式false時, 可以為我們執行另一個敘述,這時候的寫法很簡單,就是在then之後的那個敘述式的下方,用else起頭,寫下另一個敘述式就可以了。

例如我們在計算真實波動區間時,我們需要找真實的高點及真實的低點,所謂真實的高點是 :

  1. 如果昨天收盤比今天的高點高,那麼昨天的收盤價就是今天的真實高點
  2. 如果昨天收盤不比今天的高點高,那麼今天的最高價就是今天的真實高點

在寫成腳本時,我們就可以用if……then …….else的語法來處理如下方的敘述式

if Close[1] > High then TrueHigh = Close[1]
else TrueHigh = High;

我們最常用的語法是如果…….就……否則就……………,但有的時候,我們必須設下不止一層的過濾器,也就是在上面的語法的”否則就……”, 不是一個指示下一個直接運算的敘述式,而是另一個if….then的判斷式敘述。

多條件單敘述

 

 

 例如我們如果想找開盤就漲停或開盤跳空上漲後,不到九點十五就漲停的股票,我們可以運用以下的腳本 :
if open=q_DailyUplimit then ret=1;

if open>close[1]*1.025 and close=q_DailyUplimit and time<091500 then ret=1;
這樣的架構就是為觸發設定兩個不同的條件,當符合條件A時就觸發,但如果沒有符合條件A,如果符合條件B也可以觸發。
多條件單敘述sample

這當中有件事要請各位特別留意,那就是在語法上,要千萬記得

If……..

Then …….

else………..;

如果有else,前面then 之後的敘述式結束時,不要打逗號,要等到else後面的敘述式結束後才打逗號。