Author Archives: 發財橘子

主力長期收集的股票

當股價跌到一定程度,但基本面其實不錯,往往會讓長期持股者起心動念,開始增加持股,這裡說的長期持股者,往往就是大股東。 那麼我們要如何知悉有那些長期持股者在開始買股票呢?今天跟大家來介紹一個基於這種思維而設計的選股策略。

首先,我想找的股票要符合以下的特徵

1.基本面表現仍不錯,最好月營收跟去年相比仍能維持成長。

2.最近一個交易日主力還是有買超且買超的張數達一定的比例。

3.殖利率夠高,讓期持股者覺得這價位值得開始進場吸納籌碼。

4.籌碼面有出現持續被收集的跡象。

於是我訂了以下的選股條件

2019021504

其中的主力長期收集是一個選股腳本,腳本內容如下

input:period(60,"計算區間");

settotalbar(120);

condition1=false;
value1=GetField("分公司買進家數","D");
value2=GetField("分公司賣出家數","D");
if countif(value1<value2,period)>period/2
//賣出的分公司家數要比買進分公司家數多代表籌碼從
//各個分公司被收集到特定的分公司
then condition1=true;

value3=GetField("主力買賣超張數","D");
if value3>0
and summation(value3,5)>0
and summation(value3,20)>0
and summation(value3,60)>0
and summation(value3,120)>0
//不同天期主力都買超,代表主力長期一直都站在買方
and close>open*1.03
and condition1
then ret=1;

這個腳本的目的是找到籌碼長期被收納的股票

這樣的選股策略,可以挑到像下面這兩檔的股票

2019021503 2019021502

都是很典型的股價跌到長期持股者願意進場持續吸納的標的

把這個選股策略拿去回測過去三年,出場點設20天之後,回測報告如下

2019021501

從回測報告上來看,這樣的選股策略在空頭末期到多頭初期是很有用的,但在多頭末期及空頭時期則表現很差,這是因為長期持股者通常是在空頭末期到多頭初期才會進場,或者說長期持股者不會逆市拉昇,所以當盤不好時,他們樂得以更便宜的價位來買進,所以這個策略只是找出長期持股者在吸納的股票,至於進場時點,還需要輔以其他的考量。

xqlite banner

終極震盪指標

Ultimate Oscillator (Ultimate 或稱 UOS/ULT) 終極指標是由 Larry Williams 所創。 終極指標是計算三個不同週期買賣壓的振盪指標, 利用每個週期間的長短做加權,越靠近當日的數據,權重越大,所以終極指標較一般的均線敏感,能體現股價近期的變化趨勢,加強指標的可靠度。

指標的腳本如下

Var : ruo(0),uo(0),bp(0); 
bp=close-truelow; 
input:l1(7),l2(14),l3(28); 
Value1=summation(bp,l1); 
Value2=summation(bp,l2); 
Value3=summation(bp,l3); 
Value4=summation(truerange,l1); 
Value5=summation(truerange,l2); 
Value6=summation(truerange,l3); 
ruo=(value1/value4)*4+(value2/value5)*2+(value3/value2); 
uo=ruo/7*100; 
plot1(uo);

所畫出來的圖樣如下

uo

Larry Williams 認為現行使用的各種振盪指標,對於週期參數的選擇相當敏感。不同的市況,不同參數設定的振盪指標,產生的結果截然不同。 因此,選擇最佳的參數組含,成為使用振盪指標之前一項重要的環節。

為了將參數週期調和至最佳狀況,Larry Williams 測試後先找出了三個週期不同的振盪指標,再將這些週期參數,按照反比例的方式,製作成常數因數。 然後,依照加權的方式,將三個週期不同的振盪指標,分別乘以不同比例的常數,加以綜合製作成 UOS 終極指標指標。

經過一連串參數順化的過程後,UOS 指標比一般單一參數的振盪指標,更能夠順應各種不同的市況。 UOS 是一種多方位功能的指標,除了趨勢確認及超買超賣方面的作用之外,它的”突破”訊號,不僅可以提供最適當的交易時機之外, 更可以進一步加強指標的可靠度。

恰奇震盪指標

