Author Archives: 發財橘子

與本土法人相關的交易策略

從去年到今年,外資呈現賣超趨勢,本土法人掌握了主流股的話語權,我想整理一下,我寫過的本土法人的相關交易策略,有那些在回測上有比較不錯的績效。

下面這張圖是加權指數與外資的月線連動圖

從這張圖大家可以發現,外資累計買超台股的金額從2017年六月的高點43853億元,一直到昨天已下跌到38245億元,特別是對中小型成長股的著墨,愈來愈明顯是由本土法人在主導。我想盤點這兩年用本土法人相關統計數據所衍生的交易策略,有那一些的勝率及績效值得留意。

首先我們先來盤點目前可以拿來運算的本土法人欄位有那些?

 

這些欄位的更新頻率都是日線及日線以上。

目前XS系統裡,內建的相關策略不少,我以這些策略為基礎,加上我這兩年的觀察及修正,重寫了幾個策略,這裡使用的都是投信的相關欄位,茲分別介紹如下

一,中小型股投信初介入

settotalbar(130);
setbarback(65);
value1=GetField("股本(億)","D");
condition1 = GetField("投信持股")[1]<=1000 
and getField("投信買賣超")[1]=0;

if  H>H[1]
and TrueAll(condition1[1],60)

and GetField("投信買賣超")[1]*C>1000
and value1<30
then ret=1;

二,投信會買的股票出現籌碼收集的現象

condition1=false;
value1=GetField("分公司買進家數");
value2=GetField("分公司賣出家數");
value3=value2-value1;
value4=countif(value3>20,10);
value5=GetField("投信買張");
value6=summation(value5,5);
if countif(value6>=2000,300)>=1
then condition1=true;
//過去300個交易日投信曾五天買超過2000張
if value4>=6 
//最近十天有六天以上,籌碼是收集的
and close[30]>close*1.1
//最近三十天跌超過一成
and condition1

then ret=1;

三,主力與投信共襄盛舉

value1=GetField("主力買張");
value2=GetField("投信買張");
value3=GetField("投信買賣超張數");
value4=GetField("投信持股比例");
value5=GetField("股本(億)","D");
if value4<5
//投信持股比例不到5%
and value1>value2+1000
//主力買進張數大於投信買進張數一千張
and value3>1000
//投信買超大於1000張
and value5<50
//股本小於50億
then ret=1;

四,投信很久沒買,現在買超

input:day(20,"連續沒有買超的天數");
value1=GetField("投信買賣超","D");
if trueall(value1[1]<=0,day)
and value1>500
then ret=1;

五,投信買超且突破其成本

value1=GetField("投信成本","D");
value2=GetField("投信買賣超","D");
if close cross over value1
and value2 >300
then ret=1;

以上是我自己在投信買超的股票中,比較常用來進一步篩選的腳本,供大家參考。

 

xqlite banner

平均年報酬率一年兩成的價值型投資皮氏選股法

因著消息面多空紛雜,有不少投資達人開始走價值型投資路線,也有XQ的使用者來信詢問類似的問題,未來我會擇機跟大家分享我在使用的價值型交易策略,今天先跟大家報告的是皮氏選股法。

芝加哥大學教授 Joseph Piotroski 發明了一個叫F-score的計分法來挑股票,他的計分法兼顧了一家公司的獲利性,安全性及成長性,透過這個計分法來挑公司,我根據這樣的概念,寫了一個選股策略,從系統內建的選股條件中,挑出一些可以用來兼顧獲利,成長與安全的條件,然後在這些符合條件的公司價量上有所突破時出現訊號。

我列出來的選股條件如下

其中包含了兩個選股腳本,一個是暴量剛起漲,

Input: day(10,"日期區間");
	Input: ratioLimit(5, "區間最大漲幅%");
	 
	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;

一個是營運現金流大於稅後盈餘

settotalbar(3);

value1=GetField("來自營運之現金流量","Q");
value2=GetField("本期稅後淨利","Q");
if value1 > value2
then ret=1;

我用上述的選股策略去回測,出場訂為40天後,回測過去三年的回測報告如下

從數字上來看,最大連續虧損及最大區間虧損應該都還在可以忍受的範圍,年報酬率平均有接近兩成,明顯打敗指數,65%的勝率也接近三戰兩勝。

 

如果把回測的時間接長到十年,回測報告如下

勝率依然有六成,年平均報酬也有兩成以上,最大連續虧損及最大區間虧損就蠻大的,顯然在大空頭市場,這個策略還是不管用。

