Author Archives: 發財橘子

毛利率大增的中小型低價股出量起漲

上市櫃公司陸續公佈第三季財報,今天來跟大家介紹一個,我在每季財報公佈後會用的交易策略,這個策略是去尋找毛利率有明顯改善的公司,這些公司股價開始價量齊揚,從回測上來看,是勝率頗高的進場點。

首先跟大家分享我使用的選股策略:

首先,我要找的是,近一季毛大率成長大於20%且連續四季毛利率都大於10%的公司,一季毛利率成長兩成,代表公司的營運面有著明顯的改善,如果最近一個月的月營收成長大於5%,代表這樣的改善在持續中。

如果這樣的公司屬於中小型低價股,法人有可能沒有提早發現,這就是我們個人投資人的機會。

至於月漲幅小於5%,是怕買到有心人已經拉上去等著要趁利多出貨的股票。

光這些條件,不考慮是否暴量剛起漲,如果停損停利都設為7%,近七年的回測報告如下:

這樣的收益曲線及近60%的勝率,代表這樣的選股方式,的確有其一定的道理。

但如果用這樣的選股策略去挑股票,會挑到一大堆沒有量的股票,七年3618次的交易訊號,平均一年500多次,實在太多了。

所以我才加上暴量剛起漲這個策略,在這些股票價量創20日新高時才進場。

Input: day(20,"日期區間");
Input: ratioLimit(7, "區間最大漲幅%");

Condition1 = C=highest(C,day);
//今日最高創區間最高價

Condition2 = V=highest(v,day);
//今日成交量創區間最大量

Condition3 = highest(H,day) < lowest(L,day)*(1 + ratioLimit*0.01);
//今日最高價距離區間最低價漲幅尚不大

Ret = Condition1 And Condition2 And Condition3;

這個腳本我常用,主要是光這個腳本就有不錯的勝率:

把上述的選股條件加上這個暴量起漲的腳本之後,回測報告如下圖

這兩個策略結合在一起之後,勝率高達75%,缺點是交易次數七年只有161次,稍嫌少了一點,大家可以重新調整一下各個選股條件,或許會有更好的效果。

這個策略我試著用【量化積木】來組,條件如下:

有興趣的朋友可以試看看。

這個策略的概念是透過尋找毛利率有明顯改善的低價中小型股,去找到轉機股,然後當這些個股開始在股價有所表現時進場,當初的想法是大家看財報時常會先看EPS,但有些公司可能EPS還沒有太突出表現,但毛利率已有明顯的改善,所以從這樣的方式去挑股票。

===

● XQ【盤後量化選股模組】($1,000) 完整介紹 ➤https://xqcom.psee.io/5clxk4

● 首次訂閱享7天鑑賞期,首次購買輸入官方優惠碼「@XQ8899」,可折抵模組費用$100!

● 量化交易超值方案!購買就送:【量化積木+台股進階】(總價值$800)

GVI指標低檔回升

淡江大 土木工程系的葉怡成教授,發展了一個叫GVI(Growth Value Index)的指數,

GVI=(B/P)×(1+ROE)^5

這個指數的意思是用淨值/股價去乘上(1+股東權益報酬率)的5次方,這個數字當然是愈大愈好。

我發現,這個指標如果從低檔回升,也是一個不錯的短線作多訊號

我寫的腳本如下

 

value1=GetField("股價淨值比","D");
value2=GetField("股東權益報酬率","Q");
var:GVI(0);
GVI=1/value1*(1+value2)*(1+value2)*(1+value2)*(1+value2)*(1+value2);
if gvi cross over 1.1 
then ret=1;

 

把這個腳本拿去回測,停損停利都設為7%,回測報告如下

如果把符合條件的個股限制股價必須低於60元,會有更好的勝率及報酬率

CMI市場波動指標轉強股

 

