Author Archives: 發財橘子

雲端策略中心精進版之7~分點進出異常賣出訊號

昨天介紹了籌碼不斷集中的過程中,如果股價出現重挫,主力在接下來的幾天,會試著把股價拉回到其原來的持股成本之上,那反過來呢? 如果籌碼不斷在發散的股票,股價受大盤影響而急拉,會不會讓原本就在賣股票的主力大戶公司派賣的更用力呢? 這就是我們今天要探討的主題。

根昨天一樣,我們用來判斷籌碼發散還集中的根據,是買進與賣出分公司家數的變化趨勢。

當最近十天買進分公司家數的趨勢是往上,代表愈來愈多分公司有客戶在買進這檔股票,同樣的,當最近十天賣出分公司家數的趨勢往下,代表就是小數的分點在供應籌碼,如果這兩件事同時發生,代表的就是籌碼從少數人手中往多數不特定散戶的手裡發散。

如果在這種情況發生時剛好出現股價上揚,後市會怎麼走呢?

跟昨天一樣,我們可以寫一個交易策略腳本如下:

input:period(10);
value1=GetField("分公司賣出家數")[1];
value2=GetField("分公司買進家數")[1]; 
if GetSymbolField("tse.tw","收盤價","D")
<average(GetSymbolField("tse.tw","收盤價","D"),10)
then begin
if linearregslope(value1,period)<0
//賣出的家數愈來愈少
and linearregslope(value2,period)>0
//買進的家數愈來愈多

and value2>300
and close>close[period]*1.05
//但這段期間股價在漲
and
close>close[1]*1.025
//今天又漲超過2.5%
then ret=1;
end;

這是一種邊拉邊出的概念,當股價出現這樣的情況時,我們把這個策略以下面的回測設定來跑三年的資料

091108

 

由於主力會染指的,基本上是屬於有流動性且股本較小的股票,所以我們用有量的中小型股來跑,

回測報告

091107

 

在設定進場後五天出場的情況下,如果作空,在大盤空頭市場的情況下,勝率也超過六成。

 

從昨天跟今天的實證數字來看,籌碼的流向,確實是我們在研判短線後市時,一個很重要的參考,特別是壓低進貨及拉高出貨時。

 

xqlite banner

 

 

 

雲端策略中心精進版之6~分點進出異常買進訊號

在研究籌碼的過程中,我發現,如果一檔股票出現籌碼被持續收集的情況,但這時候股價出現重挫,籌碼收集者往往會覺得機不可失,股價也因此短期出現回升的情況,今天要跟大家介紹的,就是如何讓電腦在這種股票出現時,可以在第一時間就通知我們。

要挑出這種股票,兩大篩選條件

1.籌碼被吸納。

2.短線重挫

我試著寫了一個腳本,希望能符合下列四點

1.用線性迴歸的函數,去尋找過去十天分公司賣出家數愈來愈多,但分公司買進家數愈來愈少的股票。

2.在十天內股價下跌超過5%且今天又比昨天下跌超過3%

3.賣出的分公司超過300家

4.大盤屬於多頭格局

以下就是我根據上述四點所寫的腳本

input:period(10);
value1=GetField("分公司賣出家數")[1];
value2=GetField("分公司買進家數")[1]; 
if GetSymbolField("tse.tw","收盤價","D")
>average(GetSymbolField("tse.tw","收盤價","D"),10)
then begin
if linearregslope(value1,period)>0
//賣出的家數愈來愈多
and linearregslope(value2,period)<0
//買進的家數愈來愈少

and value1>300

and close*1.05<close[period]
//但這段期間股價在跌
and
close*1.03<close[1]
//今天又跌超過3%
then ret=1;
end;

接下來我把這個腳本拿去跑三年的回測,我設定股票是那些市值大於100億元,但少於800億元的股票,因為這些股票比較不會受外資及主力騙線的左右,另外我出場設定為進場後十天,因為基本上這還是算是短線的交易策略。

091111

以下是回測報告

091112

符合這麼嚴苛條件的交易次數並不多,過去三年一共才48次,平均一年只有16次,但勝率超過六成。

 