我試著想說把出場的時間拉長,看看如果這些股票持有的更久,能不能靠長期投資來降低短期波動的風險,所以我把持有天數拉長到120天,回測的結果如下

結果勝率跟總報酬率都有變的更好,但最大區間虧損仍接近三成,不過從這些數字來看,透過上述條件選出來的股票如果拿來配合其他交易策略,應該可以做出好股票搭配好進場時機的策略,所以還是跟大家分享這樣的選股條件。

xqlite banner

 

不會寫程式也能組合出勝率超過七成的交易策略

大部份的人都不會寫程式,但在市場待久了,總有一些自己的心得,今天就來跟大家分享一個勝率超過七成的交易策略,一行程式都不用寫喔。

這個策略也是跟XQ的客戶聊天時聊出來的,這位客戶是屬於價值型投資者,他說挑股票要挑過去每年都能有一定獲利的,如果這樣的公司股價下跌,殖利率高到一定的水準,而且本業沒有衰退,那麼一旦週線突破月線就可以進場了。特別是現在利率水準這麼低,這個投資方法的勝率會更高。

我想舉這個例子,Step by Step  跟大家介紹如何不寫一行程式,就完成上述的交易策略,讓電腦每天來幫我們尋找符合上述條件的股票。

首先,請打開XQ最上層選單中“策略”裡的選股中心,然後按新增的ICON,就會看到下面的畫面

以上述的例子來說,選股的條件裡分別是要使用殖利率,累計營收,現金股利這幾個欄位,就可以把這幾個欄位打在關鍵字搜尋的對話框裡,下面就會顯示可以使用的欄位,選定欄位後右方就有該欄位系統內建的選股條件。

這樣就可以完成相關的選股條件設定

接下來就可以回測看看這樣的策略會不會賺錢,下圖是以這個選股策略去回測過去三年,停損及停利都設為7%,因為設的條件蠻苛的,所以只有32次的進場機會,其中有23次可以賺錢,9次是輸錢,勝率高達71.8%,總報酬率則有70%

也確實如這位用戶所說的,隨著低利率時代的來臨,這一招確實是愈來愈有用。

如果回測期間拉長一點,會發現這個策略在2015年之前其實是會虧錢的

原因是之前雷曼事件讓高殖利率的股票還是隨著大盤一起下跌,很容易就被7%停損出場了

一直要到最近四年,價值型投資當道,整個市場又是多頭市場,這個策略就很有用

 

以上示範透過選股中心的條件選擇及參數的調整,可以不用寫程式就完成一個交易策略,選股中心裡有大量的選股欄位及內建的選股條件,大家可以把自己的實戰經驗轉成選股公式後來回測看看。

xqlite banner

老師父賺很大的獨門絕學

市場上一直有一群大戶,他們的手法或有不同,但共同的特徵都是追強勢股。因著這些市場上的長青樹有不少是XQ的客戶,所以有機會跟這些高手面對面的請益,前些日子有機會跟一位從民國78年就在市場上的老先生請益,他說願意分享一些基本概念給還在摸索的交易者 ,以下是他的操作概念及我對應所寫的交易策略。

老先生的選股基本概念不複雜

一,股本不要太大,股性不要太牛皮

二,股價創兩年來新高

三,創新高當天股價比大盤強

四,成交量夠大

五,主力持續買超

六,延著月線操作,跌破就停損停利

我根據他的想法,寫了以下的腳本

settotalbar(400);
value1=GetField("強弱指標","D");
value2=GetField("股本(億)","D");
value3=GetField("主力買賣超張數");
if high=highest(high,400)
and value1>0
and volume>2000
and value2<100
and close>30
and trueall(value3>0,5)
then ret=1;

用這個腳本去回測過去七年,回測報告如下

始果回測三年,回測報告如下

 

的確是屬於那種勝率不高,經常要停損,但會挑到大漲的股票,而且可以抱到大漲的那一段。

我舉一些老先生提到的案例

 

 

 

 

這個策略的缺點是勝率只要四成,超過一半的時間都在停損,對於一般投資人來說,往往會砍不下手,大家可以在這樣的精神之下,自行增加一些過濾的條件,來提高勝率。

若有不錯的結果,也很歡迎回饋給我嘿

xqlite banner

 

每年平均獲利三成~ 麥克貝瑞選股法

 

 

麥克貝瑞(Michael Berry)何許人也,2008年次貸危機中的大贏家,電影大賣空裡的第一男主角