先賢們在運用K棒時,常常會把當日收盤價減去當日最低價,當作是當日多頭的戰功,把最高價減收盤價當作當日空頭的實績。

恰奇震盪指標是應用這樣的想法,把多頭戰功減去空頭實績作為當日多空的淨差距,然後除以最高價減最低價,再乘以當日成交量,這樣就是當日多空的淨能量。

然後再算出近五個交易日的加總淨能量去除以近日加總的成交量,算出近五日淨能量佔成交量的比例。

然後再算出這一比例的10日與20日移動平均

最後把這兩個數字相減就是恰奇震盪指標

根據上述的想法寫出來的指標腳本如下

input:length(5),length1(10),length2(20); 
Value1=((close-low)-(high-close))/(high-low)* volume; 
Value2=summation(Value1,length); 
Value3=summation(volume,length); 
Value4=Value2/value3; 
Value5=average(value4,length1); 
Value6=average(value4,length2); 
Value7=value5-value6; 
plot1(value7);

用在加權指數上,所畫出的圖就如下圖,感覺可以作為一個領先指標。

恰奇震盪指標

估波指標」(Coppock Indicator)

除了興登堡兇兆之外,市場也有類似的,透過技術指標,捕捉轉角市的指標,其中之一,就是「估波指標」(Coppock Indicator); 與「興登堡兇兆」最大的差別,就在於「估波指標」主要是用作捕捉大市見底(非見頂)的指標。

估波指標是為長線投資者追蹤市場情緒變化,進而預測股市見底訊號的技術指針。這指標是由經濟學家Edwin Coppock所創,並最先應用在每月數據中,計算方法如下 :

Coppock = WMA〔10〕of(ROC〔14〕+ROC〔11〕)

*WMA = 加權平均數;ROC = 變化速率

換言之,「估波指標」是14個月和11個月價格變化兩者加總後的10個月加權平均數。如前介紹,這指標有很高的精準度;自二次大戰以來, 「估波指標」先後在美股發出17次入市訊號,有16次均能準確捕捉標普500指數的周期底部。

Coppock 預計股市下瀉11至14個月後,市場情緒將有所改善,大市也理應可以出現回升。故此,Coppock以這些參數制訂此程序。

至於如何利用「估波指標」,一般是待指數回落至0%以下水平後,並且掉頭回升時,便是最佳的入市訊號。 雖然「估波指標」原先只是用作捕捉股市長線底部,惟也可以利用這指標作「估頂」的參考。Var : coppock(0);

Value1=rateofchange(close,14);

Value2=rateofchange(close,11);

Value3=Value1+Value2;

Value4=xaverage(value3,10);

plot1(value4,”coppock indicator”);

估波指標的樣本

估波指標

迴圈

當同樣的指令需要被重覆執行時,用的是迴圈的相關語法,如果知道同樣的指令要被執行多少次,用的是for這個語法。

語法的流程如下圖

for的流程圖

例如當我們要設計一個加總函數,計算過去N期某數據的加總值時,我們就可以用到這樣的語法,把加總函數設計如下

sum

再例如我們要計算一段時間的K線,然後計算符合某特定條件的K棒數時,也可以用For這樣的語法

計數器

但有的時候我們不知道一共要執行多少次,這時候就可以用while這個語法,當判斷式成立時,While迴圈會重複的執行,一直到判斷式回傳False為止。

while1

如果在迴圈內需要執行多個指令的話,則可以使用Begin/End的方式來包圍。

while2

舉個例子

while例子

上述範例內While的迴圈會一直執行,直到 i 的數值 >= 5時才會停止。每次執行時SumValue會累加前幾期的Close數值,同時變數i 會每次加1。以這個範例而言,SumValue的數值會變成是最近5期收盤價的加總,最後算出AvgValue為最近5期的平均收盤價。

 

 

 

 

當成長股突破久未突破的季線

 

 

大家都愛成長股,但成長股往往在營收數據有所表現之前就有所表現,甚至是營收公佈後反而是短線賣點,我試著先挑出成長股,然後當這些成長股的股價技術指標出現買進訊號時才進場,有些這樣的組合型策略勝率還不錯。

