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