Author Archives: 發財橘子

箱型突破

箱型整理是很常見的一種型態,代表多空雙方勢均力敵,當箱型被往上突破時,代表雙方的決戰已分出勝負。我們把箱型整理的突破寫成腳本,然後把它應用在基金投資上,發現這是一個勝率相當高的策略

對應的腳本如下

input:period(40,"計算區間");
value1=highest(close[1],period);
value2=lowest(close[1],period);
if value1<value2*1.05
and close>close[2]*1.006
and close crosses over value1
and volume>average(volume[1],20)*1.3
then ret=1;

以下是這個腳本挑出來的ETF

c10

持有20天的回測報告如下

c9

在多頭市場的勝率超過七成,是一個值得參考的策略

日線週線的均線都黃金交叉

很多朋友都用移動平均線來作為基金投資進出場的參考依據,像是很多人都用年線或半年線來進出場,今天跟大家介絡的是當日K棒的均線及以週K棒的均線都出現黃金交叉時,把它作為一個進場的訊號。

這樣的概念,對應的腳本可以如下面這樣的寫法

if average(close,5)crosses over average(close,10)
and 
 xf_CrossOver("W",Average(GetField("收盤價","W")[1],5)[1],
 Average(GetField("收盤價","W")[1] ,10))
 then ret=1;

拿這個腳本去回測,出場設20天之後,回測報告如下

C8

我們可以發現,這樣的策略,在多頭市場,一年大約有近20次的交易機會,其中有六成以上可以獲利出場。

下檔有撐(三下影線完成打底)

下影線代表多空爭戰的最後,多方大量收復了原來被空方攻佔的土地,如果連續三天都出現夠長的下影線,那就代表空方連攻三次都被多方給收復失土,人家說一鼓作氣,再而衰,三而竭,通常出現這種情況之後,空頭潰敗的機率很高。

根據上述的理論,對應的腳本如下

input: Percent(0.5,"下影線佔股價絕對百分比");

variable:Kprice(0),OCDate(0);

condition1 = (minlist(open,close)-Low) > absvalue(open-close)*2; 
condition2 = minlist(open, close) > low* (100 + Percent)/100;

if trueall( condition1 and condition2, 3) then begin
 OCDate = Date;
 Kprice = average(H,3);
end;

if DateDiff(Date,OCDate) <3 and Close crosses over Kprice then ret = 1;

這個腳本可以挑出像下面的這檔基金

C7

過去一段時間的回測報告如下

C6

這樣的情況在基金市場上出現的機率並不高,但出現後,是屬於三戰可以兩勝的情況。

籌碼發散的股票是長空的最佳標的嗎?

昨天寫了我挑空單的邏輯,我頗敬重的一位江湖大佬看到了,他提了一個很有趣的觀點~ 長空的股票只要看籌碼就夠了,其他都不要看,會被誤導。他說只要籌碼是從大股東,大戶及法人手中一直往市場上倒,而承接的都是散戶,這種股票就算在多頭市場也很難漲,但如果你還要去考慮基本面技術面什麼的,反而會因為噪音太多而迷失方向。為了印證他的觀察,以下是我的實驗過程。

根據他的說法,我列出作空的一些條件

1.買進的分公司家數遠多於賣出的分公司家數

2.法人賣超

3.主力賣超

4.千張大戶人數及張數在減少

5.融資餘額在增加

6.借券賣出餘額張數在增加

7.關鍵券商賣超

8.散戶持股人數及張數在增加

9.內部人持股比例在減少

10.散戶買張在增加

11.地緣券商賣超

12.綜合前十大券商賣超

然後我寫了一個選股腳本,來設定每天符合這些條件達到一定的比例作為標準,然後再挑出最近幾天都有符合此標準的股票。

我寫的腳本如下:

