Author Archives: 發財橘子

即將進入季節性多頭的股票

今天是十一月最後一個交易日,接下來就進到法人最可能作帳的12月份,到底會有多少股票以往常有作帳行情呢? 我之前有寫過一個找出過去十年最新還原月線至少超過七年上漲的選股策略, 明天起用這個策略來跑看看有那些股票12月份比較容易上漲。

這個選股策略的腳本如下

array:m1[10](0);
variable:x(0),count(0);
count=0;
for x=1 to 10
begin
m1[x]=(close[12*x-1]-close[12*x]);
if m1[x]>0
then count=count+1;
end;
if count>=7 
then ret=1;
outputfield(1,count,0,"符合的次數");

用還原月份去跑,可以跑出當月上漲機率超過七成的股票

我把這個腳本加上兩個條件組成一個選股策略

停損停利設為7%,過去3年的回測報告如下

勝率有到68%,交易次數也夠多,不過mdd比較大  空頭市場不適合使用。

好公司暴量起漲時

我寫過很多交易策略,有兩大類型勝率比較突出,一類是最低估的股票開始出量,另一類就是好公司暴量起漲,什麼是好公司呢? 我寫過一些不同的衡量標準,今天來跟大家介紹的是其中一種標準,這種標準搭配暴量起漲的腳本,出現的交易次數雖然不多,但勝率還可以。

一,選股標準

我用的選股標準條件還蠻多的

這裡我主要是去找那些各種因子都符合的個股

二,進場腳本

這裡用的還是常用的暴量起漲的腳本

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

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

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

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

if Condition1 And Condition2 And Condition3
then ret=1;

兩個搭配下來,回測報告如下

這裡用的停損停利都設為7%

兩年裡只有十一次的交易次數

對這種策略制定方向有興趣的朋友,可以自行修改選股及觸發腳本,但基本概念: 好公司+價量表現突出,是制定高勝率策略的一個不錯方向。

 

 

不寫程式如何制定交易策略

為了迎接明年三月要上線的逐筆撮合制度,有愈來愈多的朋友希望把投資決策系統化,為了要完成這樣的目標,開始接觸程式設計,但對非理工科背景的朋友,這是一件進入障礙蠻高的事情,所以我們一直接到一種需求:“能不能不必寫程式就可以制定出交易策略”,我今年三月曾寫過一篇

不用寫程式就能設計,回測及執行交易策略的方法

之後也寫過一篇

如何不寫程式就能讓電腦跑策略出訊號到手機中

透過這兩篇,只要稍具套裝軟體使用經驗的朋友,應該是可以透過勾選的方式,不必寫程式,就可以讓電腦自動把符合特定交易條件的股票,在手機上通知您。

接下來的問題在於,XS內建的條件,是否夠廣泛到,讓大家的IDEA都能找到對應的敘述?

今天就來跟大家分享系統內建的,以及我自己寫過的條件式

一,選股條件

一個完整的交易策略分成選股條件及交易時機,前者大多是使用日線及日線以上的數據來制定,後者則通常是日線及日線以下的分鐘線所寫出來的進場時機。我們先來了解如何不寫程式來設定選股條件。

XS系統內建的選股條件分成兩種,一種是選股條件,一種是選股腳本,在下面這篇文章中,我以財務面的選股欄位為例,跟大家介紹了如何使用選股條件及選股腳本來組合成一個選股策略

如何在XS選股中心用財報數字選股

另外我自己寫過的選股常用語對應的程式腳本也有不少,我在今年七月時有整理過一遍我寫過的選股腳本,把下載點放在下面的幾篇文章中

常用的選股腳本大匯總

量價常用的語法

指標類常用的語法

籌碼類常用語法

 

用這些選股條件,我們就可以組合出一個個選股策略,例如我在今年九月寫過以下的一篇文章

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

大家運用我們上面討論到的選股欄位,根據上面這篇文章所介紹的步驟,就可以不用寫程式,組合出自己心目中的選股策略。

二,交易時機

有了選股策略,如果把策略加入排程,每天電腦會自動跑出符合條件的股票,接下來我們就可以為這些符合條件的股票,勾選適用的交易時機腳本。

例如我我前些天介紹過一個用月營收創52期新高的選股條件,搭配三日均線突破十日均線進場策略的交易策略

用月營收創造的高勝率交易策略

所以在組合出選股策略之後,接下來就是選擇進場的策略,目前系統內建的交易時機策略, 都放在XScript編輯器中,如下圖