股感有一篇文章對他有詳細的介紹。

他其實一直都是一位價值型投資人

他的選股策略,是非常有名的2-2-2法則,大家如果有興趣可以Google一下就找得到,我把它寫成適合台灣市場的選股條件

其中的兩個選股腳本如下

本業推估本益比低於N

input:peuplimit(12,"預估本益比上限");
value3= summation(GetField("營業利益","Q"),4); //單位百萬;
value4= GetField("最新股本");//單位億;
value5= value3/(value4*10);//每股預估EPS
if value5>0 and close/value5<=peuplimit
then ret=1;

價量同步創N期新高

input:period(30,"計算天數");

value1=highest(high,period);
value2=highest(volume,period);
if high=value1 and volume=value2
then ret=1;

出場點如果設為二十天後,過去三年的回測報告如下

三年95%的總報酬率,平均一年有三成。

現在低利率時代,透過一個選股策略,每年穩定獲利,是我們的夢想

麥克貝瑞的這個方法,提供您參考。

 

如何把分享的腳本變成實戰用的交易策略?

常被問到,我在這裡分享的腳本,要如何才能在XQ中實際使用,今天就舉一個我常用的交易策略為例,Step by Step的說明一遍,沒有說清楚有卡關的地方也請直接提問,不用客氣。

我舉的策略雷達腳本如下

if momentum(close,10) crosses over 0
//動能指標突破零
and GetField("投信買賣超")>1000 
//投信買超突破1000張
and barslast(GetField("投信買賣超")>1000 )[1]>10
//近十日投信都沒有這麼大買超
and close > average(close,5)
//股價站在週線之上
then ret=1;

這個腳本是用來找出投信突然大買的股票,如果拿去回測所有股票,持有十天,記得進出場價格都設成下期開盤價。

回測報告如下

從回測報告上可以看出來,這個策略在今年四月之前表現非常好,雖然勝率只有五成,但常會找到短線很強的股票,例如下面兩個例子

 

接下來如果您覺得這個腳本有參考價值,那麼請您打開 XQ選單中“策略”底下的Xscript編輯器

然後如下圖按下新增腳本的icon

 

 

因為這是一個策略雷達即時洗價的策略,所以腳本類型請勾選“警示”,然後取個策略名稱後按確認

接下來就是把上面的腳本複製貼上到腳本編輯器中,然後按上方的“編譯“按鈕完成編譯

然後如下圖點撃 ”加入雷達“

接下來會進到這個策略的屬性設定畫面

 

如果要跑全部的腳本請參考上圖的操作

設定好之後,每天開盤前啟動該策略即可

這樣每天在策略選單底下的警示中心就會收到最新符合該策略的股票通知,如果想要這個策略出現的訊號在手機上出現,請參考這一篇

如果想要更了解策略雷達的設定,請參考這一篇

最後要跟大家說明一下,根據XQ 的收費標準

我介紹的腳本,如果是警示策略的,跑日線以上,只用到開高低收成交量的,跑五檔商品以內的,免費版就可以使用,否則必須有策略模組的權限才能跑,這點是要先跟大家說明的

其次,我介紹的腳本有的是選股用的,有的是盤中會出訊號的策略模組,我分享時一般會說明,請大家特別留意,別把選股腳本拿來當警示腳本,編譯的時候會出問題的。

xqlite banner

主力與投信共襄盛舉的交易策略

跟投信有關的交易策略有很多,有網友教了我一個,說是多頭市場非常好用,我回測了一下,數字不錯,細想其概念,頗有道理,不敢藏私,跟大家分享。

這位網友觀察到,當投信開始買一檔中小型股時,如果這家公司各投信的持股不多,那就有兩種可能,一種是這檔股票特定投信因為特定原因而進場,但市場沒有共鳴,等到這家投信買完了,行情就結束了,另外一種則是這家公司的基本面有了非常正向的變化,各投信及市場各方勢力一起共襄盛舉,因為大家手上原本可能都沒有籌碼,所以大家都爭著進場,股價就會有一波漲勢。

那要如何判斷市場有沒有共鳴呢? 網友的看法是,如果當日主力買超的張數比投信買超的張數多超過一千張,那就可以代表除了投信之外,市場還有其他人看上這檔股票。

根據這樣的邏輯,我寫了一個腳本如下:

value1=GetField("主力買張");
value2=GetField("投信買張");
value3=GetField("投信買賣超張數");
value4=GetField("投信持股比例");
value5=GetField("股本(億)","D");
if value4<5
//投信持股比例不到5%
and value1>value2+1000
//主力買進張數大於投信買進張數一千張
and value3>1000
//投信買超大於1000張
and value5<50
//股本小於50億
then ret=1;

