Author Archives: 發財橘子

3月份月營收數據公佈後的選股方向

3月份的月營收才剛公佈,我們透過XS的選股平台,透過不同的選股程式及條件,來挑出月營收表現值得留意的公司。

要特別強調的是,由於法人對於近幾個月公佈的營收數據,透過拜訪公司,大多已經心裡有譜,所以我們使用月營收來選股的方向,主要有兩個

1.找那些營收成長明顯的冷門股。

2.儘量去避開那些不如預期的高價股。

基於上述的兩個方向,今天跟大家介紹五個透過月營收來運算的選股方式

一,月營收創25個月新高

為了避免挑出季節性因素造成的三月營收大成長,所以加上近三個月月營收年增率平均大於5%的條件,這兩個條件綜合起來,符合條件的股票共有108檔,名單如下圖:

041101

 

二,月營收創12個月新低

041102

三,營收再起飛

這個策略是去尋找那些過去月營收年增率是走下降趨勢,但最近開始轉為上昇趨勢的公司
我們用的腳本如下:

input:TXT("僅適用月線"); setinputname(1,"使用限制");

If barfreq <> "M" then raiseruntimeerror("頻率設定有誤");

setbarback(20);
settotalbar(20 * 2 + 5);

value1=GetField("月營收年增率","M");
value2=average(GetField("月營收年增率","M"), 3);
value3=linearregslope(value2,20);
value4=linearregslope(value2,5);

if value3 < 0 and value4 crosses above 0
then ret=1;

符合這個腳本的股票共有98檔

041103

 

四,高股價營收衰退

選股條件如下

041104

符合條件的股票共有八檔

041105

五,月營收年增率移動平均黃金交叉

我們用以下的腳本,來尋找那些營收年增率的短期移動平均線向上穿越長期移動平均線的股票

value1=GetField("月營收年增率","M");
if average(value1,4) crosses over average(value1,12)
then ret=1;

除了上述的腳本之外,另外加上兩個條件

1.為了避免營收過小,一個大單子就影響運算結果,我們濾掉那些單月營收小於一億的股票。

2.為了避免選到股價已經大漲過的股票,我們再加上近二十日跌幅要大於零的條件。

符合上述三個條件的股票共有37檔,名單如下:

041106

產業數據在XS上的應用

常有人問我XS跟MC,跟HTS,跟TS有啥差別? 我的回答是: “XS是我們自己寫的編譯器,所以語法及功能,可以不斷的隨本地客戶的需要而改進” 。最近大盤忽多忽空,我想從XS在產業上的應用來探討,有沒有那些產業不理會大盤的波波折折,已經走出屬於自己的方向。

用過XQ的朋友都知道,XQ有編制了一整套的細產業指數,所以我們隨時可以像底下的這個頁面一樣,了解細產業指數的漲跌變化。

040701

XQ可以拿到XS來運算的細產業指數共有154個,光以紡織類為例,就有加工絲,棉紡,尼龍,成衣,染整,長纖布,不織布及聚酯纖維等八個細產業指數,可以完整的呈現特定族群的整體表現,我們可以從追蹤這154個細產業的多空變化,從產業的宏觀角度,來掌握類股輪動的方向,可以從這154個細產業的資金流向,了解市場的熱點,明日之星與昨日黃花各是那些產業。

在拿這些細產業指數出來作量化分析時,XS有提供了一些指數限定版的欄位供User來使用,我列表如下:

 

類別 畫圖(plot)/策略雷達 類別 GetQuote
量的欄位 內盤量 量的欄位 總量
外盤量 單量
上漲量 昨量
下跌量 內盤量
開盤委買 外盤量
開盤委賣 委買賣差
籌碼欄位 外資買賣超張數 委比
投信買賣超張數 成交值
外資持股張數 開盤委買
投信持股張數 開盤委賣
自營商買賣超張數 總成交次數
自營商持股 統計欄位 成交比重
融資增減張數 上漲家數
融券增減張數 下跌家數
融資餘額張數 漲停家數
融券餘額張數 跌停家數
現股當沖買進金額
現股當沖賣出金額
法人買賣超張數
法人持股
主力買賣超張數
主力持股
券資比
資券互抵張數
實質買盤比
實質賣盤比
現股當沖張數
統計欄位 資金流向
強弱指標
上漲家數
下跌家數
漲停家數
跌停家數
騰落指標
總市值
GDP比例

應用這些欄位,再加上原本就有support的開高低收成交量等欄位,我們就可以建構出以產業作為出發點的交易策略。

舉個例子,細產業指標中的資金流向,它的公式是

該細產業成份股成交值的總和/對應大盤指數成交值*100%

我們可以運用這個欄位,建構一個資金流向的指標如下

input:period(5,"短期移動平均天數");
input:period1(20,"長期移動平均天數");
 

value1=GetField("資金流向");//商品成交值/對應大盤指數成交值*100%
value2=average(value1,period);
value3=average(value1,period1);
value4= value2-value3;
 
plot1(value2,"短期移動平均");
plot2(value3,"長期移動平均");
plot3(value4,"dif");

 

根據上述的腳本,我們以最近很熱門的汽車零組件細產業指數為例,看一下畫出來的對照圖

040706

從上面這張圖我們會發現,3/31日Tesla 平價Model 3才剛開始預售,但3/23台灣的汽車零組件指標的資金流向就已經開始出現黃金交叉了。

我們可以把上述的指標腳本改寫成警示腳本,尋找那些資金流向翻紅且股價上漲的細產業