顯示這樣的思考方向是可行的,當主力在吸納籌碼的過程中,股價出現明顯回挫時,代表主力過往買進的成本比市價高,主力處於被套牢的狀況,在接下來的兩週,主力持續買進並且把股價往成本區靠近的機率是相對大的。

各位不妨再調整一下計算的期間或跌幅,試著找出最合適您自己的參數

 

xqlite banner

 

 

 

雲端策略中心精進版之5~股價突破開盤委買大單成本區

“開盤委買張數”是一個很值得留意的數據,它代表經過一個晚上所有多空因素的沈澱之後,隔一日到底有多少委託張數,願意在開盤時,站在買方,我們常說反常必有妖,如果這個數字跟開盤委賣張數相比,拉開比平常還大的差距,就很值得我們留意。

為了找到符合上述情況的股票,我們寫了一個腳本如下

if GetSymbolField("tse.tw","收盤價","D")
>average(GetSymbolField("tse.tw","收盤價","D"),10)
//大盤處於多頭格局
then begin
value1=GetField("開盤委買","D");
value2=GetField("開盤委賣","D");
value3=value1-value2;
//開盤委買張數減去開盤委賣張數
if trueall(value3[1]<150,5)
//過去五天差距都小於150張
and value3>=300
//今天差距超過300張
and close<close[3]*1.07
//股價比三天前漲幅不到7%
then ret=1;
end;

我用市值適中的股票(總市值大於100億但小於800億)去跑回測,持有兩天後出場,回測報告如下:

091106

值得留意的是勝率達到58%,代表開盤委買減去委賣的差額,一旦比平常大,在多頭市場時,往往是短線轉強的一個跡證。

 

 

 

xqlite banner

 

 

 

雲端策略中心精進版之4~主力偷偷收集籌碼後攻堅

上一篇我們試著尋找那些主力大戶偷偷賣股票的標的,今天我們反過來尋找那些主力大戶在持續吸收籌碼的股票。

我們假設,當分公司賣出家數比分公司買進家數多很多時,代表各券商都有人在賣,但只有少數券商有人偷偷的在買,也代表籌碼從多數人手中往特定人手裡集中。

於是,我們可以寫出像以下的腳本

input:period(10,"籌碼計算天期");

Value1=GetField("分公司買進家數","D");
value2=GetField("分公司賣出家數","D");
value3=(value2-value1);
//賣出的家數比買進家數多的部份
value4=average(close,5);
//五日移動平均
if getsymbolfield("tse.tw","收盤價")
>average(getsymbolfield("tse.tw","收盤價"),10)
then begin
 if period<>0
 then begin
 if countif(value3>30, period)/period >0.7
 and linearregslope(value4,5)>0
 then ret=1;
 end;
end;

在上述的腳本中,跟前一個主力偷偷調節的寫法不一樣的是,我是設定五日移動平均線的趨勢是向上的,原因是,公司派可能在股價下跌的過程中去護盤,這種籌碼的吸納不代表後續的攻堅,但如果是在股價上昇的趨勢中仍追價吸納,我認為接下來往上攻的機率會比較大。

回測設定的部份,我用的是有量的中小型股票,它的選股條件是

1.近100日均量大於1000張

2.股本小於40億

091104

用上述的設定去跑回測,回測報告如下:

091103

 

我覺得這個腳本的最大意義在於,最大連續虧損跟最大區間虧損,都不會大到讓我們來不及賺到錢就先輸個精光。

後來我把股價的趨勢拿掉,單純尋找過去十天中,券商賣出家數比買進家數多三十家以上的天數超過七成的,結果發現,勝率更高,風險更低。

 

也就是說,不管股價這十天是漲還是跌,只要持續出現籌碼吸納的情況,後市就值得留意。

各位不妨改變一下計算的天數來看看勝率會不會更高。

雲端策略中心精進版之3~主力偷偷調節持股後下殺

在空頭市場時,不大賺錢的中大型股,如果過去十天裡有一半以上的日子裡,籌碼是在發散,而且短期的股價走勢也是向下,這時候採取短空的交易策略,是一個勝率還不錯的空頭操作法。