value1=GetField("法人買賣超張數","D");
value2=GetField("買家數","D");
value3=GetField("賣家數","D");
value4=GetField("主力買賣超張數","D");
value5=GetField("融資餘額張數","D");
value6=GetField("借券餘額張數","D");
value7=GetField("關鍵券商買賣超張數","D");
value8=GetField("散戶買張","D");
value9=GetField("地緣券商買賣超張數","D");
value10=GetField("綜合前十大券商買賣超張數","D");
var:count(0);
count=0;
if value1<0 then count=count+1;
if value2>value3+30 then count=count+1;
if value4<0 then count=count+1;
if GetField("散戶持股張數","W",param := 50) >GetField("散戶持股張數","W",param := 50)[1] then count=count+1;
if GetField("散戶持股人數","W",param := 50) >GetField("散戶持股人數","W",param := 50)[1] then count=count+1;
if GetField("大戶持股張數","W",param := 400)<GetField("大戶持股張數","W",param := 400)[1] then count=count+1;
if GetField("大戶持股人數","W",param := 400) <GetField("大戶持股人數","W",param := 400)[1] then count=count+1;
if value5>value5[1] then count=count+1;
if value6>value6[1] then count=count+1;
if value7<0 then count=count+1;
if GetField("內部人持股比例","M")< GetField("內部人持股比例","M")[1] then count=count+1;
if value8>value8[1] then count=count+1;
if value9<0 then count=count+1;
if value10<0 then count=count+1;
input:n(10,"每日符合籌碼發散的條件數");
input:days(5,"計算天數");
if countif(count>=n,days)>=days*0.6 then ret=1;

以下是最近六個月及最近三個月的回測報告

2018102902 2018102901

對照下來,空頭市場如果單純使用籌碼發散這樣的精神去設定作空策略,確實是有效的策略。不過在多頭市場,一樣是會輸錢的。

高殖利率股且法人買超

高殖利率股算是價值型投資,法人連續買超,則是屬於籌碼選股,當價值型投資跟籌碼選股兩個條件同時發生呢?我用選股回測發現,當這兩個條件同時發生時,如果波段持有這些個股,在多頭市場,有不錯的勝率及投資報酬率。

我訂的選股策略如下

2018100503

用這個策略去回測,四十天後出場,回測報告如下

2018100501

挑中的股價是像這一類的

2018100502

因為要高殖利率,所以挑中時股價通常是回檔之後,於是,我們就會想說,那要不要把殖利率的標準訂高一點,代表拉回的幅度更大之後才進場,我在把殖利率往上提高到7%之後,回測報告如下

2018100504

各項數字卻實有比較好,交易次數也有226個,所以我乾脆把殖利率拉到10%以上才進場,回測報告如下

2018100505

這勝率高過七成,都快到四戰三勝了,但總交易次數只剩下46次,我怕是因為樣本數太少的關係,所以把回測期拉長到三年,勝率還是有三戰兩勝。

至於殖利率要用多少%

就看各位是希望多分散一些風險,多挑一些標的

還是想要精兵主義  看準了再下了。

 

 

董監回補持股是否代表後市可期?

江湖上有一個傳說,說如果大股東開始回頭買股票,代表後市可期,就算再跌,也跌不到那裡去。今天我們就來驗證這個說法到底靠不靠譜,以及更重要的,如果靠譜的話,要怎麼找出大股東開始回補持股的公司?

首先,我用XS的選股中心,訂出下面三個條件

2018100207

這個選股策略是找出過去三個月,每個月董監持股都在增加,且增加的幅度愈來愈大,這樣是濾掉那些只有單一個月因為特別因素而增加持股的現象,而加碼愈來愈大也代表大股東的心態愈來愈積極。

舉個例子來說,永豊金在今年的五月份就符合上述的條件(上面選股條件的增加幅度不是絕對值,是百分比),今年八月又再次符合選股條件

2018100208

對應其股價走勢如下

2018100206

我拿上述的選股策略去回測過去兩年,設60天出場,勝率其實只有五成左右,但績效確實可以打敗大盤

20181001

 

如果回測五年,看看這個選股策略在空頭市場的表現

2018100202

然後我們會發現,勝率還是在五成上下,空頭市場的表現跟大盤差不多。

後來我想到,如果大股東持股不高的,回補持股可能只是為了維繫經營權,不見得代表看好未來,所以我又加了董監持股佔股本比例大於20% 這個條件,然後持有天期改成九十天,過去五年的回測結果如下

2018100204

勝率是有突破五成,重點是總報酬率,平均報酬率及最大連續虧損及最大區間虧損的數字都變的很好,

如果在多頭市場,像過去兩年,數字表現的就更穩定了。

2018100205

透過這個實際的回測,我們可以發現,董監事有在持續增加持股的公司,整體來說,確實值得進一步研究背後的因素,有些潛力股,就在其中矣。

主流股蓄勢待發

我們一般都認定法人如果買超的股票算是主流股。 如果主流股離均線不遠且創近期新高,且上漲趨勢已成,那是不是後市看漲的機率會大一點? 基於這樣的想法,我寫了一個主流股蓄勢待發的選股策略。回測這個策略,發現這是屬於那種可以穩定維持一定獲利且淨值下跌風險還算OK的策略。

我寫的選股腳本如下