input:short1(5),mid1(20);
setinputname(1,"短期平均");
setinputname(2,"長期平均");
value1=GetField("資金流向");
value2=average(value1,short1);
value3=average(value1,mid1);
value4=value2-value3;
value5=GetField("總市值");
if value4 cross over 0 and value5 >value5[5]*1.025
then ret=1;

 

除了可以建構尋找細產業買賣點的自訂指標及策略之外,在選股方面,提供了兩個跟產業相關的功能

一,XS提供了同產業排行這樣的選股條件,讓user可以透過這些條件,挑出屬於特定行業特定條件排名最前或最後的股票。

例如您可以設定類似以下的選股條件

040702

 

要特別說明的是,在這裡可以作為排名基礎的,共有四級,分別是全市場,同行業組,同行業及同子行業。

其中產業的部份共分成三類,分類的方式主要是Follow  GICS的產業分類中的第二層,第三層,然後再對應到XQ的細產業分類作為最後一層,以能源產業為例,我們的分類就如下面這張圖

040704

透過這樣的分類,行業組對應的是GICS的中產業分類,行業對應的是GICS的產業分類,子行業就是XQ自行分類的細產業。

二,XS以產業視野來設定的選股策略是同行業的上中下游股價指標,XQ系統上原本對每一檔股票,都會找出它的上游,同業及下游企業,這些企業不一定是台股,也可能是美股,A股等等,我們把這些企業,用漲跌幅簡單平均的計算方式,編制成價格指數,如此一來,每檔股票,每一天都可以計算出其上游,同業及下游股票的價格指標,如此一來,我們就可以每天找出任何一檔,其上游,中游或下游企業股價出現異常波動的個股,例如我設定如下圖的選股條件

040705

就可以找到上游,同業或下游價格波動異常的個股了。

 

透過產業排行,上中下游價格指標及細產業指數,XS程式交易平台提供了其他平台所無法提供的產業視野,特別是在今年這種行業趨勢多空分歧的時候,我們不妨多透過產業的語法,先挑出由空翻多的產業,再去尋找該產業裡的龍頭公司。

 

 

 

當DMI遇上VHF

DMI大家很常用,不過跟大部份的趨勢指標一樣,踫到盤整就GG。 今天我想介紹一個VHF指標,這個指標能過濾盤整的情況,我們可以把這兩個指標合起來一起使用,來過濾掉盤整時DMI所出現的交易訊號。

 

DMI是一個很常用的指標,從下面這張圖可以很清楚地看到,它代表的每天多頭新攻佔的地盤,與空頭新斬獲間的角力。

dmiiDMI相關的數據,我們用了directionmovement這個函數來計算

// DirectionMovement function (for DMI相關指標)
// Input: length
// Return: pdi_value(+di), ndi_value(-di), adx_value(adx)
//
input: 
 length(numericsimple),
 pdi_value(numericref),
 ndi_value(numericref),
 adx_value(numericref);
 
variable:
 padm(0), nadm(0), radx(0),
 atr(0), pdm(0), ndm(0), tr(0),
 dValue0(0), dValue1(0), dx(0),
 idx(0);

if currentbar = 1 then
 begin
 padm = close / 10000;
 nadm = padm;
 atr = padm * 5;
 radx = 20;
 end
else
 begin
 pdm = maxlist(High - High[1], 0);
 ndm = maxlist(Low[1] - Low, 0);
//先算出pdm及ndm
 if pdm < ndm then
 pdm = 0
 else 
 begin
 if pdm > ndm then
 ndm = 0
 else
 begin
 pdm = 0;
 ndm = 0;
 end; 
 end;
//那一邊的力量比較大,另一邊就以零來計算
 if Close[1] > High then
 tr = Close[1] - Low
 else 
 begin
 if Close[1] < Low then
 tr = High - Close[1]
 else 
 tr = High - Low;
 end;
//  計算true range
 padm = padm[1] + (pdm - padm[1]) / length;
 nadm = nadm[1] + (ndm - nadm[1]) / length;
 atr = atr[1] + (tr - atr[1]) / length;
 
 dValue0 = 100 * padm / atr;
 dValue1 = 100 * nadm / atr;
 
 if dValue0 + dValue1 <> 0 then
 dx = AbsValue(100 * (dValue0 - dValue1) / (dValue0 + dValue1));

 radx = radx[1] + (dx - radx[1]) / length;
 end;

pdi_value = dValue0;
ndi_value = dValue1;
adx_value = radx;

 

 

而透過上述的計算公式,我們可以了解,DMI是透過多空雙方的力量變化,來呈現何者佔上風。

但在盤整的時候,DMI會因為多方或空方一時的表現,而呈現相互交叉的鋸齒狀走勢,
這代表了多空拉鋸,但在這種時候,如果貿然也以+DI突破-DI為買進訊號,或者 -DI突破
+DI為買進訊號,那麼就很突易出現過度交易的現象。

這時候市場老手們就引進了VHF這個指標,用它來過濾掉一些DMI在盤整時可能出現的假訊號。

VHF的全名是垂直水平過濾指標,它是把一段時間以來的最高點減去一段時間以來的最低點,然後去除以這段時間每天漲跌的絕對值的總和。

對應的腳本如下:

// XQ: VHF指標
//
input: Length(42);
Variable: hp(0), lp(0), numerator(0), denominator(0), _vhf(0);

SetInputName(1, "天數");

hp = highest(Close, Length);
lp = lowest(Close, Length);