要找出符合上述情況的標的,運用的腳本如下:

input:period(10,"籌碼計算天期");

Value1=GetField("分公司買進家數","D");
value2=GetField("分公司賣出家數","D");
value3=(value1-value2);
//買進家數減去賣出家數,代表籌碼發散的情況
value4=average(close,5);
//計算發散程度的五日移動平均

if getsymbolfield("tse.tw","收盤價")
<average(getsymbolfield("tse.tw","收盤價"),period)
//大盤區間是下跌的
then begin
 if period<>0
 then begin
 if countif(value3>10, period)/period >0.6
//區間裡超過六成以上的日子主力都是站在出貨那一邊
 and linearregslope(value4,5)>0
//發散程度之五日移動平均線短期趨勢是向上
 then ret=1;
 end;
end;

把這個腳本拿來用不大賺錢的中大型股來執行短空策略,停利7%,停損5%,最大的持有期間是5期,過去三年的回測報告如下:

091201

 

這裡所謂的不大賺錢的中大型股,它的選股條件如下:

1.最新股本大於10億

2.連績3年每股稅後淨利都小於0.7元

這樣的選股條件搭配這樣的交易策略,從過往三年的回測數字來看,有六成的勝率。

 

xqlite banner

 

 

雲端策略中心精進版之2~股價領先大盤創新高

市場有不少的中小型股, 在沒有題材時,無人青睞,股價隨著大盤載浮載沈,但如果突然股價相對大盤,可以展現難得的相對強勢,且這樣的強勢也不是像曇花一現般稍緃即逝,那麼往往是一個波段行情的起點。 今天要介紹的交易策略,要找的,就是這樣的股票。

首先我們先來看看一個自訂指標,我稱之為相對大盤強度指標,它的寫法如下:

 

input: Length(20, "布林通道天數");
input: BandRange(2, "上下寬度");
variable: up(0), down(0);

value1=close/GetSymbolField("TSE.TW","收盤價");

up = bollingerband(value1, Length, BandRange);
down=bollingerband(value1,length,-bandrange);
plot1(up,"BB上限");
plot2(down,"BB下限");
plot3(value1,"相對強度");

這個指標的概念是,把個股與加權指數的比值,跟這個比值算出來BBand的上下限,這裡 我們用的bandrange是2,也就是兩個標準差,根據統計理論,如果股價是常態分配的話 ,這個數字位在上下限中間的機率是95.44%,也就是說,當個股的基本面沒有太大變化 ,股價隨機伴著大盤時漲時跌時,這個比值應該會落在bband的上下限中間。 反過來說,當股價開始因為個別的因素要走自己路的時候,這個比值就會突破bband的上 限,且不只一天。 例如我們以這幾個月來漲勢驚人的金居為例 091102在它波段上漲之前,是一檔隨著大盤載浮載沈的股票,但當它開始要展開波段行情時 ,股價跟大盤的比值,連續多日站上其bband的上限。 根據這樣的邏輯,我們把原本雲端策略中心中的”股價領先大盤創新高” 這個交易策略 ,它的腳本改寫成如下:

if GetSymbolField("TSE.TW","收盤價")
>average(GetSymbolField("TSE.TW","收盤價"),10)
then begin

input: Length(20, "布林通道天數");
input: BandRange(2, "上下寬度");
variable: up(0);

value1=close/GetSymbolField("TSE.TW","收盤價");

 
up = bollingerband(value1, Length, BandRange);

condition1 = trueall(value1 >= up, 3);
condition2 = average(GetSymbolField("TSE.TW","收盤價"),5) > average(GetSymbolField("TSE.TW","收盤價"),20);

ret = condition1 and condition2 ;

end;

我用這個腳本,用有量的中小型股去跑三年的回測,以60天後的收盤價作出場價,回測報告如下: 091101

勝率接近57%,平均報酬率是8%,如果以大盤轉空時停損,勝率及報酬率會更高。 中小型股持續性地轉強,是波段行情的號角,我們用統計數字得到了證明。

xqlite banner

跌不下去的高殖利率股

 

 