用這個腳本去回測,為了避免偷看答案,所以進場點是用隔一日的開盤價,回測過去三年的數字如下

雖然勝率不到50%,但三年有252個交易機會,平均一年有超過80次,報酬率達到204%,遠遠打敗大盤的14%,網友有特別交代,這個策略在多頭市場表現會非常好

所以我回測了兩段多頭市場,一個是前兩年

另一個則是最近三個月

然後我們會發現,其實這個策略的勝率就差不多五成左右,但多頭市場會找到飆股,其漲幅足以cover空頭市場的損失

例如下面幾檔是這個策略過去三年跑出來報酬率最高的股票

 

 

 

我們會發現,這類股票在出現訊號前,共同的特徵都是整理過一段時間

於是未來我們用這個策略挑出來的股票,可以觀察之前是否有一段整理期間。

 

以上是網友分享的好想法,我借花獻佛,大家多交流

 

xqlite banner

Moneydj固定收益專區上線

隨著中美貿易大戰愈演愈烈,全球景氣陷入衰退的風險愈來愈大,在亂世之中,可以確定的事情是,各國央行愈來愈有降息的壓力,於是,償債能力良好的公司債及特別股,會是不安定的世道中,少數能夠帶來穩定配息,而且有可能會有資本利得的投資商品,Moneydj整合了美元小額投資等級公司債及特別股,成立了Moeneydj固定收益專區,提供給大家一個年配息還有5%上下的投資管道,特別是,一旦景氣往下,收益率可能會更好,也有資本利得的意外之財,不確定的年代,這個專區陪大家一起尋找穩定的收益。

Moneydj固定頻道的位置如下,從www.moneydj.com 網站裡最上方固定收益這四個字點下去

會看到下面的畫面,在這畫面的上方有三個連結,除了特別收益專區之外,也有債券及特別股的入口

而大家如果想要直接從moendy下單買美債或特別股,可以參加人人都是巴菲特方案,按立即開戶,到國證券開戶,這樣就可以享有XQ操盤高手美股版的權限。

在固定收益專裡,最先看到的是不同到期日可以買到的最高收益的商品圖

也可以比較美債與特別股之間的差異

在網站的下方收集了不同到期日根據收益率排序的債券與特別股商品

從上圖來看,目前特別股還有不少6.3%以上年報酬率的商品,像我自己膽子比較小,所以就挑了EBAY及AT&T的特別股進到觀察名單裡,準備收益率進到我設定的目標,就開始買進。

 

若要自行設定搜尋特別股的條件,也可以直接進到特別股頻道中,從搜尋工具中來設條件

結合了美債及美國特別股的線上交易平台,是Moneydj所提供的一個追求穩定收益的線上下單平台,如果您的目標是穩穩當當,4-7%的收益,每季或每半非配息一次,那麼這個平台值得您細細研究。

人人都是巴菲特專案

xqlite banner

我尋找潛力股的方法之二~ 自由現金流穩定的公司股價夠低

照往例,盤不好的時候就來作功課,繼續來介紹我在空頭市場尋找潛力股的方法,今天跟大家介紹的是自由現金流穩定,而且股價夠低的選股方法。

所自謂自由現金流就是來自營運的現金流量-資本支出-利息支出-所得稅。這個數字代表的是公司真金白銀收進來而不會再出去的現金淨流入,如果這個數字長期都維持在一定的水準之上,等到股價跌到一定的水準之下,就值得留意。

為了挑出這樣的股票,我寫了兩個腳本

一個是自由現金流量過去n年每年都超過m億元

value1=GetField("來自營運之現金流量","Y");//單位百萬
value2=GetField("資本支出金額","Y");//單位百萬
value3=GetField("利息支出","Y");//單位百萬
value4=GetField("所得稅費用","Y");//單位百萬
value5=value1-value2-value3-value4;//自由現金流量
input:lm(1,"自由現金流量下限,單位億元");
input:years(8,"符合條件年數");
if trueall(value5>=lm,years) then ret=1;

另一個則是股價每股自由現金流量比低於一定值

value1=GetField("來自營運之現金流量","Q");//單位百萬
value2=GetField("資本支出金額","Q");//單位百萬
value3=GetField("利息支出","Q");//單位百萬
value4=GetField("所得稅費用","Q");//單位百萬
value5=value1-value2-value3-value4;//自由現金流量
value6=GetField("普通股股本","Q");//單位億元
value7=value5/value6/10;//每股自由現金流
value8=close/value7;
input:ratio(5,"低標");
if value8<5 and value8 >0 then ret=1;