numerator = hp - lp;
denominator = Summation(absvalue((Close - Close[1])), Length);

if denominator <> 0 then
 _vhf = numerator / denominator
else
 _vhf = 0;

Plot1(_vhf, "VHF");

由於這個指標的計算方式是這麼來的,所以它的值主要是受分子與分母的影響而在以下的情況時,會有較大的波動

1。當這段時間的新高或新低改變時,不管是創新高,還是創新低,VHF的分子都會變大。

2。 當股價變動突然變劇烈,這時分母變大,VHF會急遽變小

當股價陷入盤整時,由於分子跟分母都會變小,所以VHF就不會有很大的變大。

因此,當我們把DMI跟VHF兩個指標拿來一起看時,它的原則就是: 當DMI出現交易訊號時,如果VHF有明顯的波動,那麼這個訊號可信度較高,相反地,如果DMI出現交易訊號,而VHF沒有明顯變化,那麼這個盤還是盤整的機率比較大。

下圖是加權指數過去一陣子與這兩個指標的對照圖

040601

大家不妨對照一下看看是否加了VHF之後的DMI,對於大盤的真正轉折點更能有效的呈現出來。

下圖是現在這兩個指標與大盤之間的關係,敬供參考。

040602

 

 

 

 

異同離差乖離率(DBCD)在單一國家股票型基金的應用

投資這個領域,有句千古名言:行情總在絕望中誕生,在半信半疑中成長,在憧憬中成熟,在希望中毀滅, 別人恐懼時要貪婪,別人貪婪時反而要恐懼。那麼如何去衡量貪焚與恐懼呢? 今天跟大家介紹的異同離差乖離率(DBCD)蠻適合來作為衡量的依據,特別是在衡量單一國家股票市場時,還蠻好用。

異同離差乖離率(DBCD),它的計算方式是先算出短天期跟長天期的乖離率,再用長天期乖離率去減短天期乖離率,然後再算這個數字的移動平均值。計算的方式如下

input:length1(10),length2(20),length3(14);
value1=bias(length1);
value2=bias(length2);
value3=value2-value1;
value4=average(value3,length3);
plot1(value4);

上面的腳本用了bias這個函數,我們從bias這個函數的計算方式來探討DBCD這個指標的涵意

// Bias function (for 乖離率相關指標)
//
input: length(numericsimple);

value1 = Average(close, length);
Bias = (close - value1) * 100 / value1;

 

們可以從上面的腳本看到,乖離率代表最近的收盤價到不同天期移動平均線的距離比率,所以當DBCD這個值是正的,代表價值在上漲,漲的愈陡,這個值愈大,如果這個值在下跌,代表價格在下跌,跌的愈兇,DBCD這個值負的愈大。

033102

 

我們運用這個指標來研究幾個單一國家市場目前的情況

 

033101

台股看起來,前一陣子是有點歡樂,目前正處於冷靜期,昨天外資的大手筆,能不能讓冷靜下來的情緒再被點燃,那就再看看,但至少現在絕對不是那麼長線別人恐懼我該貪婪的點。

033103

這兩天有ETF掛牌的印度,仍屬於尚未過於激情的緩昇走勢中

 

033104

跟電子股息息相關的Nasdaq指數則前陣子好像太過歡樂需要冷靜一下

 

透過這個指標,全球主要市場何處超跌,何處過於歡樂,我們都可以一目了然。

 

 

xqlite banner

 

 

 

 

 

這個盤接下來到底會不會大跌? ~ 建構專屬的大盤儀表板

大盤這幾日似乎又進入無趨勢狀態,多空看法分歧,今天我想跟大家分享我自己的大盤儀表板,這個儀表板是我在未來操作上,究竟要偏多還是偏空的依據。

去年4/28,指數最高看到10014點,然後去年8/24,最低看到7203,跌了快3000點,接下來反彈到8871點,之後又跌了1000點,然後再收復失土,指數現在又在8700點上下100點遊走,朋友都說這位置很尷尬,上去一千點就賣,下去一千點就買,在這裡就不知如何是好。

我試著用我的大盤儀表板來跟大家討論這個問題。

我在看大盤時,最核心的是先看大咖站在那一邊? 所謂的大咖主要是大股東,外資,投信及市場大戶。

首先我們來看外資,我用的腳本如下:這是去計算過去五天外資的累計買賣超及佔成交量的比例。

input: Length(5); setinputname(1,"計算天數");
input:TXT("僅適用日線以上"); setinputname(2,"使用限制");

variable: _buyTotal(0), volTotal(0);

_buyTotal = summation(GetField("外資買賣超"), Length);
volTotal = summation(Volume, Length);

Plot1(_buyTotal, "累計買賣超");
Plot2(_buyTotal * 100 / volTotal, "比例%");

根據這個腳本所畫出來的圖,目前的情況如下

032901

使用這個指標,我過去的經驗現在可以拿來用的有兩點

1.外資持續買超時這盤不大會大跌

2.但如果外資累計買超佔成交量比例達到1成以上,代表其他人開始站賣方,這種情況如果沒有很快被改善,只要外資一縮手,這盤就作頭,只要外資一番空,這盤就下去。

以這個指標來看,目前作頭的風險不低,但只要外資還買超,那就還是盤而不是跌。

接下來看投信的動向,我使用的腳本如下:跟外資一樣,是去計算過去五天投信累計買賣超及佔成交量的比例。

