XS的時間及頻率設定

By | 2015-10-22

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

這樣的語法,它的語法是一個內建的函數叫作barfreq,這個函數是用來傳回K棒目前頻率的單位,以字串型式表示,在XS中,K棒的頻率可以有以下幾種 :

BARFREQ1

日線以上都為一個字母,日線以下則為簡寫。

所以如果我們寫了一個腳本只想把它用在日線時,我們就可以寫成以下的敘述式 :

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

  1. hh從00到23
  2. mm從00到59
  3. ss從00到59

如果現在的時間是早上的九點三十分二十秒,那我們如果寫一個 value1 = currenttime

如果有個腳本我們希望是從早上九點到中午12點的時間才執行,我們可以像下面這麼寫 :

if CurrentTime > 090000 and CurrentTime < 120000

Then begin

//statement

end;

除了currenttime之外,如果我們在用日線以下頻率寫腳本的時候,然後又希望電腦從今天開盤的第一根才開始運算時, 系統提供了另一個函數叫作currentdate,當您使用這個函數時,電腦會傳回現在的日期,傳回值的格式為yyyyMMdd 。

  1. yyyy為西元年
  2. MM為月份,從01到12
  3. dd為日期,從01到31

所以如果是2014年元旦使用currentdate時,它會傳回來的數值就是20140101。

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

currentdate

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

input:TXT1("僅適用1分鐘線"; setinputname (1,"使用限制"); if barfreq = "Min" and barinterval = 1 and Date = CurrentDate and TrueAll (close > close [1], 5 )

then ret=1 ;

透過上述的幾個語法,我們可以 :

  1. 指定腳本的執行頻率。
  2. 指定腳本的執行時間間隔。
  3. 指定腳本執行的起始與結束時間。
  4. 指定腳本執行的時間是否為今天才執行。