打開編輯器之後,選擇“警示”頁籤,打開系統資料夾,這裡有系統內建的359個進場時機腳本,選擇您要的腳本,滑鼠左鍵快速點撃兩次之後,即可以打開程式,這時就可以點撃 上方的加入雷達,開始設定進場腳本參數及要適用的選股策略了

大家可以直接根據自己的需求,選擇對應的進場策略。

但要如何快速找到自己想要用的腳本呢? 請參考下圖

可以利用XSCRIPT編輯器裡的搜尋功能,快速找到自己想要運用的腳本關鍵字,系統有無支援相關的腳本。

 

以上完整介紹了如何不寫程式就制定出自己心目中理想的交易策略,每個人想要完成的交易策略都不見得一樣,就算用同一個指標也可能用的參數都不同,我們會儘量收集各種大家可能用到的腳本,讓大家可以不需要寫程式就制定出想要的交易策略,沒有提供到的敘述,還忘大家不吝提點。

 

 

 

創百日新高但距低點不遠

最近盤比較震盪,來介紹一個屬於抄底型的選股策略~創百日新高但距低點不遠。這個策略是去尋找那些剛剛創百日來新高,而且離近二十日低點還沒有太遠的股票,這樣的選股策略,有還可接受的策略,優點是,因為離低點不遠,所以風險相對較可接受。

這個選股策略的選股條件如下

請看一下右上方就是選股條件,其中的選股腳本如下

input:day(200,"計算區間");
input:day1(20,"短線漲幅計算區間");
input:percents(10,"距離區間最低點漲幅");

value1=lowest(close,day1-1);
if close=highest(close,day-1)
and value1*(1+percents/100)>=high
and high >= value1*1.05

and volume >= average(volume[1], 5)

then ret=1;

我拿這個選股策略去回測,停損停利都設為7%,回測的結果如下

勝率雖然不到六成,但MDD只有9%多,風險在可接受範圍。

 

每個人的交易風格不同,有人喜歡追強勢股,有的人喜歡挑剛開始起漲的股票,有的人愛藍籌碼,有的人愛低價轉機股,這個策略適合想追高但又怕風險太高的投資人,因為股價能創百日新高代表基本面可能有所變化,但股價離20日內的低點不遠,代表短期漲幅還沒有過大。

以下就是這策略近期挑到的股票

 

 

產業板塊輪動圖介紹

美股隊長操作秘笈這本書裡有介紹了一個叫作板塊輪動圖的工具,這個工具把產業板塊的輪動,分成四個不同的階段

從落後到改善到領先到轉差,形成一個循環。

一般來說,當一個產業從落後到改善,代表這個產業開始在築底,當從改善轉向領先,代表已變成市場主流,等到轉差時就差不多該獲利了結了

那要如何判斷現在是屬於四階段裡的那個階段呢,書上用的是一個叫作JDK RS的指標,以及其衍生出來的JDK RS動力指標。

由於我查了半天也找不到精確的計算公式,所以就自己試寫了一個

variable:JDKRS(0);
variable:JDKRSMTM(0);
VALUE1=(rateofchange(close,1)-rateofchange(getsymbolfield("TSE.TW", "close", "D"),1))/100;
JDKRS=AVERAGE((1+VALUE1)*100,14);
JDKRSMTM=momentum(JDKRS,10);

Plot1(JDKRS,"KDJRS");
plot2(JDKRSMTM,"KDJRSMTM");
plot3(100);

上面這個是指標的畫法

我把它跟細產業指標放在一起做成一個自訂頁面

這樣大家可能還看的不是很清楚,所以我另外寫了一個選股腳本

variable:JDKRS(0);
variable:JDKRSMTM(0);
VALUE1=(rateofchange(close,1)-rateofchange(getsymbolfield("TSE.TW", "close", "D"),1))/100;
JDKRS=AVERAGE((1+VALUE1)*100,14);
JDKRSMTM=momentum(JDKRS,10)*200;
variable:status("");
if JDKRS>=100 and JDKRSMTM>=0 then status="領先"
else
if JDKRS>=100 and JDKRSMTM<0 then status="轉差"
else
if JDKRS<100 and JDKRSMTM>=0 then status="改善"
else
if JDKRS<100 and JDKRSMTM<0 then status="落後";

if status[1]="改善"and status="領先" then ret=1;
outputfield(1,status,0,"今日狀態");
outputfield(2,status[1],0,"前一日狀態");

這樣跑出來的就是那些從改善進到領先的細產業,以昨天跑出來的結果為例

符合條件的就有筆電,變壓器及金融其他三個細產業