這個策略的目的,是在尋找那些一陣子沒有再破底的高殖利率股。也就是去找那些股價跟配的股利相比,相對便宜,而且最近沒有再破底的股票。我們在設計這個策略時,希望電腦跑出來的股票符合幾個條件

1.股票殖利率超過10%

2.股價已經一陣子沒有再破底

3.股價還沒有漲的太兇

根據上述的原則,我們定出的選股條件如下

2018111401

其中的選股腳本如下

// 作多, 最大持有期別20
input:N(10);
condition1 = L = Lowest(L,N);
condition2 = H = Highest(H,N);
 if condition2
 //股價創區間以來高點
 and TrueAll(Condition1=false,N)
 //這段區間都未破底
 and close<close[N-1]*1.05
 and volume>600
 //區間股價漲幅不大
 then ret=1;

這個腳本基本上就是找出過去十天沒有再破底,股價創近十日新高,但區間漲不大的股票。

再搭配高殖利率及法人買超兩個選股條件

拿這個選股策略去回測過去三年,出場訂為進場後20天,回測報告如下

2018111402

從回測報告來看,這是一個三戰兩勝的選股策略。

 

 

 

從最新公佈月營收挖寶的十個方法

又快到每月的十號了,依慣例,這時候我們要留意即將公佈的8月份營收,過去我曾經介紹過不少用月營收挑股票的方法,今天我想做個比較完整的整理,列出十個我用這個數字選股的方法。

在XS選股平台中,可以被拿來運算的關於月營收的數據一共有三個

1.月營收(單位:億)

2.月營收月增率(%)

3.月營收年增率(%)

要拿這三個數據來運算,我們也是用Getfield的語法,另外系統提供了Getfielddate的語法,可以呈現最新月營收公佈的期別。

例如我們想要挑出月營收年增率大於零的股票,我們就可以寫出以下的腳本:

value1=GetField("月營收年增率","M");
value2=GetFieldDate("月營收","M");
if value1>0
then ret=1;
outputfield(1,value1,2,"月營收年增率");
outputfield(2,value2,0,"最新公佈的月份");

用這個腳本,就可以找出所有月營收年增率大於零的股票,也可以排序,並且知道這裡的數據是那一個月份的營收數字。

比較遺憾的是,目前XS系統裡的月營收,為了考慮排行的功能,都必須等到大部份的公司公佈最新營收時才會一起更新,其實如果有Getfielddate的語法,user可以自己清楚目前所引用的營收是那個月份的營收,應該是要可以做到公司在10號之前公佈,就可以馬上被更新。

(我有建議系統修改這個功能,希望很快就可以提供這樣的服務。)

有了月營收等三個數字,我們可以在每個月透過不同的運算法,檢視公司的最新營運狀況,我列了十個自己常用的方法,供大家參考。

一,月營收創一段期間以來新高

input:N(37, "期別"); 
value1=GetField("月營收", "M");
value2=GetField("月營收月增率","M");
value3=GetField("月營收年增率","M");
value4=GetFieldDate("月營收","M");
if value1=Highest(value1,N)
//月營收創37期新高
and trueall(value2>0,2)
//月營收月增率近兩個月都>0
and trueall(value3>0,2)
//月營收年增率近兩個月都>0
then ret=1; 
outputfield(1,value4,0,"最新月份");

為了避免因為入帳時間的差異而造成假性新高,所以加上最近兩個月營收月增率及年增率都需大於零的條件

二,月營收創一段時間以來新低

input:N(37, "期別"); 
value1=GetField("月營收", "M");
value2=GetField("月營收月增率","M");
value3=GetField("月營收年增率","M");
value4=GetFieldDate("月營收","M");
if value1=lowest(value1,N)
//月營收創37期新低
and trueall(value2<0,2)
//月營收月增率近兩個月都<0
and trueall(value3<0,2)
//月營收年增率近兩個月都<0
then ret=1; 
outputfield(1,value4,0,"最新月份");

設計的概念如第一個腳本

三,月營收年增率加速

這個概念是去計算月營收年增率的12個月平均及四個月平均,當短期平均線突破長期平均線時,代表月營收年增率增加的速度在加快當中

