日期與時間的語法

K棒頻率的指定語法

  雖然說,XS的語法是建構在K棒的時間序列上,理論上,可以適用於各種頻率,但有時候我們在語法寫作時,會特別針對某種頻率去設計,這時候就需要在腳本中,特別註明,並且安排一些敘述式,用來在當使用者把該腳本拿去用不合適的頻率啟動策略雷達時,可以讓系統發出警語。

這樣的語法,它的語法是一個內建的函數叫作barfreq,這個函數是用來傳回K棒目前頻率的單位,以字串型式表示,XS中,K棒的頻率可以有以下幾種
K棒頻率
語法的表達方式
Tick
Tick
分鐘線
Min
小時線
Hour
日線
D
週線
W
月線
M
季線
Q
半年線
H
年線
Y
日線以上都為一個字母,日線以下則為簡寫。
所以如果我們寫了一個腳本只想把它用在日線時,我們就可以寫成以下的敘述式:
if barfreq <> "D" then return ;

指定時間間隔的語法

有了barfreq這樣的語法,我們可以指定腳本適用在tick,分鐘,小時,日,週,月等等不同的頻率,但我們無法指定腳本適用在幾分鐘線,或是幾小時線,例如一分鐘線,或是五分鐘線。
這時候我們可以使用另一個XS內建函數: barinterval
barinterval意思是K棒跟K棒中間的間隔。如果barinterval=1那代表間隔就是1,所以如果我們希望我們寫的腳本只適用在5分鐘線
我們就可以寫出如下面這個敘述式
if barfreq<> "Min" or barinterval <> 5 then return;

透過barfreqbarinterval這兩個內建的函數,我們可以指定任何的K Bar頻率,來作為腳本的應用頻率。


指定特定時間的語法

我們在撰寫腳本的時候,有的時候必須把時序的概念加進去。

例如我們可能會尋找一開盤就大漲的股票,我們可能會尋找拉尾盤的個股,一開盤或是殺尾盤都有指定時間的概念。 

XS提供了一個內建函數叫作currenttime來傳回現在的時間,我們可以用它來顯示目前電腦的時間,格式為hhmmss
hh0023
m
m0059
ss
0059
如果現在的時間是早上的九點三十分二十秒,那我們如果寫一個value1=currenttime
如果有個腳本我們希望是從早上九點到中午12點的時間才執行,我們可以像下面這麼寫
if CurrentTime > 090000 and CurrentTime < 120000 Then…………………..


限定在今天的K棒才運算
除了currenttime之外,如果我們在用日線以下頻率寫腳本的時候,然後又希望電腦從今天開盤的第一根才開始運算時,系統提供了另一個函數叫作currentdate
,當您使 這個函數時,電腦會傳回現在的日期,傳回值的格式為yyyyMMdd
yyyy
為西元?
MM
為月份,從0112
dd
為日期,從0131
所以如果是2014年元旦使用currentdate時,它會傳回來的數值就是20140101

之前我們有介紹過在系統內建的回傳值中,除了開高低收成交量之外,還有日期(date)及時間(time),所以我們要確定腳本是在當天才被執行時,我們可以寫成
if  currentdate =date 
這樣的敘述,這個敘述式如果要是true,一定要K棒的日期是屬於今天才會是True

例如當我們用1分鐘線的腳本來尋找開盤連五分鐘都上漲的股票,我們可以這麼寫

 又或者我們可以把當日限定的語法寫成像下面這一行
if date <> currentdate  then return; {只有在今天才執行動作,以節省資源}

透過上述的幾個語法,我們可以
1.指定腳本的執行頻率。
2.指定腳本的執行時間間隔。
3.指定腳本執行的起始與結束時間。
4.指定腳本執行的時間是否為今天才執行。