input: Length(5); setinputname(1,"計算天數");
input:TXT("僅適用日線以上"); setinputname(2,"使用限制");

variable: _buyTotal(0), volTotal(0);

_buyTotal = summation(GetField("投信買賣超"), Length);
volTotal = summation(Volume, Length);

Plot1(_buyTotal, "累計買賣超");
Plot2(_buyTotal * 100 / volTotal, "比例%");

投信的操作風格跟外資比較不一樣,投信的作法上比較bottom up,個別股票未來業績是否能有大成長,是投信會不會進場買股票的主要考量。

所以我們觀察這個指標時,它的應用原則是:

投信長時間佔在賣方,代表基本面沒有很好,相反的,如果投信持續買超,那就代表企業的基本面要開始翻多了。

目前這個指標的情況如下圖

 


032902

可以看得出來投信對企業獲利能力的信心不如今年年初,開始站在賣方,不過由於投信的成交量佔大盤比重不高,如果外資還在偏多,投信的賣壓只能當警訊,不必然就此翻空。

第三個我常拿來研究大盤走勢的指標是噪音指標

它的算法是以一段時間的漲幅作分母,以這段時間每天的最高減最低合計值當分子,兩者相除,再把算出來的值作移動平均,它的腳本如下:

input:n1(5); setinputname(1,"計算天期"); 
input:n2(5); setinputname(2,"移動平均天期");
 
value1=absvalue(close-close[n1-1]); 
value2=summation(range,n1); 
if value1 <> 0 then 
begin
 value3 = value2 / value1; 
 value4 = average(value3,n2); 
end;
 
plot1(value4,"噪音指標");

從這個運算的公式,我們可以發現,當股價沿著趨勢走的時候,這個噪音指標的值不會大,但如果陷入盤整時,分母會變小,這數值就會變大。

所以我們可以拿這指標跟趨勢型的指標搭配一起看,一般來說,趨勢反轉前,就像一部高速行駛的汽車要轉彎,一定會發出很大的噪音,如果趨勢指標出現反轉的訊號,而噪音指標也出現上昇的情況,那麼反轉的機率就更高了。

這個指標可以在辨識趨勢是否成形時,拿來作為一個確認的工具,也可以拿來判斷是否進入盤整。

032903從這個指標來看,之前大盤的轉彎已經完成,目前是處於下降趨勢中。

第四個指標是Aroon 指標

它的主要用途是來判斷趨勢的新生,方向與強度。

Aroon 指標的計算公式 :

這個技術指標中包括兩根線:Aroon-up和Aroon-down。

以計算週期為25日為例 :

Aroon-up=((25-價格創出25日最高價到今天的天數)/25)*100

Aroon-down= ((25-價格創出25日最低價到今天的天數)/25)*100

從以上的公式可以看出這兩根線都是在0-100之間來回運動的

我們把上述的公式改寫成以下的腳本

input:length(25); setinputname(1, "計算週期");
 
variable: aroon_up(0), aroon_down(0), aroon_oscillator(0); 

aroon_up = (length-nthhighestbar(1,high,length))/length*100; 
aroon_down = (length-nthlowestbar(1,low,length))/length*100; 
aroon_oscillator=aroon_up-aroon_down; 

plot1(aroon_up,"aroon_up"); 
plot2(aroon_down,"aroon_down"); 
plot3(aroon_oscillator,"aroon_oscillator"); 

然後畫出的圖如下: 032904

Aroon 指標的使用方法大致上有三點 :

1、新趨勢的產生:當Aroon-up上穿Aroon-down,新的上升趨勢產生;當Aroon-down上穿Aroon-up,新的下降趨勢產生。

2、趨勢的方向:Aroon-up在上,且大於70就是上升趨勢;Aroon-down在上並且大於70就是下降趨勢。

3、判斷趨勢強度:當Aroon-up與Aroon-down分開距離越大,趨勢越強勁。當這兩條線距離很近,平行移動,或小於50甚至30時,就是沒有方向的盤整期。

以目前台股的情況來看,應該說是多頭趨勢已然結束,但空頭趨勢目前還尚未成形,但如果指標再跌,空頭趨勢就會確立。

第五個指標則是 力度指標(Force Index)

force index的腳本如下:

input:length(10),length1(30);
variable:fis(0),fil(0);
fis=average(volume*(close-close[1]),length);
fil=average(volume*(close-close[1]),length1);
plot1(fis);
plot2(fil);
plot3(fis-fil);

這個指標是用每天上漲下跌的幅度去乘以成交量然後計算長短天期的平均線

它的應用原則如下:

1、以長週期Force Index 判斷長期趨勢,若長週期Force Index 在 0 軸以下,則趨勢是持續向下,若遇短週期Force Index 向上穿越0 軸 ,則為多頭信號。

2、以長週期Force Index 判斷長期趨勢,若長週期Force Index 在 0 軸以上,則趨勢是持續向上,若遇短週期Force Index 向下穿越0 軸 ,則為空頭信號。

目前的force index與加權指數的對應圖如下:

032905

根據上述的原則,大盤在三月中那根長黑就已經出現空頭信號,目前長期趨勢仍未完全翻空。

 

根據這五個指標,基本結論就是,如果這兩天再跌,則大趨勢就由多翻空了,主要的救世主是外資,如果外資也站在賣方,那就宜空不宜多了。

 

 

xqlite banner

 

 

借券相關欄位在交易策略上的應用

借券相關的統計數字,是一個窺視外資與大股東動向的管道,在使用籌碼分析相關欄位建構交易策略時,這些欄位有一定的參考價值。