腳本的寫法如下:

value1=GetField("月營收年增率","M");

if average(value1,4) crosses over average(value1,12)
then ret=1;

短期平均用四個月的目的在於消彌掉季節性因素的影響

四,總市值月營收比值在翻轉中的股票

總市值月營收比值代表市場對個別公司的信心度,這個比值如果開始穩定翻轉且搭配營收回昇,代表的是市場的信心及公司的基本面同步回復中

我寫的參考腳本如下:

value1=GetField("總市值","M");//單位:億元
value2=GetField("月營收","M");//單位:億元
if value2<>0
then 
value3=value1/value2
else
value3=0;

if trueall(value3>value3[1],3)//過去三期都上漲
and value3[3]<value3[4]
and value3[4]<value3[5] //之前兩期是下跌
and value2>value2[1]//月營收成長
then ret=1;
outputfield(1,value3,2,"總市值/月營收");
outputfield(2,value3[1] ,2,"前1期值");
outputfield(3,value3[2],2,"前2期值");
outputfield(4,value3[3],2,"前3期值");
outputfield(5,value3[4],2,"前4期值");

這個數值如果在回昇,代表股價回昇的速度比營收成長的速度還快,不過這個腳本是用月當頻率,如果很在意日股價的變動的,可以改成以日頻率來運算。

五,月營收推估出來的低本益比股

這是假設公司的最新單月營收會持續維持12個月,且未來十二個月的營業利益率都不變,以最新單月營收來推估EPS,進而推算出來的本益比

參考的腳本如下:

value1=GetField("月營收","M");//單位:億元
value4=GetField("營業利益率","Q");
value5=GetField("最新股本");//單位:億元
condition1=false;
condition2=false;
input:peraito(12,"預估本益比上限");
if value5<>0
then
value6=(value1*value4*12)/(value5*10);//單月營收推估的本業EPS
if value6<>0
then 
value7=close/value6;

if value7<peraito and value7>0

then ret=1;
outputfield(1,value7,0,"推估本益比");

六,連續N個月單月營收比上一個月成長

如果一家公司能夠連續好幾個月營收都比上個月成長,通常代表有了新的動力,由於我們有二月農曆春節放假的因素,所以公司不大可能連續12個月成長,所以我N通常都設在4-6之間。

參考的腳本如下:

input:period(5,"計算區間");
if trueall(GetField("月營收月增率","M")>0,period)
then ret=1;

七,月營收三個月的年增率平均呈兩位數成長

單個月的營收年增率兩位數成長,可能是入帳的落差,但如果連續三個月的平均能維持兩位數成長,那就代表這家公司確實今年表現的比去年好

參考的腳本如下:

input:period(3,"計算區間");
if average(GetField("月營收年增率","M"),period)
>=10
then ret=1;

八,累計營收年增率在加速中

公司的營運如果漸入佳境,愈來愈好,累計營收年增率會一個月比一個月好。

參考的腳本

input:period(6,"計算區間");
value1=GetField("累計營收年增率","M");
if trueall(value1>value1[1],period)
then ret=1;

九,營收月增率優於歷年平均

營收月增率歷年平均,代表的是一家公司成長的步伐,如果營收月增率可以優於這樣的步伐,代表公司的營運有加快成長的可能。

參考的腳本如下:

value1=GetField("月營收月增率","M");
value2=average(value1,36);
if value1>10
and value1>value2*1.3
then ret=1;
十,營收從下降趨勢轉成上昇趨勢的公司
過去營收年增率在下降,但現在開始轉為成長的股票,可能就是所謂的轉機股
參考的腳本如下:
//input:TXT("僅適用月線"); setinputname(1,"使用限制");
setbarfreq("M");

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

settotalbar(23);

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;

以上這十個腳本是我應用月營收時常用的腳本,趁這次月營收要公佈前,一次跟大家分享

 

 

 

 

 

 

 

 

打造一個專屬的上市櫃公司健康檢查表