傳統的技術分析提供了兩類不同的工具,一種是趨勢指標如MA,MACD,DMI等,另外也提供了震盪指標像KD,RSI等。 有趨勢時用趨勢指標交易,盤整盤時,用震盪指標交易。 至於什麼時候是趨勢,什麼時候是盤整, 可以用各種統計數據去計算多空雙方的力量,多空力量相差不大時是盤整盤,一方明顯強於另一方時是趨勢盤,CMI就是這樣的一個指標。

CMI指標的作法是以最新收盤價減去N日前的收盤價取絕對值當分子,以區間最高價減去區間最低價當分母,然後乘以100,取百分比值。

用這個指標在大盤短期趨勢向上時,尋找那些指標在高檔的非KY股票作短多,有還不錯的表現

這個策略的腳本如下

Input:Period(10); 
Input:TSELen(6); 
Var:CMI(0),AvgCMI(0); 

// 計算 
CMI=100*(C-C[Period-1])/(Highest(H,Period)-Lowest(L,Period)); 
AvgCMI=average(CMI,6); 
//---------------------------------------- 
// 選股條件 
// 大盤趨勢向上且非KY股 
Condition1=CCT_TSE_Trend(TSELen)=1 and rightstr(symbolname,2)<>"KY"; 
// CMI趨勢向上 
Condition2=trueall(CMI>=65,3) and AvgCMI>=81 and Bias(7)<4; 

// 個股條件 
Condition100=Condition1 and Condition2; 

//---------------------------------------- 
// 選股條件 
// 均成交金額>0.35E 
Condition101=Average(GetField("成交金額(億)","D"),5)>=0.35; 

// 個股條件(籌碼相關) 
Condition200=Condition101; 
// 篩選 
If Condition100 and Condition101 Then 
Ret=1;

回測報告如下:

 

 

另外,因腳本中須建立一個函數 CCT_TSE_Trend,我將”選股”腳本下載連結放置此處,請各位自行下載後匯入:

https://drive.google.com/file/d/1CGDPzwsA4EepcVJQ5zlsMG9O1QNBhQ-l/view?usp=sharing

 

大股東站在買方的績優成長股

大股東站在買方且近期漲幅不大,然後基本面連2季毛利率成長,過去五年到少有1年獲利大於3元,再搭配近一日外資買超佔成交量一成以上,這樣基本面+技術面+籌碼面的組合,往往可以找到短線呈現多頭走勢的股票

以下的策略,是根據這個想法,所設計出來的

其中大股東站在買方的腳本如下

value1=GetField("關鍵券商買賣超張數","D");
value2=getField("關聯券商買賣超張數", "D");
value3=getField("地緣券商買賣超張數", "D");
if GetField("內部人持股比例","M")
>GetField("內部人持股比例","M")[1]
or GetField("大戶持股比例","W",param := 1000)
>GetField("大戶持股比例","W",param := 1000)[1]+0.5
or value1>=500
or value2>500
or value3>500
then ret=1;
outputfield(1,GetField("內部人持股比例","M"),0,"內部人");
outputfield(2,GetField("內部人持股比例","M")[1],0,"前期內部人");
outputfield(3,value1,0,"關鍵券商");
outputfield(4,GetField("大戶持股比例","W",param := 1000),1,"千張大戶比例");
outputfield(5,GetField("大戶持股比例","W",param := 1000)[1],1,"前期千張大戶比例");

 

 

這個策略過去七年,停損停利都設為7%,回測報告如下圖

這樣的策略在景氣行情中表現不錯,在無基之彈中表現就會比較差

下切線突破搭配主力買超

下切線突破是一個型態學上,很常見的買進訊號,特別是如果這樣的突破,搭配著外資,投信站在買方,且近一日主力買超佔成交量達到一定的水準,更值得注意。

下切線突破的腳本如下