什麼是借券呢? 顧名思義,就是把別人的股票借過來運用,時間到了再還人家。

為什麼要借券呢? 大約有幾種用途

1。證券市場賣出。簡單講就是看壞先借來賣出,等跌下來,股價便宜了,再補回來。

2。返還借券或證券權益補償。 借券有約定到期日,到期,可以直接借新的還舊的。

3。融券賣出之現券償還。

4。 認購(售)權證,股票選擇權或其他具有 股權性質金融商品之履約。這是發行權證的證券商會做的事。

5。因應ETF之實物申購或買回。

目前有兩個管道可以借券。

第一個是證交所借券系統,這個系統佔的比例非常高,要進到這個系統當出借人或借券人,都必須是特定機構法人。

第二個是透過券商/證金公司辦理證券借貸業務,其中能當出借人的,必須是辦理借券業務之證券商/證金公司本 身,借券人則是與證券商訂立 委託買賣契約逾三個月以上的投資人就可以。

每天每檔股票借券的相關統計數據,交易所都會公佈,目前交易所每天公佈的借券相關欄位,其中有六個,我們可以拿來撰寫腳本時使用,這六個欄位如下表:

 1. 借券張數
 2. 還券張數
 3. 借券賣出餘額
 4. 借券賣出張數
 5. 借券賣出庫存異動張數
 6. 借券餘額張數

首先,我們得先分清楚借券跟借券賣出是不一樣的,前者 是把股票借來,後者是把股票借過來而且把它賣掉,借過來不一定會賣掉,有可能是為了還券或是履約之用。

交易所其中幾個欄位有作說明,說明如下:

  1. 「借券成交」數量係指當日投資人透過證交所借券中心或向證券商、證金公司借入之證券數量。
  2. 「借券餘額」係指所借入證券尚未返還之數額;即本日「借券成交」數量加計累計至前一日尚未返還之數額再減除本日還券數量後之數額。
  3. 「借券賣出」數量係指當日投資人將已借入之證券在證券市場賣出之數量。
  4. 「借券賣出餘額」係指本日「借券賣出」數量加計累計至前一日尚未回補之數額再減除本日借券賣出回補數量後之數額。

至於借券賣出庫存異動張數則包括了「履約股數」及「還券股數」,比借券賣出餘額多了考量履約股數的部份,至於什麼是履約股數,主要是包含權證履約、可轉債履約及ETF轉換。

每當股票借券的上限,交易所是採總量管制,其規則如下:

1。每日盤中借券賣出委託數量不得超過該 種有價證券最近30個營業日日平均成 交量之20% (採盤中即時控管)

2。借券賣出餘額不得超過該種有價證券上 市(櫃)股份或受益權單位數之10%

3。融券賣出餘額與借券賣出餘額合併計算 不得超過該種有價證券上市(櫃)股份或 受益權單位數之25%。

 

以這六個借券欄位為基礎,我試著根據草根經驗,制定了幾個籌碼相關的自訂指標

1.放空佔成交均量倍數。

以往我們要衡量軋空的力道,都是看融券餘額,但現在應該要再考慮到借券賣出餘額,所以我就試著用(融券餘額+借券賣出餘額)/20日成交量移動平均*100來算出放空佔成交均量倍數,我的想法是,如果這個數字達到一定程度的個股,基本面出現好轉時,空單回補的力量,會是股價上揚的一大助力。 這個指標的腳本如下:

value1=GetField("借券餘額張數","D");
value2=GetField("融券餘額張數","D");
if volume<>0
then 
value3=(value1+value2)/average(volume,20)*100;
plot1(value3,"放空佔成交均量倍數");

參考的畫面如下:
032402
我們從上圖可以發現,當放空佔成交均量倍數到了高點之後,一旦股價止跌回昇, 空單會快速回補,並且轉成股價上漲的助力。

2.借券賣出張數減外資賣張。

由於外資賣張包括了手上持股的賣出以及借券放空的賣出,所以在正常情況下,在大部份情況下,外資賣張都會大於借券賣出張數,但如果反過來呢?

如果借券賣出張數比外資賣張大呢?

那就代表去做借券賣出這件事的人不是外資,那會是誰呢?

為了找出這樣的股票,我寫了一個選股腳本叫作借券賣出張數減外資賣張。

因為這樣的公司不多,所以我用選股腳本來挑

value1=GetField("借券賣出張數","D");
value2=GetField("外資賣張");
value3=value1-value2;
if value3>0
then ret=1;

outputfield(1,value1,0,"借券賣出張數");
outputfield(2,value2,0,"外資賣張");
outputfield(3,value3,0,"借券賣出減外資賣張");

挑出來的股票,我再仔細看看其他賣超的券商分公司,有沒有跟大股東的痕跡? 如果有,那麼我就會去追查大股東借券賣股票的背後故事。

3.借券賣出佔借券比例

借券賣出餘額張數佔借券餘額張數之間的比例,應該可以視為外資等大咖借券之後馬上放空的積極程度。

所以我就寫了一個自訂指標的腳本如下:

value1=GetField("借券賣出餘額張數","D");
value2=GetField("借券餘額張數","D");

value3=value2-value1;
plot1(value3,"借券而尚未賣出餘額");

 

然後我就發現一個很有趣的現象,

“在股價下挫的過程中,借券而尚未賣出的餘額會慢慢墊高,一旦多空反轉,這個餘額就會迅速下滑。”  代表有些外資借來準備空,如果覺得跌的差不多無利可圖了,就不借著等彈上來的空點了。