因著樂陞事件,我一直在思索要如何才能趨吉避凶,不再誤踩地雷。回顧這三十多年來,公司治理出了問題的公司,主要都還是使用點石成金,五鬼搬運等方法,這些方法,在財報上多少會有些蜘絲馬跡,我們可以試著從這些地方設下一些檢查點,仿效健康檢查的方式,建立一套上市櫃公司的營運健康檢查體系,以後再有類似的機會,要進場前,先看一下公司的健康檢查分數。

要作健康檢查之前,我們得先確定一下,通常會有那些疾病,我綜合這三十多年來,公司治理上出現的弊端,大致有下面幾種病狀

1.點石成金。上市公司大股東在公司購買土地,廠房,機器設備,及併購其他公司時,收取高額佣金,用100元去買只值10元的東西,把錢從公司搬到自己的口袋,這就稱為點石成金。這種公司在財報上的特徵是公司大量的資本支出,但並無相對應的資本報酬。

2.乾坤大挪移。把公司的重要資產轉給子公司,再以子公司名義簽下各種不公平契約,把公司的重要資產,漸漸挪到私人的口袋裡。這種公司在財報上的特徵是,轉投資公司家數眾多且佔公司淨值的比例非常的高

3.挖牆補洞。之前有多家公司出事,都是因為老板炒股套牢需要資金,於是以公司發展某項新產品為由,利用現增,發債的方式,讓公司股本或負債比例大幅提高,但拿到的錢主要是用來買回公司股票,幫老板解套,這種公司在財報上的特徵是股本膨脹速度很快,或是負債比例持續昇高,但營收並沒有同步成長。

4.虛列營收。過去有幾家公司,把貨往海外子公司或白手套開設的公司送,帳上作出貨,但其實貨並沒有賣掉。這種公司在財報上最常見的是應收帳款以跟營收不成比例的速度在爬昇,且來自營運的現金流量與獲利背道而馳。

5.金錢遊戲。好公司的大股東專心於本業,不會動不動就把股票拿去質押,不會沒事就發個庫藏股,不會設一些專職炒股的投資公司,也不會常發表一些利多消息吸引投資人。這種公司在財報上最常見的,就是業外收益佔稅後淨利的比重高且不穩定。

 

另外,如果有以上病狀的公司,公司一定不大賺錢,所以

1.經營階層的持股比例一定不高且通常質押的比例會很高。

2.現金股利能發放的空間不大

3.機構投資者通常不會買這種股票

4.融資券餘額常有較大的變化

 

綜合以上的觀察,我試著寫了一個掛牌公司健康分數的程式腳本

 value1=GetField("資本支出營收比","Q");