input:days(10);
input: FastLength(12, "DIF短期期數"), SlowLength(26, "DIF長期期數"), MACDLength(9, "MACD期數");
variable: difValue(0), macdValue(0), oscValue(0),Kprice(0);

settotalbar(100);
MACD(weightedclose(), FastLength, SlowLength, MACDLength, difValue, macdValue, oscValue);
if absvalue((average(close,20)-close)/close)*100<2
and absvalue((average(close,60)-close)/close)*100<2
//收盤價離月線及季線不遠
and close=highest(close,days)
//股價創十日新高
and macdvalue>macdvalue[1]
//macd上漲
and macdvalue>0
and difvalue>0
then ret=1;

再搭配近2 日法人持股增加全部由大到小排行前100名的排行條件

然後我跑所有的普通股,出場訂在20天後,以下是回測兩年及回測三年的回測報告

20181002 20181001

最大連續虧損及最大區間虧損率分別是6%及10%左右,兩年的報酬是49%,三年是65%,都能打敗大盤

所以看來挑這種剛起漲的主流股確實有一定的道理。

尋找股價已跌破7千點時股價的股票~ getbaroffset函數使用示範

昨晚跟友人聊天時,他問我能不能用電腦挑出,有那些股票,現在股價已經跌破上一波指數在7000點時的股價,今天就來跟大家介紹一個函數: getbaroffset  ,用這個函數就可以找出任一個曆日距今是多少根bar,然後就可以找出當天各檔股票的價位。

首先我們先去找一下上一次加權指數在七千點時是那一天

從下面的K線圖來看,20150824這一天,指數最低跌到過7203點,這一天應該是這幾年來加權指數的最低點

所以我們就可以寫出一個選股腳本,來尋找目前股價比那一天還低的股票有那一些

腳本的寫法如下

input:days(20150824);
value1=getbaroffset(days);
if close<close[value1] then ret=1;
value2=((close[value1]/close)-1)*100;
outputfield(1,close[value1],2,"當時股價");
outputfield(2,value2,0,"跌幅%");

這裡頭用到一個函數叫作getbaroffset,這個函數是您輸入日期,它會回傳該日期到最近一個交易日是距離多少根bar

這個函數的腳本如下

Input: target(numeric);

variable: i(1);

if target >=date then
begin
 GetBarOffset = 0;
 return;
end;

while true
begin
 Value1 = date[i];
 if Value1 <= target then 
 begin
 GetBarOffset = i;
 return;
 end;
 i = i + 1; 
end;

根據這個腳本我跑出來一共有391檔股票已經跌破當時的價位,我把跌幅大的列在下面

 

2018092804 2018092803 2018092802

這些股票的股價是比大盤提前修正的,我朋友的意思是提前修正的會不會也提前落底。

如何尋找波段的操作標的?

我們總是希望股票都能買在波段行情的初升段,然後穩穩的抱它到整個波段行情結束。要做好這件事,有兩個功課,一個是怎麼找出會有波段行情的股票,另一個則是找到波段出場的機制。 後者大家比較常用的是跌破月線或季線就出場,或是主力密集賣超就出場,前者的作風就很多元了,有的從基本面著手,有的從籌碼出發,有的用技術指標,有的看法人動向。我今天想跟大家介紹,我以往在研究單位時,所設計的一套篩選方式,我用電腦(當年是TEJ加EXCEL),篩選出一些感覺股價可能有表現機會的標的,然後收盤後就去看訪這些公司,從這當中挑出可能的投資標的。

我的篩選方式依資料頻率分別如下

日資料

  • 三大法人之前沒有買進,近幾日開始密集買超的
  • 主力連續累計買超達到一定的金額且佔成交量達到一定的比例
  • 籌碼從散戶手中被集中到少數券商分公司的特定人手裡
  • 成交量比以往多一些些
  • 公司派的券商持續且積極的買進

週資料

  • 集保張數減少(這是以前的作法,現在應該是要看千張大戶的人數是否有增多)

月資料

  • 月營收YOY出現過往未曾出現過的增長
  • 月營收MOM穩定成長
  • 連續數月的月營收表現出以往未曾有過的增長態勢

季資料

  • 毛利率比以往表現的更好(代表產品組合有所改變或是售價變好或是直接成本變低)
  • 營業利益率連續多季成長(代表有什麼事情做對了)

除了上述的條件之外,我挑的股票還要具備以下的特徵

  • 每股營收超過一定水準。(因為這樣基本面的變化才能明顯反映在EPS上)
  • 股本不能太大(因為太大的股本,如果籌碼凌亂,股性往往比較牛皮)
  • 過去一段時間漲幅要低於一定水準(畢竟不想幫別人抬轎)