032403

4.還券張數。

還券張數是另一個觀察外資多空態度的角度。還的多代表心態上沒那麼空了,但心態沒那麼空也有可能是賺飽了獲利了結,所以當我們看到股價先前沒有再大跌,而還券張數比平常多很多,那就代表外資可能準備翻多了,如果先前是有段大跌,那麼這時候還券就算明顯增加,只能說是外資賺夠了在回補,不必然是要翻多了。

我寫了一個自訂指標來呈現還券張數的變化

input:period1(5,"短天期別");
input:period2(20,"長天期別");

value2=GetField("還券張數","D");
value3=average(value2,period1);
value4=average(value2,period2);
plot1(value3,"短期平均線");
plot2(value4,"長期平均線");
plot3(value3-value4,"差額");

我們可以從下面這張圖看到外資的還券行為,是有上述的那樣的現象

 

032404

5.借券賣出張數。

概念跟還券張數差不多,只不過一個是做多,一個是作空。

同樣的邏輯,借券賣出如果暴增而股價不跌,那往往就是股價即將止跌的現象。

這個自訂指標腳本跟還券張數很類似

input:period1(5,"短天期別");
input:period2(20,"長天期別");

value2=GetField("借券賣出張數","D");
value3=average(value2,period1);
value4=average(value2,period2);
plot1(value3,"短期平均線");
plot2(value4,"長期平均線");
plot3(value3-value4,"差額");

只是getfield的欄位不一樣,圖形的例子如下:

032405

 

如果把上面這兩個指標放在一起看,就更能看出有人獲利了結有人開新空單之間的相互關係。

032406

 

借券相關的欄位有助於我們了解外資的情況,未來若看到更多這方面的應用,再跟大家分享。

 

 

xqlite banner

 

籌碼面可以拿來運算的欄位及其相關應用

在被問到台灣原生的程式語法平台跟Mutichart,Tradestation,HTS有什麼不一樣的地方時,籌碼相關的應用是我常常提到的一個亮點,籌碼分析的應用基本上分成內外盤,委買委賣,買進賣出分公司家數,法人,資券以及每筆成交張數等幾個方面的相關欄位,以下就根據不同的資料型態,一一來報告這些台股籌碼特殊欄位,如何被應用到程式交易裡。

首先,先整理一下,在自訂指標,策略雷達及選股時,可以使用的籌碼分類大致如下圖:

籌碼分類

詳細的欄位如下表:

 

應用 分類 欄位名稱 單位 計算規則
自訂指標 外資 外資買賣超
外資買賣超張數
外資買張
外資賣張
外資持股
外資持股比例 %
投信 投信買賣超
投信買賣超張數
投信買張
投信賣張
投信持股
投信持股比例 %
自營商 自營商買賣超
自營商買賣超張數
自營商買張
自營商賣張
自營商持股
自營商持股比例 %
法人 法人買賣超
法人買賣超張數
法人買張
法人賣張
法人持股
法人持股比例 %
主力 主力買張 前十五大買超或賣超券商的買超或賣超張數
主力賣張
主力買賣超張數
主力持股
散戶 散戶買張 券商分公司單一價格買或賣成交值小於50萬的合計張數
散戶賣張
散戶買賣超張數
實戶 實戶買張 券商分公司單一價格買進成交值大於等於50萬且小於100萬的合計張數
實戶賣張
實戶買賣超張數
控盤者 控盤者買張 券商分公司單一價格買進成交值大於100萬的合計張數。
控盤者賣張
控盤者買賣超張數
融資 融資買進張數
融資賣出張數
融資增減張數
融資餘額張數
融資使用率 %
現金償還張數
融券 融券買進張數
融券賣出張數
現券償還張數
融券增減張數
融券餘額張數
融券使用率 %
當沖相關 資券互抵張數
現股當沖張數
現股當沖買進金額
現股當沖賣出金額
當日沖銷張數 現股當沖+資券互抵
借券 借券張數
還券張數
借券賣出餘額
借券賣出張數
借券賣出庫存異動
借券餘額張數
內外盤 內盤均量
外盤均量
券商進出表 買家數 買進張數或賣出張數大於零且另一方為零的券商分公司家數
賣家數
分公司買進家數 買進張數或賣出張數大於零的券商分公司家數
分公司賣出家數
分公司淨買超金額家數
分公司淨賣超金額家數
分公司交易家數
買進公司家數 買進張數或賣出張數大於零的整體券商家數
賣出公司家數
籌碼應用 券資比 %
控盤者成本線
主動買力
主動賣力
主動性交易比重 %
實質買盤比 %
實質賣盤比 %
收集派發指標 分公司賣出家數-分公司買進家數
選股專用 董監 董監持股佔股本比例 %
董監持股
董監事就任日期
股本形成 現金增資佔股本比例 %
盈餘轉增資佔股本比例 %
公積及其他佔股本比例 %
信用交易 融資餘額佔股本比例 %
融券餘額佔股本比例 %
融券最後回補日 日期
集保張數 集保張數 萬張
集保張數佔發行張數比 %
特殊日期 新股上市日 日期
現增新股上市日 日期
減資日期 日期
減資最後過戶日 日期
籌碼應用 籌碼鎖定率 % 主力買超/(發行張數-董監持股張數)
自營商 自營商自行買賣買張
自營商自行買賣賣張
自營商自行買賣買賣超
自營商避險買張
自營商避險賣張
自營商避險買賣超
報價欄位 開盤 開盤委買
開盤委賣
委託單 委比 % (總委買-總委賣)/(總委買+總委賣)
總委買
總委賣
委買
委賣
委買1
委買2
委買3
委買4
委買5
委賣1
委賣2
委賣3
委賣4
委賣5
委買賣差