//現金流量表中固定資產(購置)/營業收入淨額*100%
value2=GetField("資本支出金額","Q");//單位百萬
value3=GetField("股東權益報酬率","Q");
value4=GetField("長期投資","Q");//單位百萬
value5=GetField("負債比率","Q");
value6=GetField("每股營業額(元)","Q");
value7=GetField("現金及約當現金","Q");//單位百萬
value8=GetField("流動負債","Q");//單位百萬
value9=GetField("一年內到期長期負債","Q");//單位百萬
value10=GetField("應收帳款週轉率(次)","Q");
value11=GetField("投資收入/股利收入","Q");//單位百萬
value12=GetField("處分投資利得","Q");//單位百萬
value13=GetField("投資跌價損失回轉","Q");//單位百萬
value14=GetField("投資損失","Q");//單位百萬
value15=GetField("投資跌價損失","Q");//單位百萬
value16=GetField("處分投資損失","Q");//單位百萬
value17=GetField("董監持股佔股本比例","D");
value18=GetField("投信持股","D");
value19=GetField("現金股利","Y");
value20=GetField("融資餘額張數","D");
value21=GetField("融券餘額張數","D");
value22=GetField("來自營運之現金流量","Q");//單位百萬
value23=GetField("本期稅後淨利","Q");//單位百萬
value24=GetField("普通股股本","Q");//單位億
value25=GetField("短期投資","Q");
value26=value11+value12+value13-value14-value15-value16;
var:count(0);
count=0;
if linearregslope(value1,8)>0
then count=count+1;
//1.資本支出營收比在成長
if linearregslope(value2,8)>0
and linearregslope(GetField("營業收入淨額","Q"),12)<0
then count=count+1;
//2.資本支出在成長但營收在衰退
if linearregslope(value3,8)<0
then count=count+1;
//3.股東權益報酬率衰退中
if value4/(value24*100)*100>40
then count=count+1;
//4.長期投資佔股本超過四成
if value5>50
then count=count+1;
//5.負債比率超過五成
if linearregslope(value6,12)<0
then count=count+1;
//6.每股營收持續衰退
if value7+value25<value8+value9
then count=count+1;
//7.現金及約當現金+短期投資小於
//流動負債加一年內到期的長期負債
if linearregslope(value10,12)<0
then count=count+1;
//8.應收帳款週轉次數在減少
if countif(value26<0,12)>2
then count=count+1;
//9.業外操作有超過兩季是虧錢
if value17<15
then count=count+1;
//10.董監持股比例小於15
if value18<500
then count=count+1;
//11.投信整體持股在500張以下
if average(value19,12)<1
then count=count+1;
//12.現金股利長期都不到1元
if highest(value20,12)>lowest(value20,12)*2
and highest(value21,12)>lowest(value21,12)*2
then count=count+1;
//13.融資融券高低點相距超過一倍
if countif(value22<value23,12)>8
then count=count+1;
//14.來自營運的現金流量老是小於稅後淨利
if linearregslope(GetField("營業毛利率","Q"),12)<0
then count=count+1;
//15.毛利率長期處於下降趨勢
if linearregslope(GetField("流動比率","Q"),12)<0
then count=count+1;
//16.流動比例長期在下降
if linearregslope(GetField("存貨週轉率(次)","Q"),12)<0
then count=count+1;
//17.存貨週轉率在下降
if linearregslope(GetField("存貨及應收帳款/淨值","Q"),12)>0
then count=count+1;
//18.存貨及應收帳款佔淨值的比例在提高當中
if linearregslope(GetField("短期借款","Q"),12)>0
then count=count+1;
//19.短期借款在增加
if linearregslope(GetField("背書保證餘額","M")+GetField("資金貸放餘額","M"),12)>0
then count=count+1;
//20.背書保證餘額與資金貸放餘額在增加
var: score(0);
score=100-5*count;
if value7<2000
then begin
if score<50
then ret=1;
end;
outputfield(1,score,0,"企業營運健康分數"); 

 

這個腳本只是個樣本,各位可以根據您自己的偏好,
整理出屬於您自己的地雷股條件,
例如您可以把上面的二十項濃縮成十項

value1=GetField("資本支出營收比","Q");
//現金流量表中固定資產(購置)/營業收入淨額*100%
value2=GetField("資本支出金額","Q");//單位百萬
value3=GetField("股東權益報酬率","Q");
value4=GetField("長期投資","Q");//單位百萬
value5=GetField("負債比率","Q");
value6=GetField("每股營業額(元)","Q");
value7=GetField("現金及約當現金","Q");//單位百萬
value8=GetField("流動負債","Q");//單位百萬
value9=GetField("一年內到期長期負債","Q");//單位百萬
value10=GetField("應收帳款週轉率(次)","Q");
value11=GetField("投資收入/股利收入","Q");//單位百萬
value12=GetField("處分投資利得","Q");//單位百萬
value13=GetField("投資跌價損失回轉","Q");//單位百萬
value14=GetField("投資損失","Q");//單位百萬
value15=GetField("投資跌價損失","Q");//單位百萬
value16=GetField("處分投資損失","Q");//單位百萬
value17=GetField("董監持股佔股本比例","D");
value18=GetField("投信持股","D");
value19=GetField("現金股利","Y");
value20=GetField("融資餘額張數","D");
value21=GetField("融券餘額張數","D");
value22=GetField("來自營運之現金流量","Q");//單位百萬
value23=GetField("本期稅後淨利","Q");//單位百萬
value24=GetField("普通股股本","Q");//單位億
value25=GetField("短期投資","Q");
value26=value11+value12+value13-value14-value15-value16;
var:count(0);
count=0;
if linearregslope(value2,8)>0
and linearregslope(GetField("營業收入淨額","Q"),12)<0
then count=count+1;
//1.資本支出在成長但營收在衰退
if linearregslope(value3,8)<0
then count=count+1;
//2.股東權益報酬率衰退中
if value4/(value24*100)*100>50
then count=count+1;
//3.長期投資佔股本超過五成
if value5>60
then count=count+1;
//4.負債比率超過六成
if value7+value25<value8+value9
then count=count+1;
//5.現金及約當現金+短期投資小於
//流動負債加一年內到期的長期負債
if countif(value26<0,12)>2
then count=count+1;
//6.業外操作有超過兩季是虧錢
if value17<15
then count=count+1;
//7.董監持股比例小於15
if value18<500
then count=count+1;
//8.投信整體持股在500張以下
if linearregslope(GetField("營業毛利率","Q"),12)<0
then count=count+1;
//9.毛利率長期處於下降趨勢
if linearregslope(GetField("流動比率","Q"),12)<0
then count=count+1;
//10.流動比例長期在下降