因著自己入行時是先在外商銀行當外匯交易員,所以首先接觸到的是技術分析,後來到了投顧當研究員,才接觸基本面研究,所以要推股票的時候,會用基本面過濾標的,然後用技術面決定進場的時機。今天要跟大家介紹的選股策略,就是基於這樣的概念。

首先跟大家介紹我列出來的成長型股票條件

2019011902

這樣的選股條件是挑出最近一個月營收大漲,而且過去一陣子表現在同業間算是中上,然後營運規模不至於太小的公司。

月營收年增率超過兩成這條件是有點苛,但怕符合條件的股票太多,容易造成過度交易,所以我就先這樣設。

以下是用最近一期營收所挑出來的股票

2019011903

接下來在技術面上我用了XS系統內建的一個交易策略叫作出水芙蓉

這個策略的名稱是大陸用語,概念就是找出有很長一陣子股價在季線之下,現在股價終於站上季線。

其腳本如下

input:period(35,"股價低於季線持續的時間");
if trueall(close[1]<average(close,66),period)
and close crosses over average(close,66)
then ret=1;

這腳本在XS裡是內建的警示策略,我把它拿來改成選股腳本,

把上述的選股條件裡加了上面這個選股腳本,然後拿來作回測,回測的設定是停利設8%或20天後出場,這是因為月營收一個月公佈一次,因此必須在新月營收公佈前就先出場,等新的月營收公佈後再用新的數據來決定標的。

回測的結果如下

2019011901

三年一共38個交易機會,平均一個月差不多一個交易機會,交易次數不多,但勝率不錯,只是輸的時候輸不少,所以平均報酬率被拉了下來,但在這一波下跌之前,績效還算是不錯的。

舉這個例子,是跟大家說明,技術面及基本面綜合考量所組出來的選股策略,還蠻符合我們人腦的思維方式,甚至有些朋友會再加上籌碼面的條件,因為電腦其實協助我們的,是把我們對市場的體驗,用程式或操作介面組出一些規則,再透過回測來驗證這些規則是不是真的禁得起考驗,但這些規則,還是離不開我們對市場的觀察。

當很少大漲的股票開始多次大漲時

還活躍在市場的老朋友們,得知我現在可以用語法定出選股策略後,偶爾會給個想法,讓我試試看能不能真的幫他們寫成策略,每天自動跑結果,省去他們每天作功課的時間,最新一個考題是,能不能找出之前很少大漲的股票,開始出現不止一根長紅時。

這考題來自一位想把一身經驗傳承給兒子的市場老手,這位老手最早是營業員,後來離開營業檯,轉進貴賓室,和我以前到處串門子認識的大戶,是貴賓室裡的鄰居。他對市場的嗅覺很敏銳,“有效很久的作多方法如果開始沒有效,可能就是空頭要來了”,這句話就是他教我的。

據他的觀察,如果一檔股票,過去一整年很少大漲,最近一陣子,卻不只大漲一兩次,那就代表這檔股票可能轉性了,短線可能有故事,值得留意。

我根據這樣的想法,寫了腳本如下

input:speriod(20,"短期期區間");
input:lperiod(200,"長天期區間");
input:count1(3,"短期大漲次數下限");
input:count2(5,"長期大漲次數上限");
input:ratio(7,"大漲的漲幅下限%");
value1=countif(close>=close[1]*(1+ratio/100),speriod);
//近期大漲次數
value2=countif(close>=close[1]*(1+ratio/100),lperiod);
value3=value2-value1;
//長期大漲次數(扣近期)
if value1 cross over count1 and value3<=count2 then ret=1;

我把短期,長期,大漲的定義,符合大漲條件的次數都參數化,各位可以自己試看看,我這裡用的參數基本上都是根據他的原始想法。

挑出來的股票如下

2019011303

用這個腳本去選股,回測時,根據他的意思,持有二十天,如果漲幅超過8%就停利

然後我分別回測這一波多頭市場及過去幾年的勝率及報酬率

在多頭市場的回測報告如下

2019011302

在多頭市場兩年有116個交易機會,平均一個月有五次機會,勝率超過七成。

