XS語法的基本結構

By | 2015-05-26

舉凡所有語法,都是撰寫者寫出電腦看得懂的文件,這種文件,我們稱之為腳本。

1.11

敘述式
Xscript的語法基本架構上,跟其他的程式交易語法平台一樣,為了讓電腦看得懂,我們必須安排一種特殊的寫作方式。 這樣的寫作方式,是由一行一行的敘述式(statement)所組成。這些敘述式的最後,都會有一個分號”;”來宣告這一行的敘述式已經結束。

腳本
每個腳本,就是把一行行最後由分號來結束的敘述式(statement),按照執行的先後順序排在一起,當我們把一個腳本送給電腦時, 電腦會根據每一個敘述式在腳本中的順序,依序一行一行的執行腳本上的指令。每一行敘述式,都是由六種不同的文字所組合,這六種不同的文字,就像下圖中不同的分類

時序的觀念

為了讓user用原本就習慣的思考模式來撰寫腳本,Xscript必須貼近使用者的思維方式。而目前大部份
的市場參與者, 其思維方式,是建構在由開高低收成交量所呈現的一個時間序列上。

市場參與者,是透過一個時間序列,來去了解商品的過往價格走勢,並且作為預測未來多空方向的根據。
我們在作技術分析時,不會只看一根BAR,我們看的是數十根數百根BAR排在一起時所呈現的型態,趨勢,支撐,壓力等等。
所以我們必須讓電腦知道,我們現在要運算的,是第幾根K Bar 。
怎麼做呢?
我們用close[1]來代表前一根bar的收盤價,這個中括號裡的數字,代表的是前n根bar裡的值,所以, high[5]代表的就是今天算起前面第五根bar的最高價,也因此 ,close[0]代表的就是往前算第0根的收盤價,也就是今天的收盤價。
K11

各位可以參考上圖,我們可以用這樣的語法,讓電腦清楚的知道,我們所指的是那一根bar的那一個值。
於是,如果要讓電腦找出今天價量齊揚的股票時,我們可以這麼寫 :

close>close[1] //今天的收盤價比前一天的收盤價高
And volume>volume[1] //今天的成交量比前一天的成交量大

又例如,如果要讓電腦找到今天漲幅超過五%且成交量比前一天多超過一千張的股票,那我們可以這麼寫 :

close>close[1]*1.05
And volume-volume[1]>1000

上面的這兩行敘述,意思就是一個商品的收盤價大於前一天收盤超過5%而且成交量比前一天的成交量多一千張。
為了貼近使用者的想法,XS的語法基本上,就是建構在這樣的一個基礎之上,它用兩個準則,來作為使用者與電腦溝通的基本原則
1. 用Open ,high,low,close以及volume這五個英文詞,來代表最近一根K線上的開、高、低、收、成交量。
2. 用中括號及在括號內的阿拉伯數字來代表這是從最近一根K線往回算起的第幾根K線。
透過這兩個準則,使用者可以把K線圖上的每一個被記錄下來的值,都拿來用在自己撰寫的腳本上。
例如我們可以用high[1]代表前一天的最高價,所以如果open>high[1],代表今天的開盤價大於昨天的最高價,也就是今天跳空開高的意思。


例如 : 我們在尋找紅三兵股票時,必須遵循三個原則 :
1. 最近三天都上漲
2. 三天的K線實體部份都要是紅色的,也就是說三天的收盤價都高於開盤價
3. 實體紅棒的部份一天比一天長
那麼要讓電腦知道我們要找的是紅三兵的股票時,我們可以列出三個敘述

close[2] > close[3] and close[1] > close[2] and close > close[1]
close[2] > open[2] and close[1] > open[1] and close > open
close[2]-open[2] < close[1]-open[1] and close[1]-open[1] < close-open

又例如 : 我們如果要寫一紅包三黑,我們必須遵循以下幾個規則
1. 前三根K棒都是黑色的
2. 最後一根是長紅棒
3. 最後一根的收盤價比前三根的高點還高

我們可以把上面的這些規則改寫成以下電腦看得懂的敘述

close[3]< open[3] and close[2]< open[2] and close[1]< open[1]
close>open
close> high[3]

透過這樣的語法約定,我們可以把每一根K線上的每一個開高低收成交量的值都拿來用,如果我們要表達價漲量增,我們可以寫

close>close[1] and volume>volume[1]

我們使用這五個英文的詞語及中括號,告訴電腦我們希望它拿那些數字來作運算, 上面所用的open ,high, low, close,volume,都是我們這麼寫,電腦就會把數值傳回來作運算的指令 。
要完成一個可以幫我們請電腦協助完成工作的腳本,除了回傳值之外,可能出現在腳本內容裡的字詞,還包括了標點符號,常數,運算子,輸出及忽略字等幾種文字。
在後面的章節,我們依序了解這些不同的字詞在腳本中會怎麼被使用。