以上是我手作的板塊輪動圖,我也不知道這到底是不是真的是原始作者用的公式,算是起個頭,有興趣的朋友可以產生自己的產業輪動圖

 

價值低估股暴量起漲

今天來跟大家介紹一個偏價值型的交易策略,這個策略是用現在的本業獲利去推估公司的長期價值,然後當股價遠低於長期估值,且開始暴量起漲時,就進場。

這裡我用的選股腳本是去尋找過去五年獲利穩定的公司,用目前的營業利益,然後假設未來十年的營業利益年增率及折現用的利率,把未來十年每一年的本業獲利折現,然後加總後加上淨值,再看看這個數字跟目前股價的比值,如果比值低於一,那就代表股價被低估。

選股策略

variable: idx(0), t(0);
input:r1(3, "假設未來十年營業利益年成長率");
input:r2(2, "未來十年平均年利率");
input:r3(100, "未來獲利折現合計淨值與市價比");

// 計算未來10年的營業利益折現值

value1=GetField("營業利益","Y"); //單位:百萬
value2=GetField("最新股本"); //單位:億
value3=GetField("每股淨值(元)","y");

value11 = maxlist(GetField("營業利益","Y"),GetField("營業利益","Y")[1],GetField("營業利益","Y")[2],GetField("營業利益","Y")[3],GetField("營業利益","Y")[4]);
value12 = minlist(GetField("營業利益","Y"),GetField("營業利益","Y")[1],GetField("營業利益","Y")[2],GetField("營業利益","Y")[3],GetField("營業利益","Y")[4]);

if trueall(value1>0,5) and (value11-value12)/value11<0.5 then begin
t = 0;
for idx =1 to 10 begin
t = t + value1 * power(1+r1/100,idx)/power(1+r2/100,idx);
end;

// t=百萬,value2=億,換成每股
value5 = t / value2 / 100;
value6=close/(value3+value5);

if value6<r3/100
then ret=1;
end;

outputfield(1, value5, 2, "估算每股營業利益");
outputfield(2, value6, 1, "市價/淨值比", order := -1);

警示腳本

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

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

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

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

if Condition1 And Condition2 And Condition3
then ret=1;

回測報告

以下是過去兩年及三年的回測報告,停損停利我都設7%

這個策略除了勝率不錯之外,MDD也夠低,自是一個低風險的交易策略

用月營收創造的高勝率交易策略

今天是11日,10月份的月營收都完全公佈了,趁這時機,跟大家介紹一個以月營收為基礎 ,勝率超過六成的交易策略,大家可以根據這腳本,進一步調整參數或加入更多條件,發展出更高勝率的私房交易策略。

 

月營收創52個月來新高

這個交易策略的概念還算單純,就是找到月營收創52個月新高,而且股本小於50億,且近三個月yoy數字表現很好的公司,然後在找到符合條件的股票後,當這些股票移動平均線出現黃金交叉時進場。

以下是選股策略的完整條件集。

選股策略

用最新的十月份營收來執行選股,選股的結果如下

符合條件的共有十檔

至於警示策略,用的是短期均線與長期均線黃金交叉

警示策略

input: Shortlength(3); setinputname(1,"短期均線期數");
input: Longlength(10); setinputname(2,"長期均線期數");

settotalbar(8);
setbarback(maxlist(Shortlength,Longlength,6));

If Average(Close,Shortlength) crosses over Average(Close,Longlength) then Ret=1;

回測報告

過去兩年的回測報告如下  停損停利我都是用7%

 

當然大家不見得對這樣的回測報告感到滿意,我提出這個策略的作法是想拋磚引玉,大家可以自己調整選股及警示條件,發展出勝率及報酬率更高的私房策略。

籌碼面交易策略之投信動真格的

今天來跟大家介紹另一個籌碼面的交易策略: 投信動真格的。 這個策略的概念是,如果投信持續買一檔股票且累計超過一億台幣,而且這檔股票股價不到100元,然後股價也同時突破五日均線,代表這是一檔投信在用力追價大買的股票,過去幾年這樣的股票回測下來,超過七成的機率會賺錢。

這個策略近期的代表作就是鴻海

在10/29日鴻海就符合了這個策略的進場訊號

接下來跟大家分享相關的腳本及回測報告

選股策略

value1=GetField("投信買賣超","D");
if value1 <=0
then value2=0
else
value2=value2[1]+value1;
value3=close*value2/10;//單位:萬元

if value3 crosses over 10000
and close<100

then ret=1;

警示策略