過去我還在從事操盤工作時,每週會用上述的標準,篩選出符合條件的標的,接下來就是約公司去實地訪談,看看是不是公司在基本面上有些變化,足以支持股價出現波段的漲幅。

現在有了XS,不用等到週會,我可以每天跑一次這些條件之後,列出一個清單,然後再去找找看有沒有人最近有寫報告,把報告拿來研究一下,覺得不錯的就列入觀察名單,放到策略雷達裡去跑。

我的做法是,透過XS選股平台,把上述的過濾條件轉換成選股條件,如下圖

2018092701

其中有用到四個選股腳本,分別把腳本列在下面

籌碼被收集的中型股

input:period(10);
value1=GetField("分公司賣出家數")[1];
value2=GetField("分公司買進家數")[1]; 

 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;

籌碼從散戶手裡被收集

input:ratio(200); setinputname(1,"控盤者買張除以散戶買張的比例(%)");
input:volLimit(2000); setinputname(2,"成交量下限(張)");

settotalbar(3);

value1=GetField("控盤者買張");
value2=GetField("散戶買張");
value3=value1/value2 * 100;

if volume > volLimit and value3 > ratio and value3[1] > ratio
then ret=1;

投信初介入

input: day(30, "投信交易期間");

if GetSymbolField("TSE.TW","收盤價") > average(GetSymbolField("TSE.TW","收盤價"),10)
and Average(Volume[1], 100) >= 1000
then begin
 
 value1 = summation(GetField("投信買賣超")[1], day); 
 value2 = summation(volume[2], day);
 
 
 condition1 = value1 < value2 * 0.02;
 //先前投信不怎麼買這檔股票
 
 condition2 = GetField("投信買賣超")>= volume[1] * 0.15;
 //投信開始較大買超
 
 condition3 = H > H[1];
 //買了股價有往上攻
 
 condition4 = C > C[1];
 //今天收盤有往上走
 
 condition5=close<close[10]*1.05;
 
 RET = condition1 and condition2 and condition3 and condition4 and condition5;
 
end;

千張大戶暴增

setbarfreq("W");
settotalbar(3);

value1=GetField("大戶持股人數","W",param:=1000);
value2=GetField("散戶持股人數","W",param:=400);

if value1>value1[1]
and value2<value2[1]
then ret=1;

outputfield(1,value1,0,"本週大戶人數");
outputfield(2,value1[1],0,"上週大戶人數");
outputfield(3,value1-value1[1],0,"大戶增加數");
outputfield(4,value2,0,"本週散戶人數");
outputfield(5,value2[1],0,"上週散戶人數");
outputfield(6,value2-value2[1],0,"散戶減少數");

我用這個選股腳本回測過去三年,持有三十天後出場,回測報告如下

2018092702

在過去三年裡共曾經有252檔股票符合上述的選股法,平均一年有80多檔,持有30天後有57%的機率可以獲利出場,平均報酬率是5.51%。

例如以下的個股,都曾經出現在波段選股的名單裡

2018092704 2018092703

透過這樣的方式,我去挑選那些我覺得有波段行情的個股,各位不妨加減一些條件,作出您專屬的波段選股方式。

當然選出來的股票如果能跟以往一樣,再去實地訪查會更好。

以上是我挑選波段個股的方式,茲作為拋磚引玉的起點,祝大家都能掌握到自己的波段個股。

 

 

累計營收年增率開始出現異於以往的股票

當累計營收年增率開始跟以前不一樣時,代表公司營運有異於往常的改變,我們可以從這樣的改變中去找到轉機股。

我寫了一個腳本來找出這樣的股票

腳本如下:

value1=GetField("累計營收年增率","M");
input: r1(4),r2(12);
setinputname(1,"短天期");
setinputname(2,"長天期");
if average(value1,r1) cross over average(value1,r2)+5
and value1>10
then ret=1;

 

這個腳本目的如果要找出累計營收移動平均線出現黃金交叉的股票,短天期參數要用3或4皆可,重點在於找出累計營收年增率開始出現異於以往的股票

以雄獅為例,它的月營收累計年增率是在2015年一月出現3個月移動平均比12個月移動平均高出5%

 

071402

股價從一月營收公佈的二月初起,開始起漲

071403

 

這方法,小弟用起來頗不錯,推薦給大家,也祝福大家可以透過這樣的思考過程及實證,找出屬於自己,最有效的月營收選股策略。