結合這兩個腳本及其他價量的條件,組成一個選股策略如下

用這個腳本去回測過去三年所有普通股,停損設7%,20天後出場,回測報告如下

過去三年這個策略每年平均約有三成的報酬率。

未來在中美大戰下,市場可能比較艱難,可以趁這時候學些價值型投資的方法,畢竟好公司也只有這時候才有便宜的價位可以買。

 

xqlite banner

 

 

當沖語法支援的欄位說明

近來局勢詭譎多變,很多人選擇不留倉,不少網友問的問題都是跟盤中數據的演算有關,所以我想完整的跟大家說明盤中到底有那些欄位可以拿來運算,並且應用在策略雷達中。

盤中會即時跳動的數據,可以像下面這張圖般,分成幾類

1。最近的買價,賣價,成交價及最新一筆的成交量

2。五檔的委買價及委買量

3。五檔的委賣價及委賣量

除了上述的數據之外,期貨,選擇權及權證分別有一些根據上述數據跟其合約內容所衍生計算出來的欄位,綜合成以下的即時報價相關欄位

 

價的欄位主要是當天會跳動的價位,還有一些內建的統計數據值,如前N價,先前特定時點的收盤價

量的欄位包括單量,總量,委託量等,

期權相關的欄位

權證的欄位

 

指數相關的欄位

營收及財報欄位

當然沒有人可以完全記得住這些價位,只要在語法編輯器中打G之後選GetQuote(插入)

即可以進到下面的視窗中去選擇您需要使用的欄位

下面是系統內建的幾個腳本,給大家作個參考

盤中大單

input: atVolume(50,"大單門檻");
input: LaTime(10,"大單筆數");
input: TXT("須逐筆洗價","使用限制");

settotalbar(3);

variable: intrabarpersist Xtime(0);
//計數器
variable: intrabarpersist Volumestamp(0);

Volumestamp =q_DailyVolume;
if time < time[1] 
or Volumestamp = Volumestamp[1]
then Xtime =0; //開盤那根要歸0次數

if q_tickvolume > atVolume
//單筆tick成交量超過大單門檻
and GetQuote("BidAskFlag")=1
//外盤成交
then Xtime+=1; 
//量夠大就加1次
if Xtime > LaTime then begin
ret=1; 
Xtime=0;
end;

 

參考的腳本 盤中委買遠大於委賣

input:v1(2000,"委買五檔總金額(萬)");
input:v2(500,"委賣五檔總金額(萬)");
input:v3(1500,"委買委賣總差額(萬)");
input:v4(400,"單一價位委買金額下限");
input:v5(100,"單一價位委賣金額上限");

variable:bidtv(0),asktv(0),tb(0),ta(0),b1(0),b2(0),b3(0),b4(0),b5(0),s1(0),s2(0),s3(0),s4(0),s5(0);
condition1=false;
condition2=false;
condition3=false;

bidtv=q_SumBidSize;//總委買
asktv=q_SumAskSize;//總委賣

value1=q_BestBidSize1;//委買一
value2=q_BestBidSize2;
value3=q_bestbidsize3;
value4=q_bestbidsize4;
value5=q_bestbidsize5;

value6=q_bestasksize1;//委賣一
value7=q_bestasksize2;
value8=q_bestasksize3;
value9=q_bestasksize4;
value10=q_bestasksize5;

tb=bidtv*close/10;
ta=asktv*close/10;

if tb>v1 and ta<v2 and tb-ta>v3
then condition1=true;

b1=value1*close/10;
b2=value2*close/10;
b3=value3*close/10;
b4=value4*close/10;
b5=value5*close/10;
s1=value6*close/10;
s2=value7*close/10;
s3=value8*close/10;
s4=value9*close/10;
s5=value10*close/10;

if minlist(b1,b2,b3,b4,b5)>v4
then condition2=true;

if maxlist(s1,s2,s3,s4,s5)<v5
then condition3=true;

if close<>q_DailyUplimit then begin
if condition1 
or (condition2 and condition3)
then ret=1; 
end;

 

目前用getquote所撰寫的腳本,因為數據量太大,沒有提供回測的功能,但大家還是可以透過這樣的語法,像上面兩個例子般,找出盤中特殊的交易機會。

 

xqlite banner