var: score(0);
score=100-10*count;
if value7<2000
then begin
if score<50
then ret=1;
end;
outputfield(1,score,0,"企業營運健康分數");

 

這樣子每項十分一樣可以做出您專屬的上市公司體檢系統。

 

 

好久以來的第一根長紅到底能不能追?

這幾個月來,景氣循環股因著不同的原因,相繼展開反彈,在線型上出現好久以來的第一根長紅,我試著想從過去三年的數據分析中,來測試看看這種好久以來的第一根長紅,如果進場追買的話,賺錢的機率高不高? 要漲多少%才算是長紅? 要多久沒有拉過長紅才算是好久以來? 這樣的交易策略是不是適用在所有的股票上?

為了作這個測試,我先寫了一個腳本如下:

input:ratio(6,"長紅的漲幅下限");
input:period(40,"計算區間");
if close>=close[1]*(1+ratio/100)
and 
countif(close[1]>=close[2]*(1+ratio/100),period)=0
then ret=1;

其中設了兩個參數,一個是上漲的幅度,一個是計算的天期

我先用上漲6%算長紅,計算區間設40天,用所有的上市櫃公司,我假設是長紅後的隔天開盤進場,然後持有兩天,先跑最近半年,回測結果如下

090101

結果交易的次數很多,半年就有超過言1000次的機會,但勝率不高,只有42.2%,不過總報酬很不錯,這代表輸的時候輸的不多,但贏的時候可以贏不少。不過從淨值的波動圖來看,跟大盤似乎息息相關,代表這樣的交易策略跟大盤多空有很大的關係。

所以我把回測的時間拉長到三年,回測的結果如下:

090102

結果發現勝率提高到接近五成,然後比較好玩的數字是,如果在多頭市場時,這個策略還真的可以一試

於是我在原來的腳本加上只在大盤多頭時進場

 input:ratio(6,"長紅的漲幅下限");
input:period(40,"計算區間");
if GetSymbolField("tse.tw","收盤價")
>average(GetSymbolField("tse.tw","收盤價"),10)
then begin
if close>=close[1]*(1+ratio/100)
and 
countif(close[1]>=close[2]*(1+ratio/100),period)=0
then ret=1;
end;

這樣的腳本去跑三年的回測,結果如下:

090103

勝率超過五成,比較大的意義是最大區間虧損雖然還是大的嚇人,但至少有明顯的降低

接下來我試著把沒有長紅的區間拉長,把長紅的定義放的更寬一點來測看看,效果沒有比較好,我只拿景氣循環股及高ROE的股票下去跑,勝率也沒有比較好,但如果是拿有量的中小型股下去跑,則結果會很不錯

090104

 

所以關於長期以來的第一根長紅這個 交易策略,我的數據分析結論如下

在大盤多頭走勢時,如果那些有量的中小型股,出現過去四十天以來的第一根上漲超過6%的長紅棒,那麼隔天開盤進場追,持有兩天,是一個可以進一步Follow的交易策略。

 

xqlite banner