input:in1(60,"計算區間"),in2(false,"嚴格模式");
settotalBar(in1*2);
//尋找不同區間大小下目測所認為的高點。
value1=highest(H,in1);//找出一定區間的高點
if value1>value1[1] then value2=value1;
//如果高點變高則保留高點,這樣做的原因是可以找到一波下降之後的高點
condition1 = value2=value2[1];
//條件:保留之高點維持(階梯的平台)
condition2 = trueall(condition1,in1);
//在計算區間內高點都沒有變
if condition2 and not condition2[1]
then begin
value6=value5;
value5=value4;
value4=value3;
value3=value2;
end;
condition3 = 
value3-value2<value4-value3 
and value4-value3<value5-value4 
and (value5-value4<value6-value5 or not in2)//嚴格模式多判斷一階
and value3-value2>0
;//平台的高度一階比一階低
if condition3[1] and not condition3
and 
(getField("投信買賣超", "D")>0
or getField("外資買賣超", "D")>0)
then ret=1;

 

搭配近一日主力買超張數合計佔成交量5%以上的條件,回測過去七年,停損停利都設為7%,回測報告如下

這是一個長期以來都還蠻有用的短線交易策略。

 

● XQ【盤後量化選股模組】($1,000) 六大功能,購買就送【台股進階(原價$300)+小道瓊行情(延遲)】➤https://utm.to/528tz9

● 首次訂閱享7天鑑賞期,首次購買輸入官方優惠碼「@XQ8899」,首月可折抵模組費用$100!

三次到頂而破

對於那些走在上昇趨勢上的中低價大型股,就像是一部走在固定方向的大巴士,在前方踫到阻礙時可能會減速甚或休息盤整,但只要突破了整理區之後,往往就是另一波漲勢的開始,這個三次到頂而破的選股策略,就是在尋找這樣的股票

整個策略包含三個條件

後面兩個條件專注在尋找中低價的大型股

三次到頂這個條件的腳本如下

variable:i(0),j(0),j1(0),BP(0);
value1=average(H,10);//求出高10日均線作為趨勢線
value2=value1-value1[1];//求出高10日均線的切線斜率
condition1 = value2>0;//條件一為趨勢成長
condition2 = trueall(condition1,15);//條件二為15日連續成長
condition3 = trueall(not condition1,20);
//條件三為20日連續下跌作為離開上漲波段判斷
if condition1 and not condition1[1] and not condition4 then value3 =0;
//如果終止一段漲幅且未進入第一次下轉區則重設關鍵價
if condition3 
then begin
value3=0;
condition4=false;
condition5=false;
end;
//如果連續下跌則離開第一次下轉區不予進場並重設關鍵價
if value1 crosses under value4 and condition4
then begin
condition5=true;

end;
//如果10日均線跌破關鍵價則進入平行整理區

if condition1 and not condition5
then begin
if H>value3 
then begin
value3=H;
value4=(L+H)/2;
end; 
end;
//設在成長期間的最高點的高低價平均為關鍵價
if condition2[1] and not condition2 
then begin

condition4=true;
condition5=false;
end;
//如果停止連續成長則進入第一次下轉區

if value1 crosses over value4 and condition5 and condition4
then begin
condition5=false;
condition4=false;
ret=1;
end;
//如果收盤價突破平行整理區則進場

把這個策略拿去回測過去七年,停損停利都設為7%,回測報告如下圖

這算是一個接近3戰2勝的短線交易策略

 

PB跌到歷年低點區且低於0.8

如果一檔股票的股價淨值比低於0.8,且離歷史低點區也沒有太遠,而且流動資產減流動負債後超過市值八成,代表這檔股票的下檔空間應該是愈來愈小了,如果這時候成交量又明顯回升,往往是一個長期的進場機會。

我一共寫了三個腳本來描敘上述的情境

一,PB跌到歷史低點區且低於0.8

value1=GetField("股價淨值比","Y");
value2=lowest(value1,4);
if value1<value2*1.3 and value1<=0.8
then ret=1;
outputfield(1, GetField("股價淨值比","Y"),2, "PB比", order := -1);

 


二,流動資產減流動負債超過市值N成

input:ratio(80,"佔總市值百分比%");
if (GetField("流動資產","Q")-GetField("負債總額","Q"))*100>GetField("總市值","D")*ratio/100
then ret=1;

 

