輸出語法

在我們撰寫語法的流程中,我們一行行的寫著敘述式,希望電腦照著我們的意思,拿著開高低收成交量這些數據去運算,運算總會有個結果,我們會希望電腦根據這個結果,幫我們做點什麼,這裡說的什麼,就是電腦運算中所謂的輸出。

XS的語法裡,輸出的方式有4種,分別如下表





PlotN
Plot
繪圖用函數
retVal
Trigger
檢查是否Sensor觸發的預設值
Print 
output
輸出用的函數
RaiseRunTimeError
output
停止函數 輸出錯誤訊息

我們一一來作介紹

一,PlotN

Plot是我們在自設指標的時候用的,當我們寫了一個腳本之後,腳本的最後輸出基本上是分兩大部份,一種是根據腳本把一個數值畫成一個自訂的指標,另一種則是在數值符合某種情況時,請電腦通知我們某商品已符合某條件這樣的警示訊息。Plot就是用來請電腦幫我們把某數值繪成指標的語法
它的語法格式如下:


例如我們如果要把每天的收盤價繪製成一條線
我們可以寫plot1(close);
我們也可以在要繪圖的數值後面用逗號及引號來加註這數值
我們可以寫plot1(close,”收盤價”)
如果要畫兩條線,我們可以一條用 plot1,另一條則是plot2
例如以下的範例,如果我們想要畫兩條線,一條呈現K棒的總長度,另一條顯示K棒的實體長度,我們可以寫下以下的腳本

然後幫這個腳本取名為”K棒長度
這樣子我們在XQ技術分析的頁面中,就可以透過選取自訂指標的方式,選取K棒長度這個腳本來繪圖,然後您就會看到如以下的圖形,所以透過腳本的撰寫,你可以算出各式各樣的數值,然後透過PlotN這樣的語法,把這些數值一條一條畫在XQ技術分析的自訂指標中。

二,retVal

除了繪圖之外,我們其實最常把腳本應用在警示上,我們總是希望電腦在股票符合什麼條件的時候請電腦通知我們,這時候我們就用得上這個語法。
它的語法格式如下:
Retval=1   retval=0
我們可以簡寫為ret=1 ret=0
Retvalreturn value的簡寫
XS的語法設定當Retvalue=1時電腦會觸動警示,
所以如果你希望台積電股價突破150元時電腦可以通知您,就可以寫出以下的腳本
If close>150 then ret=1;
If …….then ret=1; 是很標準的警示觸發條件的撰寫格式。

三,Print

除了繪圖及警示之外,有時為了撰寫腳本時的除錯,校對資料 或是研究用,我們需要輸出特定的數值,這時候就需要print這個語法
它的語法格式如下:

例如我們想知道電腦今天有沒有把最新成交的數據送進來
我們就可以寫出以下的腳本

然後當我們拿這腳本去用台積電執行腳本時,在XS程式的PRINT檔案夾中,會有一個test_2330.TW………的文字檔,當你打開這個檔案時,會出現像下面附圖之類的文字

電腦依據你要求的PRINT指令,把日期及開盤,最高,最低都印了出來。
Print這個功能,主要是可以拿來作研究用,舉個例子
如果我們想知道用RSI黃金交叉來作為台積電的買進訊號,隔天上漲的機率高不高? 我們可以寫一個腳本

然後在進階警示清單的介面上,用台積電這檔股票去跑最近300筆資料,系統會在sysjust/XQ2005/XS/Print的目錄底下,跑出一個文字檔,如果用excel去打開,可以看到如下圖的一個表,

這個表就是根據我們要求的print格式所列出來的三個欄位,最右邊那一欄就是符合前一日rsi黃金交叉條件的當天收盤價減前一日收盤價的值,從這個表我們可以看得出來,在出現rsi黃金交叉之後的隔天,台積電股價並沒有太高的上漲機率,所以我們大概可以了解,如果在rsi 出現黃金交叉時隔天進場買台積電,並不會賺到錢。
Print的功能主要就是可以自己訂定輸出的格式,這對作研究及想要改進腳本的人,是個很有用的功能。





四,RaiseRunTimeError

當我們在撰寫腳本時,有時候當數據如果錯誤時,程式會出現錯誤,例如當除數是零的時候,這時候電腦就很容易卡在那邊, 或者有些腳本只適合日線,如果用在分鐘線,就可能要算很久且出來的結果也不能用,這時候這個Raiseruntimeerror就是一個很好用的輸出語法,可以馬上通知電腦中斷執行,這樣就不會出現電腦當機之類的意外情況。
其語法格式如下:

這個語法是在raiseruntimeerror這個字的後面加一個小括號,然後把想要輸出的文字用雙引號寫下來,放在括號裡,當條件符合的時候,電腦會輸出雙引號通知使用者。
例如當我們要寫一個只適用在一分鐘線的腳本時,我們第一行可以像下面這樣寫:


這麼一來,如果頻率不是設定為1分鐘線時,電腦一讀到這一行就會直接中止執行這個腳本,這樣就可以避免電腦執行一個不適於其他頻率的腳本。
例如我們用五分鐘線在台積電這個檔股票執行上面那一行敘述,電腦就會出現以下的訊息