這麼多的欄位,要如何在設計腳本時拿來使用呢?

作法上跟取得其他欄位的方法是一致的,都是運用getfield這個語法,例如我們如果想要拿”控盤者成本線”這個欄位來畫圖,腳本可以這麼寫:

value1=GetField("分公司買進家數");
value2=GetField("分公司賣出家數");
value3=GetField("分公司交易家數");

plot1(value1,"分公司買進家數");
plot2(value2,"分公司賣出家數");
plot3(value3,"分公司交易家數");

這樣一來就可以把這些籌碼相關的欄位變成自設指標畫在圖上了。

這麼多的籌碼欄位,應該如何應用呢? 底下這張圖可以做個參考。基本上,大股東及法人站在買方,後市看好的機率大些,反之則下跌的機率較高。

籌碼圖

那麼要如何分辨今天大股東及法人是站在買方或賣方呢?

未來幾天,我們來陸續介紹各種這些籌碼欄位的運用方法,來分辨大股東及法人,主力是站在買方還是賣方

今天,先來介紹的這個方法,是結合法人進出表及分公司進出表兩個不同的公佈數字,很單純地就只看每一天的買盤來源:

籌碼一

我設計的腳本如下:

input:period(5,"短移動平均線天期");
input:period1(20,"長移動平均線天期");
value1=GetField("主力買張");
value2=GetField("實戶買張");
value3=GetField("散戶買張");
value4=GetField("控盤者買張");
value5=GetField("法人買張");
value6=value1+value2+value3+value4+value5;
//合計的買張數當分母,這有可能超出成交量
value7=value1+value4+value5;
//主力+法人+控盤者的買張合計作為大戶的買張
if value6<>0
then value8=value7/value6*100;
//計算大戶買張佔各方勢力買張的比例
value9=average(value8,period)-average(value8,period1);
if value9>0
then 
begin
value10=value9;
value11=0;
end
else
begin 
value11=value9;
value10=0;
end;
plot1(value10);
plot2(value11);

我稱這個指標為買張大戶散戶分佈線,我把最近大家比較關注的股票用這個指標來呈現目前大戶法人主力是站在買方還是賣方?

032202

032203

032204

從上面這幾張圖就可以發現,我們其實透過散戶與大戶佔買張比例的變化,可以清楚的看到當大戶比重持續上昇時,籌碼被收集後股價都較有表現的機會,反之則都屬於偏空或盤整的格局。

從這個例子我們就可以發現,當我們把所有可以拿來作運算的籌碼欄位都攤開來時,擷取其中一些欄位,加以運算,往往就可以自行創造出一些有意義且具有參考價值的指標,再從指標的共同特徵中進一步撰寫出創新的交易策略,把籌碼分析裡的龐大數據轉換成可以拿來決定交易策略的工具,這樣創造出來的策略,再和其他透過價量等數據所創造出來的交易策略結合,目標就是希望創造出勝率更高的交易策略,這種使用更多客觀數據來作交易決策的方法,就是孫子兵法中的”多算勝,少算不勝”的道理吧。

032205

 

 

 

xqlite banner

好公司的特徵

看到一篇寫的很好的文章,推薦給朋友們

http://www.stockfeel.com.tw/%E5%BE%9E%E9%96%B1%E8%AE%80%E5%84%AA%E8%B3%AA%E5%85%AC%E5%8F%B8%E9%96%8B%E5%A7%8B%EF%BC%8C%E7%B7%B4%E7%BF%92%E4%BB%A5%E4%B8%8D%E5%90%8C%E8%A7%92%E5%BA%A6%E6%80%9D%E8%80%83%E4%BA%8B%E6%83%85/

這篇文章來自stockfeel這個網站,這裡的文章寫的真的不錯,能對我們的投資思考有所啟發。

這篇文章的主軸是,就算覺得股價太貴不想買,但還是可以研讀一下那些成功公司的財報,了解這些公司成長的過程,找到一些蛛絲馬跡,再把這些蛛絲馬跡,應用在那些正準備冒出頭的公司上,讓我們可以在新興好公司才剛冒出頭時,就挑到他們。

從這篇文章裡,我學到了一些尋找明日之星的方法。

1。找擁有定價能力(pricing power),高投資報酬率的公司。

2。尋找那些費用在下降,但營收在成長的公司,來自營運的現金流量在成長的公司。

3。尋找有規模經濟的商業模式,並且比別人提早看到未來會勝出的公司。

 

我試著用一些簡單的選股標準來尋找符合上述條件的股票

1。毛利率穩定。擁有定價能力的公司,毛利率應該丕至於持續下滑。

2。ROE達一定水準。高投資報酬率的公司,ROE不會太差。

3。來自營運的現金流量穩定成長中。

4。營收成長,但營業費用在減少。

我先試著尋找那些毛利率沒啥掉的公司,所以我寫了一個腳本如下:

value1=GetField("營業毛利率","Q");
input:ratio(10,"毛利率單季衰退幅度上限");
input:period(10,"計算的期間,單位是季");

if trueall(value1>value1[1]*(1-ratio/100),period)
then ret=1;