三,無量變有量

input:v1(1000,"前一期成交量");
input:v2(1000,"最新期成交量");
if trueall(volume[1]<=v1,10) and volume>v2 
then ret=1;

 

把這三個腳本結合成一個選股策略,停損停利都設為20%,回測報告如下圖

股價低於目標價

如果過去五年的四季移動平均EPS都沒有很明顯的下跌,代表這家公司的獲利還蠻穩定的,這樣的公司,如果用最近四季合計EPS去計算,本益比不到八倍,股價應該算是長線的低點區。

我根據上述的概念,寫了一個選股腳本如下

//獲利穩定股目標價計算方法
value1=GetField("每股稅後淨利(元)","Q");
value2=summation(value1,4);
//最近四季的EPS總和
value3=highest(value2,20);
//過去20季以來四季EPS總和的最高值
value4=lowest(value2,20);
//過去20季以來四季EPS總和的最低值
value5=average(value2,20);
var:tp(0);//目標價
if value4>1
//連續四季合計的EPS在過去20季都大於1元
and value3-value4<3
//四季合計的EPS近20季以來最高與最低EPS差1.5元以內
then 
tp=8*value5;
input:discount(30,"折價率");
if close*(1+discount/100)<tp then ret=1;
//目標價與市價差30%以上
outputfield(1,tp,0,"目標價");
outputfield(2,(tp-close)/close*100,1,"預期報酬率");

 

用這個腳本去回測,停損停利都設為20%,回測報告如下圖

股價遠低於十年股利加淨值

如果目前的股價低於過去十年的股利總和加上淨值,代表如果未來十年公司獲利能力沒有變差,目前的股價去買來再放十年,光收股利都不吃虧,特別是大部份的公司都有積極向上的鬥志,除非進入惡性循環,不然這樣的股價水準應該是要站在買方。

根據這樣的想法,我寫了以下的腳本,來找出目前股價遠低於十年股利加淨值的公司

value1=(getField(“股利合計”, “Y”)
+getField(“股利合計”, “Y”)[1]
+getField(“股利合計”, “Y”)[2]
+getField(“股利合計”, “Y”)[3]
+getField(“股利合計”, “Y”)[4]
+getField(“股利合計”, “Y”)[5]
+getField(“股利合計”, “Y”)[6]
+getField(“股利合計”, “Y”)[7]
+getField(“股利合計”, “Y”)[8]
+getField(“股利合計”, “Y”)[9])/10;

value2=value1+getField(“每股淨值(元)”, “Q”);
var:pg(“”);
input:ratio(20,”折價率”);
if close*(1+ratio/100)< value2
then ret=1;
outputfield(1,close/value2,2,”折價率”);

 

我如果把折價率設為三成,停損停利都設為20%,回測報告如下圖

如果再加上連續2日三大法人合計買超都大於200張這個條件,回測報告會更好

股價在五年平均總市值以下的績優股

如果目前的總市值遠遠低於過去五年的平均總市值,且過去五年平均EPS超過3元,今年以來的累計營收年增率又超過5%,那麼股價就可能被低估,值得進一步留意

下面的選股策略,是根據上面的概念所撰寫出來的

其中用到的腳本如下:

value1=(GetField("總市值(億)","Y")+GetField("總市值(億)","Y")[1]+
GetField("總市值(億)","Y")[2]+GetField("總市值(億)","Y")[3]+
GetField("總市值(億)","Y")[4])/5;
value2=GetField("總市值(億)","D");
input:ratio(40,"低於平均市值的最低幅度");
if (value1/value2-1)*100>ratio then ret=1;
outputfield(1,(value1/value2-1)*100,0,"低於平均市值的幅度");

再搭配基本面的那兩個條件後形成選股策,這個策略停損停利都設20%的回測報告如下

 

這是一個勝率超過七成五的長線選股策略,缺點就是條件太嚴,出的訊號少了點。