Getfield語法

台股特有欄位的應用

XScript問市之前,市場早有很多套程式語法可供交易者使用,但我們敢於宣稱XScript是最適合台灣人使用的程式交易語法,其原因就在於,我們可以提供台灣市場獨有的欄位,供交易者來使用。

交易者在制定台股交易策略時,往往除了開高低收成交量之外,也想要試著用台股獨特的交易資料,例如融資券及法人的進出資料,來作為交易策略的運算基礎,為了讓交易者可以如願以償,XScript提供了一套語法,來協助交易者完成這樣的工作,本章就是來介紹這套語法及其應用。

在撰寫腳本時,當您需要使用這些台股特有的欄位時,您只要在編輯器中打一個英文字母g,不管大小寫,編輯器都會跳出一個如下面附圖中的視窗,只要您選取getfield(插入),系統就會跳出一個選取欄位的視窗,讓您直接挑選要使用的欄位。
   
您只要選取其中一個欄位按插入鍵,系統就自動把這個欄位帶到您的腳本中,因此,您就不需要去記那個欄位的英文名字是什麼。

例如我們如果要取得今日的外資買賣超,我們的寫法可以如下:
value1=Getfield("外資買賣超"); 其單位是張數。

如果我們要取得前一日的外資買賣超,其寫法跟我們要取得前一日的收盤價是一樣的,也就是用中括號裡寫個1就可以,所以其寫法如下:
value1=Getfield("外資買賣超")[1];


那麼到底XS支援多少台股欄位呢?
目前XScript能支援的數據類別及欄位如下:
1.法人買賣超 
Ftotalbuy
外資買張
Ftotalsell
外資賣張
Fdifference
外資買賣超
Fsharesheld
外資持股
Fsharesheldratio
外資持股比例
Stotalbuy
投信買張
Stotalsell
投信賣張
Ssharesheld
投信持股
Ssharesheldratio
投信持股比例
Sdifference
投信買賣超
Dtotalbuy
自營商賣張
Dtotalsell
自營商賣張
Dsharesheld
自營商持股
Dsharesheldratio
自營商持股比例
Ddifference
自營商買賣超
InvestorTotalBuy
法人買張
investorTotalSell
法人賣張
investorDifference
法人買賣超張數
inverstorsharesheld
法人持股

2.
信用交易
pomusingratio
融資使用率
pomnew
融資增減張數
shortsalenew
融券增減張數
Pomremain
融資餘額張數
shortsaleremain
融券餘額張數
daytradeshares
當日沖銷張數
SBLBorrowing
借券張數
SBLreturn
還券張數
SBLbalance
借券餘額張數

3.
主力進出
Leadertotalbuy
主力買張
Leadertotalsell
主力賣張
LeaderDifference
主力買賣超張數
Leadersharesheld
主力持股
retailtotalbuy
散戶買張
retailtotalsell
散戶賣張
retaildifference
散戶買賣超張數
operatortotalbuy
實戶買張
operatortotalSell
實戶賣張
operatordifference
實戶買賣超張數
controllertotalbuy
控盤者買張
controllertotalsell
控盤者賣張
controllerdifference
控盤者買賣超張數

4.
交易數據
TradeValue
融資使用率
TradeVolumeAtBid
融資增減張數
TradeVolumeAtAsk
融券增減張數

這麼多的欄位,在使用上,XScript建議的語法如下:
Value1=getfield(“tradevalue”)[1]
或是value1=getfield(“成交金額”)[1]
這兩種方式都可以取得昨日成交金額

請看以下這個範例
value1=Getfield("成交金額")[1];      
value6=Getfield("外資買賣超")[1];    
value13=Getfield("投信買賣超")[1];       
value18=Getfield("自營商買賣超")[1];       

variable: ForcePush(0);
input: ForceType(0);

Switch ( ForceType )
Begin
Case 0: ForcePush =value6;
Case 1: ForcePush =value13;
Case 2: ForcePush =value18;
End;
//==================以上取回日線資料=======================
input: Atleast(1000); //最少買超張數
//條件1
condition1 = ( close[1]-open[1]  > 0.75 *high[1]-low[1] )  and //紅棒
              (high[1] -low[1]) > 2 *( high[2]-low[2])  ;  //且大 則回傳True condition1
//條件2
if q_dailyhigh > highest(high[1],3)  and //用逐筆 加上 q_dailyhigh 測試創新高
   volume > volume[1]                              //今量大於昨量
   then condition2 =true;
//條件3
condition3 = ForcePush >Atleast ;     //買超張數大於設定最少張數
if  condition1 and condition2 and condition3 then ret=1;


透過getfield這樣的語法,我們可以把台股特有的欄位拿來加入運算,不過要提醒大家,由於這些資料都是日資料,所以運用這些欄位的腳本,在設進階警示時,其腳本的頻率必須設定為日線以上的頻率。