如果再加上連續兩年來自營運之現金流量成長的條件,符合的股票只剩下68檔,名單如下:

032101

若是我換另一個角度,去尋找那些營收上昇且費用在降低的股票,於是我就寫了一個腳本如下:

value1=GetField("營業收入淨額","Q");//單位百萬
value2=GetField("營業費用","Q");//單位百萬
input:period(5,"計算的季別");
input:count(2,"符合條件之最低次數");

if countif(value1>value1[1]and value2<value2[1],period)>=count
then ret=1;

這個腳本如果參數是設過去七季有三季以上營收成長費用衰退時,共挑出了72檔股票,名單如下:

032102

如果把這兩個條件合在一起,腳本可以這麼寫

value1=GetField("營業毛利率","Q");
value2=GetField("營業收入淨額","Q");//單位百萬
value3=GetField("營業費用","Q");//單位百萬
input:ratio(10,"毛利率單季衰退幅度上限");
input:period1(10,"計算的期間,單位是季");
input:period2(5,"計算的季別");
input:count(2,"符合條件之最低次數");

if trueall(value1>value1[1]*(1-ratio/100),period1)
and 
countif(value2>value2[1]and value3<value3[1],period2)>=count
then ret=1;

這樣挑出來的股票共有十八檔,名單如下:

032103

透過這樣的方式可以節省不少一檔檔挑個股的時間,不過像有沒有經濟規模這種篩選條件,就有賴於仔細去了解該公司所處產業才能知曉的。

 

Anyway,讀到一篇好文章,是幸福,用好文章寫出選股程式,是更大的幸福,寫完後可以分享給大家參考,是大大的幸福。

 

xqlite banner

 

設定交易策略一定要記得不能逆天而行

我認識的市場大咖分兩種

我用一張圖來表示

032001

第一種連去歐洲玩,都會打國際電話回來問我NB能不能裝XQ

第二種則是有行情就很活躍,一天打好幾通電話來,沒行情的時候,只能從FB上知道他一下子在大陸,一下子在京都,一下子在意大利。

就我的觀察,第一種的績效不見得優於第二種。

當XS的回測功能出來時,我就想要來印證一下,到底那一種操作的風格能賺到錢。

我先拿他們都很愛作的有量的股票來作為回測的標的,我把台灣100+中型100+電子100的成份股拿來做為測試的股票,由於三個指數成份股有重疊,所以加起來共是190檔。

接下來我用他們都很愛用的操作策略: 開盤五分鐘線三連陽

input:TXT("僅適用60分鐘線以內"); setinputname(1,"使用限制");

if barfreq = "Min" and barinterval <= 60 and
 (time[2] = 84500 or time[2] = 90000) and
 Close > Close[1] and Close[1] > Close[2] and
 Close[2] > Open[2] 
then ret=1;

如果我把這個腳本拿去回測三年的資料,回測的結果如下:

全測結果

真的是家裡再有錢都不夠輸。一共交易了3312次,一次交易成本千分之五,光全部的交易成本就佔了1600%,就算勝率其實沒太差,有49.49%,但還是討不到什麼便宜

 

如果我只在加權指數站穩月線時才用這個策略去交易,最近一段回測的結果如下:

多頭

 

一個多月投資報酬率達到37.5%,且勝率拉高到66.88%,如果停利放大到5%,停損縮小到2%,那麼勝率會降到51%,但總報酬率會擴大到71%

 

跟大家舉這個例子,是想跟大家提醒,我們走向程式交易這條路,千萬不要有那種一隻程式要春夏秋冬都適用,打遍天下無敵手的念頭,而且要有大勢,選股,決定交易時機各用不同程式的基本思維,唯有如此,才能真的找到財富自由的那一條路。

 

xqlite banner

 

尋找那些創過去五年同月份營收新高的股票

當月營收公佈時,我們會知道跟去年同期相比的年增率,也知道跟上個月相比的月增率,可是如果我們要找那些比較長線可能有轉機的公司,我們應該找出那些當月營收創過去五年同月份營收新高的公司。

怎麼找出這樣的公司呢? 我寫了一個選股的腳本如下:

array: numarray[5](0);
variable:x(0);
for x=1 to 5
numarray[x]=GetField("月營收","M")[(x-1)*12];
if numarray[1]=highestarray(numarray[1],5) then
ret=1;

在這個腳本中,我第一次用到陣列來寫腳本,主要是用陣列來定義最近一個月營收與過去四年同月份的營收,然後找出這五個值當中最高的就是最近這一個的股票。

用這個腳本來跑最近公佈的月營收數字,會發現二月份營收創過去五年二月營收新高的股票共有261檔,名單如下:

031801

 

上面的每一檔股票,他們的歷年月營收一到十二月走勢圖,都像下面這一張圖一樣,最近一個月的營收是創五年來的新高

031802

 

 

在這麼多檔股票中,如果我們擔心這個月營收的好表現是因為上個月出貨不及遞延到這個月造成的,那麼我們可以把條件限制的更嚴,挑那些最近兩個月的營收都創下當月五年來新高的股票,那麼腳本就可以略為修改成以下的樣子

array: numarray[5](0);
variable:x(0);
for x=1 to 5
numarray[x]=GetField("月營收","M")[(x-1)*12];
if trueall(numarray[1]=highestarray(numarray[1],5),2) then
ret=1;

透過這兩個腳本,我們就可以在第一時間找到那些可能已經脫胎換股的公司。

 

 

xqlite banner