input:period(5);
if close crosses over average(close,period)
then ret=1;

回測報告

這裡我們依然是7%停損停利,上面兩張分別是回測兩年及三年的回測報告,不管勝率還是年均報酬率,都十分迷人,唯一的缺點是,空頭市場投信認賠砍起股票時也是很粗殘的,所以這個策略在大空頭市場MDD蠻嚇人的。不過如果不是大空頭市場,這是一個還蠻不錯的交易策略。

 

地緣券商買超的交易策略

有網友來函問到可否介紹一些籌碼相關的交易策略,原因是沒有讀過會計,覺得財務數據像天書一樣,但籌碼是比較容易理解的。那麼我先來跟大家介紹一個勝率快有七成的籌碼相關交易策略~ 地緣券商連三日買超且短期均線突破長期均線。

這個策略,是去尋找公司附近券商分公司,如果連續三日買超該公司股票都超過200張,而且三日均線突破十日均線,那就是一個進場訊號。

這裡用的是系統內建的地緣券商買賣超張數這個欄位,這裡所謂的地緣券商定義,是以個股總公司為圓心, 找出位在公司附近的券商分點, 預設的半徑為3公里 , 如果距離總公司小於3公里的券商分點家數超過30家, 距離改為1 KM, 反之, 若券商分點家數為0, 距離改為10 KM; 符合上述條件分點,扣除外資券商, 即列為此個股的地緣券商。

選股腳本

value1=GetField("地緣券商買賣超張數","D");
if trueall(value1>200,3)
then ret=1;

警示腳本

input: Shortlength(3); setinputname(1,"短期均線期數");
input: Longlength(10); setinputname(2,"長期均線期數");

settotalbar(8);
setbarback(maxlist(Shortlength,Longlength,6));

If Average(Close,Shortlength) crosses over Average(Close,Longlength) then Ret=1;

回測報告

上述的回測報告,停損停利都設7%,各位可以發現,這樣的交易策略,在空頭市場,MDD達到25%,代表這個策略,在空頭市場其實並不管用,這也可以說明,為何坊間有些號稱很厲害的籌碼方面的工具,在空頭市場使用者必須很小心使用的原因。不過如果單單看勝率,這個很簡單的策略,卻有著很不錯的勝率。

 

另外再次說明一下,我一直相信,特定的選股策略,搭配特定的進場策略,比較容易組合出可以實戰的交易策略,我是比較難找到放諸1700檔股票,在波段上皆適用的策略,所以我介紹的這些以日線為基礎的交易策略,通常都會搭配一個選股策略跟一個警示策略,在設定策略雷達時,必須如下圖般,在執行商品時選擇“選股”,然後使用特定的選股策略。

 

這點是要跟大家特別說明的

 

PB接近十年低點後的均線黃金交叉

如果股價淨值比接近十年低點,通常有兩種情況,一種是底部到了大股東的最後防線,另一種則是公司的基本面在惡化中,這時候如果三日均線能突破十日均線,那麼第一種的機率會高一些。於是,我找出PB接近十年低點的股票,然後在三日均線如果突破十日均線時進場,停損停利都設為7%,回測的結果發現,這樣的交易策略,有很不錯的勝率,而且風險也不高,今天就介紹給大家。

選股策略

input:r1(10); setinputname(1,"PB距離N個月來低點只剩N%");
input:r2(60); setinputname(2,"N個月以來");
//input:TXT("僅適用月資料"); setinputname(3,"使用限制");
setbarfreq("M");

if barfreq <> "M" then raiseruntimeerror("頻率錯誤");

value1=GetField("股價淨值比","M");
value2=lowest(GetField("股價淨值比","M"),r2);
value3=average(GetField("股價淨值比","M"),r2);

if value1 < value3 and value1 < value2*(1+r1/100)
and close cross over average(close,10)
then ret=1;

setoutputname1("股價淨值比");
outputfield1(value1);

以昨天為例,這個腳本選出來的股票如下

至於警示腳本,則是使用3日均線突破10日均線。

警示腳本

input: Shortlength(3); setinputname(1,"短期均線期數");
input: Longlength(10); setinputname(2,"長期均線期數");

settotalbar(8);
setbarback(maxlist(Shortlength,Longlength,6));

If Average(Close,Shortlength) crosses over Average(Close,Longlength) then Ret=1;

回測報告

停損停利都設為7%,因為PB都接近十年低點了,想說再跌7%的機會不大,回測過去兩年及四年的回測報告如下

這也是一個勝率在七成左右,交易次數蠻多且MDD不高的交易策略