過去三年的回測報告如下

2019011301

從圖上看,這個策略在大盤急跌時,比較沒有抵抗力,平常則有不錯的勝率及報酬率,分享給大家再去做進一步的優化或修改。

盈餘穩定且低本益比選股法

最近常常提到我師父,昨天一開年就大跌,讓我想起民國84年,那一年開年第一個月就是長黑,後來一整年都很難操作,

2019010304

我師父那一年挑了一些盈餘不受景氣影響,然後股價有明顯回落,本益比低到一定程度的股票,到了當年的年底,就是這些股票撐住了他的績效。

現在大環境不確定性因素多,又沒有一個大的科技創新可以形成一整片族群的樂觀氣氛,讓我感覺似乎又很像民國84年,所以我想跟大家介紹我師父的這個選股策略。

這個選股策略的條件如下

2019010303

這裡的本益比用的是系統內建的,也就是用過去四季合計的稅後盈餘去計算的本益比

當中加上月營收年增率大於零這個條件,主要是防止挑到基本面已經GG的公司

我拿這個選股法去回測,持有天數設為60天,過去三年的回測報告如下

盈餘穩定(2.44)

如果回測過去七年,勝率降到64.5%,但平均報酬率提高到6.11%。

顯示這個選股法長線下來,是個值得參考的策略。

只是從回測報告上來看,績效最好的時候還是空轉多的時候,在大空頭市場一樣是覆巢之下無完卵,這點是要跟大家特別說明的。

這個選股法昨天跑出來的股票如下

2019010302

這幾檔好像還是多少會受景氣影響,就供大家參考囉

選股平台的非官方使用說明書

XS選股平台這次增加大量的內建選股策略,使用者以這些策略為藍圖,可以打造各式各樣不同的選股策略,透過回測,留下勝率較高的策略,然後讓系統每天自動執行,再透過每日自動執行選單中的多空兩方策略總表,可以看到那些股票符合最多不同的選股策略,這麼做,可以挑出市場中,高手們選股可能的交集。

 

從買進第一張股票開始,在尋找聖杯的路上,我已尋尋覓覓了30年,透過XS的選股中心,我把這30年無數交易經驗,以及關於股票投資的所有體悟,全部化成電腦自動執行的流程。

我會這麼設定選股流程,起因於三個體悟

一,集合所有優秀研究員的思維,尋找不約而同都背書的標的

我很懷念當年當操盤人的日子,彼時,優秀但研究方法殊異的同仁們,每天從技術面,籌碼面,基本面,市場面,無私分享挑中的標的,這些同仁有人很會看盤,對盤面很敏感,有人是技術分析大師,對於K線及指標背後的意義,常有獨特的洞見,有人對籌碼相關數據很在行,對於籌碼的收集與發散,對於主力的成本與操作的手法,瞭若指掌,至於我們這些研究員出身的人,則各自有不同的評價模型,透過這些模型,我們持續尋找成長股與價值型股。

在每天早上的聚會裡,我們分享每個人根據自身專長所挑到的股票,而我,則從這些股票裡,再找出今天要開單交易的標的。

在這段美好的合作日子裡,那些後來讓我們賺到錢的股票,往往有來自不同背景的同仁們,不約而同的背書。

XS選股中心的設計,每個選股策略,代表著一個研究員的選股方法,透過回測,可以挑出過往有優秀表現的選股法,就像挑出了一群優秀的研究員。

把這些選股法加到每日自動執行,每天就可以從多方策略總表裡,找到符合最多選股法的股票,這些股票,就好像有來自不同背景的優秀研究員們,不約而同的背書。

這樣的設計,讓XS選股中心的使用者,雖然獨自行走於市場,但背後卻有強大的研究資源來支持。

 

二,股市裡也是有貝氏定理

就像醫生在診斷感冒時,會看患者有沒有發燒,喉嚨痛,流鼻涕,發燒後確診感冒的機率可能是40%,喉嚨痛的機率是50%,流鼻涕的機率是45%,但如果患者三者皆發生,那麼感冒的機率就高很多。

XS選股中心的概念亦如是

