雖然說,XS的語法是建構在K棒的時間序列上,理論上,可以適用於各種頻率,但有時候我們在語法寫作時,會特別針對某種頻率去設計, 這時候就需要在腳本中,特別註明,並且安排一些敘述式,用來在當使用者把該腳本拿去用不合適的頻率啟動策略雷達時,可以讓系統發出警語。
這樣的語法,它的語法是一個內建的函數叫作barfreq,這個函數是用來傳回K棒目前頻率的單位,以字串型式表示,在XS中,K棒的頻率可以有以下幾種 :
日線以上都為一個字母,日線以下則為簡寫。
所以如果我們寫了一個腳本只想把它用在日線時,我們就可以寫成以下的敘述式 :
if barfreq<>"D" then return;
有了barfreq這樣的語法,我們可以指定腳本適用在tick,分鐘,小時,日,週,月等等不同的頻率, 但我們無法指定腳本適用在幾分鐘線,或是幾小時線,例如一分鐘線,或是五分鐘線。
這時候我們可以使用另一個XS內建函數: barinterval。
barinterval意思是K棒跟K棒中間的間隔。如果barinterval=1那代表間隔就是1,所以如果我們希望我們寫的腳本只適用在5分鐘線, 我們就可以寫出如下面這個敘述式 :
if barfreq<>"Min"or barinterval<>5 then return;
透過barfreq跟barinterval這兩個內建的函數,我們可以指定任何的K Bar頻率,來作為腳本的應用頻率。
我們在撰寫腳本的時候,有的時候必須把時序的概念加進去。
例如我們可能會尋找一開盤就大漲的股票,我們可能會尋找拉尾盤的個股,一開盤或是殺尾盤都有指定時間的概念。
XS提供了一個內建函數叫作currenttime來傳回現在的時間,我們可以用它來顯示目前電腦的時間,格式為 : hhmmss
- hh從00到23
- mm從00到59
- ss從00到59
如果現在的時間是早上的九點三十分二十秒,那我們如果寫一個 value1 = currenttime
如果有個腳本我們希望是從早上九點到中午12點的時間才執行,我們可以像下面這麼寫 :
if CurrentTime > 090000 and CurrentTime < 120000 Then begin //statement end;
除了currenttime之外,如果我們在用日線以下頻率寫腳本的時候,然後又希望電腦從今天開盤的第一根才開始運算時, 系統提供了另一個函數叫作currentdate,當您使用這個函數時,電腦會傳回現在的日期,傳回值的格式為yyyyMMdd 。
- yyyy為西元年
- MM為月份,從01到12
- dd為日期,從01到31
所以如果是2014年元旦使用currentdate時,它會傳回來的數值就是20140101。
之前我們有介紹過在系統內建的回傳值中,除了開高低收成交量之外,還有日期(date)及時間(time), 所以我們要確定腳本是在當天才被執行時,我們可以寫成if currentdate =date 這樣的敘述, 這個敘述式如果要是true,一定要K棒的日期是屬於今天才會是True。
例如當我們用1分鐘線的腳本來尋找開盤連五分鐘都上漲的股票,我們可以這麼寫 :
input:TXT1("僅適用1分鐘線"; setinputname (1,"使用限制"); if barfreq = "Min" and barinterval = 1 and Date = CurrentDate and TrueAll (close > close [1], 5 ) then ret=1 ;