一檔股票上漲,可能伴隨著各種現象,這些現象單一發生時,股票上漲的機率不見得很高,但如果有多個現象都同時發生了,那麼股票上漲的機率就會高很多。

三,追求聖杯的道路,在尋找一個個高勝率的策略

透過回測,我發現,市值在前三百大的股票,突破繼續型態時,勝率達到65%,估值折價大的股票盤整後出量時,勝率超過6成,平台整理突破的股票有61%的勝率,這些策略,幫我編織成一張愈來愈密的網,網住了一個個獲利機率變高的交易機會。我們不可能找到長期可以維持勝率百分之百的交易機制,但我們透過各種高勝率策略的交集,可以找出比單一策略更高的勝率,然後剩下的,就是不斷的交易及改進單一策略,讓機率最終發揮它該有的作用。

根據這三個體悟 ,我在使用XS選股時,採取的步驟如下

一,透過系統內建及我自己設計的選股策略,開發出各種不同的選股策略

2018122401

二,利用回測,找出各種勝率較高的策略

2018122402

三,把這些勝率較高的策略啟動每日自動執行

2018122403

四,透過作多選股清單,找到同時符合多個策略的股票

2018122404

按符合策略可以依符合的次數來排序

2018122405

這樣出來的標的,每天需要進一步Follow的股票再去做功課,可以節省不少看大量數據作功課的時間,把時間留來對入選的個股作更深入的研究,或是發展更多更高勝率的選股策略。

最後分享一下我這麼做之後的幾個心得

一,不同的操作頻率,要用的選股策略不一樣。例如隔日沖的,回測的持有期間就是兩天,短線的可能是五天,不要把作短線跟作長線的混在一起

二,最好用的分析方式不要一樣。例如我自己開發的策略很多都是價值型投資,這樣出來的標的同質性會很高,但勝率拉不上去。

三,進到每日自動執行的策略最好每年有一定的交易次數,這樣才不會每天都跑不出標的

 

以上是我在使用選股平台時的心得,祝大家操作順利。

 

 

累計值的寫法

有網友問到,如果想要在一分鐘的期指上,畫出今天開盤迄今上漲量累計值減下跌量累計值的指標,應該怎麼畫? 我想可能有不少朋友都曾經起心動念,想要把當天一分鐘,五分鐘,一小時等不同頻率的數據,計算出一個當天的累計值,作為交易的參考,所以我們今天就來探討,這樣的想法要如何落實為程式碼。

首先,請大家先看一個系統內建的指標:累積量。這是在計算當天到目前為止的成交量,讓使用者雖然使用日頻率以下的頻率寫腳本,也可以計算出當天累積到目前為止的成交量。

系統提供的腳本是這麼寫的

variable:tv(0);//當日累積量~ 宣告要計算的累計值

if date<>date[1] then // 當不同天期時的第一根要怎麼計算
 tv=volume
else    //非當天第一根的累計規則
 tv=tv[1]+volume;

plot1(tv,"累積量");

這個腳本很清晰地呈現常日累計值的寫法

所以根據這樣的例子,我們就可以來寫累計上漲量減下跌量的腳本了

//計算累積上漲量
variable:upvolume(0);//當日累積上漲量
//先定義累積上漲量的計算方法
if date<>date[1]and close>=open
then upvolume=volume
//以上是定義當天第一根上漲量
else begin
//以下是定義從第二根起累計上漲量的寫法
if close>=open then 
upvolume=upvolume[1]+volume
else
upvolume=upvolume[1];
end;

//計算累計下跌量,作法跟累計上漲量一樣

variable:downvolume(0);//當日累計下漲量
if date<>date[1]and close<open
then downvolume=volume
else begin
if close<open then 
downvolume=downvolume[1]+volume
else
downvolume=downvolume[1];
end;
//分別算出累計上漲量與下跌量後
//拿累計上漲量減去下跌量
value1=upvolume-downvolume;


plot1(value1,"累計上漲減下跌量");

根據這個腳本畫出來的圖如下

2018122001

這重腳本的寫法有幾個重點

一,先確定每天的第一根值怎麼算出來

二,確定第二根開始之後怎麼累計

三,然後才是去寫不同累計值之間的運算