Author Archives: 發財橘子

等待殺過頭的中小型成長股上昇趨勢成形

 

川普之後的國際金融情勢,詭譎多變,外資連日賣超,加權指數欲振乏力,這幾日被問到盤怎麼看時,我的答案都是,等待中小型股回昇的那一天。

怎麼說呢?  請各位先看下圖

2016111701

上圖裡,這一年半裡,OTC指數有兩次跌到117.5,之後就反彈回昇,代表這裡是台灣中小型股長期買盤會進駐的位置,這次OTC指數跌到這邊止跌,算是合理。

如果這裡最後被跌破,從線型上是三次到底跌破,操作上就要更保守,但如果這裡確實是大股東回補的價位區,那麼這邊就是我們仔細挑出優質中小型股,然後靜待上昇趨勢成型的時候

下圖是在櫃買中心掛牌的公司,申請實施庫藏股的家數圖

2016111702

昨天共有22家申請,是一年來的新高,顯示有愈來愈多中小型股的老板,覺得股價超跌了。

為什麼只看中小型股呢? 因為

1.少外資賣壓

2.跌到起漲點

3.目前量不大,中小型的比較拉得動。

那麼接下來要問的是,那要用什麼策略來挑股票呢?

這裡我介紹一個趨勢成形的腳本,用的是大家很常見到的DMI指標裡的ADX指標,我寫的腳本如下

1// ADX趨勢成形
2// 用有量的中小型股,5%停利,5%停損
3
4if GetSymbolField("tse.tw","收盤價")
5> average(GetSymbolField("tse.tw","收盤價"),10) 
6//大盤OK
7then begin
8input: Length(14,"期數"), Threshold(25,"穿越值");
9
10variable: pdi_value(0), ndi_value(0), adx_value(0);
11
12 
13DirectionMovement(Length, pdi_value, ndi_value, adx_value);
14
15if adx_value Crosses Above Threshold
16//adx趨勢成形
17and pdi_value>ndi_value
18//+DI>-DI
19
20then ret=1;
21end;

這是一個尋找上漲趨勢成型的操作策略,短線應該有一定漲幅了,所以停損停利都設為5%

2016111602

過去三年用這個腳本跑有量的中小型股,回測報告如下

2016111603

我會推薦用這個指標,原因是這個指標用在中小型股,勝率比用在其他的股票要高,例如用台灣50 指數成份股去跑,回測報告如下

2016111604

 

用高股利高股息的股票去跑,回測報告如下

2016111605

但用中小型股去跑,勝率有六成。

若是我再加上以下這一行

1and close <close[30]

那麼再去跑回測,回測報告如下

2016111605

這表示如果股價波段下跌後,再重新出發時,這個腳本的勝率更高。

 

以上是根據現下時勢對應的腳本,這種根據不同時勢運用不同腳本的作法,就好像"你有張良計,我有過牆梯",用不同的交易策略去面對不同的時局。

以前我看人家訪問計量大師西蒙斯時,他曾提過,我們不斷地開發交易策略,很多交易策略是在特定的情況下才會被啟動,以前我看不大懂,現在,略懂! 略懂!

 

 

 

 

 

 

雲端策略中心精進版之41~投信初介入

散戶一直有一種禿子跟著月亮走的交易方法,顧名思義,就是跟著法人走,法人進就跟著進,法人出就跟著出,這種盯著法的操作法,在以往投信主導市場且市場走基本面帶動的大多頭市場時,還蠻有用,但這幾年投信的操作手法有些調整,今天要跟大家介紹的,是一個尋找投信剛介入股票的短多交易策略。

這個策略是去尋找過去一陣子,投信都沒啥買超的股票,當多頭市場時,這類股票突然出現投信買超佔當日成交量超過15%的情況,且股價有所反應,這時候短線作多的勝率可以達到58%。

我把上面的條件寫成以下的腳本

1if GetSymbolField("TSE.TW","收盤價")
2>average(GetSymbolField("TSE.TW","收盤價"),10)
3then begin
4
5input: day(30, "投信交易期間");
6
7value1 = summation(GetField("投信買賣超")[1], day); 
8value2 = summation(volume[2], day);
9
10
11condition1 = value1 < value2 * 0.02;
12//先前投信不怎麼買這檔股票
13
14condition2 = GetField("投信買賣超")> volume[1] * 0.15;
15//投信開始較大買超
16
17condition3 = H > H[1];
18//買了股價有往上攻
19
20condition4 = C > C[1];
21//今天收盤有往上走
22
23RET = condition1 and condition2 and condition3 and condition4;
24
25end;

回測設定我用的是有量的中小型股,出場點我設為十天之後

2016111102

回測報告如下

2016111101

 

符合上述條件的股票還蠻多的,有579個交易機會,其中339次會賺錢,

勝率跟各項數據都顯示,這是一個可以follow的交易策略

 

雲端策略中心精進版之40~大單敲進線又棒的中小型股

追強勢股是老市場們在多頭市場裡,最愛的交易策略,在我認識的市場老手中,存活超過二十年的,有很大的比例在多頭市場都是用這一招在交易,我整理了一下他們各自不同追強勢股的方法,動能夠強,漲幅夠大,是大單在敲這三點,是他們的最大公約數,今天跟大家介紹的交易策略,就是在這樣概念下寫出來的。

我寫的腳本如下

1condition1=false;
2condition2=false;
3
4if getsymbolfield("tse.tw","收盤價") > average(getsymbolfield("tse.tw","收盤價"),10)
5then begin
6
7 if linearregslope(momentum(close,10),10)>0
8 and momentum(close,10)>0
9 then condition1=true;
10 //動能夠強
11 value2=GetField("總成交次數","D");
12 
13 if value2<>0
14 then value3=volume/value2;//單筆成交張數
15 
16 if average(value3,5)crosses over average(value3,20)
17//單子比以往大
18 and close>=close[1]*1.03
19//單子漲幅超過3%
20 then condition2=true;
21 
22 if condition1 and condition2
23 then ret=1;
24 
25end;

回測時,我用的是有量的中小型股,停損停利都設為6%

2016110902

回測報告如下:

2016110901

過去三年交易次數非常的大,共有876次,平均一天有一次到兩次,其中548次可以獲利出場,勝率達到6成以上。

這樣的回測顯示,短線追逐強勢股確實有其道理。

以前我測試過,在多頭市場,就算用所有的股票下去跑,只要漲3%就進場的策略,勝率都過五成,顯示漲3%是一檔股票多頭走勢的進攻號角。

雲端策略中心精進版之39~中小型股整理結束

先前跟大家報告過,我最愛的多頭策略是,整理結束繼續上攻的型態,也跟大家分享過平台整理後突破,一底高過一底的三角型或楔型整理突破,或是平台三角形整理突破,今天要跟大家介紹的,是一個化繁為簡的整理結束訊號,它的要求很簡單,只要是一段漲勢後,十天內高低點的漲跌幅不到一定比率,然後股價突破整理期的最高點,就足以形成一個短多策略的買進訊號。

我把上述的條件畫成一張圖如下

2016110503

 

對應寫出來的腳本如下 :

1input: Periods(10,"計算期數");
2input: Ratio(7,"近期波動幅度%上限");
3
4settotalbar(300);
5setbarback(50);
6
7if GetSymbolField("tse.tw","收盤價")
8>average(GetSymbolField("tse.tw","收盤價"),10)
9and average(GetSymbolField("tse.tw","收盤價"),5)
10>average(GetSymbolField("tse.tw","收盤價"),20)
11then begin
12
13condition1 = false;
14
15if (highest(high[1],Periods-1) - lowest(low[1],Periods-1))/close[1]
16 <= ratio*0.01 
17then condition1=true//近期波動在7%以內
18else return;
19
20if condition1 
21and high = highest(high, Periods)
22//最高價創波段新高
23
24and lowest(low,periods+20)*1.1<lowest(low,periods)
25
26then ret=1;
27end;

回測設定我用的是有量的中小型股,停利設8%,停損設7%

2016110502

回測過去三年的報告如下:

 

2-016110501

在464次的交易機會裡,能夠賺錢出場的次數達286次,勝率超過六成,如果把盤整的高低差設成5%,勝率更高,以下是其回測報告

2016110504

勝率都快接近65%了。

我在撰寫這個策略的過程中發現,這個策略只能用在大多頭市場,也只能用在一段漲勢後的整理,如果是空頭市場或是一段跌勢之後的整理,就算是突破整理期間的高點,都不見得是個好的買點。

 

雲端策略中心精進版之37~開高後不拉回的中小型股

以前台股只有幾百檔的時候,我有個同事,每天早上都拿了一份在K線圖上畫了很多圈圈的財訊快報來公司,被他圈中的股票,都有兩個特徵,一是先前漲幅不大,二是昨天開高收最高,現在台股有1500檔,要一檔一檔挑這樣的股票財訊快報也不再提供線圖了,我試著把這樣的精神寫成交易策略,回測後我發現,這樣的作法,只能用在好股票上,而且,收盤收最高很重要。

我寫的腳本如下

1if GetSymbolField("tse.tw","收盤價","D")
2>average(GetSymbolField("tse.tw","收盤價","D"),10)
3//大盤多頭
4then begin
5input:sp(2,"回檔最大幅度");
6input:opl(1.5,"開高最小幅度");
7input:oph(4,"開高最大幅度");
8
9if open>=close[1]*(1+opl/100)
10//開高超過一定百分比
11 and close<=close[1]*(1+oph/100)
12 //開高的幅度低於一定百分比
13 and low>open*(1-sp/100)
14 //回檔幅度不超過一定百分比
15 and close=high
16 //收最高
17and close[1]<close[3]*1.1
18//前三天漲幅不到10%
19
20and volume>average(volume,20)*1.2
21//成交量增加一定百分比]
22then ret=1 ;
23end;

在回測設定時,我用的是高股利或高ROE的股票(現金股利過去三年都至少兩元或是ROE超過25%),出場是設五天後或是8%的停損停利。

2016110207

回測報告如下

2016110206

過去三年完全符合這樣條件的次數不算多,但賺的時候賺不少,虧的時候虧不多,勝率也接近六成,屬於穩定獲利型的策略。

但如果同樣的腳本用在其他非績優股上,或是不堅持一定要收最高,績效就差蠻多的

 

雲端策略中心精進版之38~火箭後拉回的中小型股

我們常常在盤中看到一些中小型股票突然間往上衝,然後我們常常就會忍不住地想要進場共襄盛舉,今天的這個交易策略是在尋找那些在五分鐘之內曾經往上沖之後,收盤稍稍接回的小型股,從回測的數字來看,在多頭市場,這樣的短多策略,還是有一定的績效

我寫的腳本如下

1 if GetSymbolField("tse.tw","收盤價","D")
2 > average(GetSymbolField("tse.tw","收盤價","D"),10)
3then begin 
4 if barfreq ="Min" and barinterval =1 
5 and close[1]/close[2]>1.02
6 and highest(high,250)<=lowest(low,250)*1.07
7 then 
8 ret=1;
9end;

回測設定時,我用的是有量的中小型股,停利是6%,停損是5%,由於是用五分鐘K去跑,所以我只先回測一年

2016110301

 

回測報告如下:

2016110302

 

從回測的數字來看,在大多頭市場,中小型的股票如果盤中急拉後稍為回檔整理,  確實是值得觀察的一個族群,我如果把停損停利都設為5%,勝率甚至達到六成。

2016110303

但這個策略在大盤經常殺尾盤的空頭市場,風險還是蠻大的,在應用上還是要選擇大多頭市場比較合適。

 

 

雲端策略中心精進版之36~即將鎖第一根漲停的中小型股

快漲停的股票到底要不要追啊? 市場老手們常說,如果不是牛皮股,而且是第一根,那就追,如果不是就算了。我寫程式去回測的結果發現,快漲停的股票,如果是股本小於70億元且過去三年每年現金股利都超過兩元,或是股東權益報酬率超過25%的公司,那麼放膽去追,擺五天,賺錢的機率超過六成。

為了找出即將漲停的股票,我寫的腳本如下

1if GetSymbolField("tse.tw","收盤價")
2>average(GetSymbolField("tse.tw","收盤價"),10)
3then begin
4
5
6input:Length(20, "過去無漲停期數");
7input:Ratio(1, "差幾%漲停");
8
9
10Condition1 = Close >= GetField("uplimit") * (1 - Ratio/100);
11Condition2 = TrueAll(Close < GetField("uplimit"), Length);
12Condition3 = Average(Volume, 5) >= 1000;
13Condition4 = Close > Highest(High[1], Length);
14Condition5 = Volume >= Highest(Volume[1], Length);
15
16ret = Condition1 And Condition2 And Condition3 And Condition4 And Condition5; 
17
18end;

回測設定我用的是連續三年現金股利都超過兩元或是股東權益報酬率超過兩成五的股票,由於是去追漲停,所以只能短線操作,我的出場是設五天後。

2016110204

回測報告如下

2016110203

勝率接近六成。

如果我拿來篩選的股票除了符合上述兩個條件,股本還要小於70億元,那回測的結果如下:

2016110205

經過股本的篩選後,勝率提高到六成以上。

 

 

雲端策略中心精進版之35~近期持續強勢股階段式上漲

以前市場有個很有名的開盤八法,其中有一個說法是,如果開盤起算的五分鐘K 線,連續三根都收紅,那麼當天收高的機率就比較高,我寫了腳本想要印證這樣的說法是否正確,結果發現,最近漲的不兇,但這兩日走勢比大盤強,今天開盤前十五分鐘又維持連續三根五分鐘K都收紅,那麼作多贏的機率確實比較大。

我試了不少的方向,最後的發現是,符合以下條件下的開盤三紅K,會有比較高的勝率

1.大盤多頭

2.前兩個交易日走勢比加權指數強

3.近十日漲幅沒有大兇

4.開盤前三根五分鐘K都收紅

5.開盤前三根五分鐘K的平均成交量明顯比先前放大

我寫的腳本如下

 

1if GetSymbolField("tse.tw","收盤價","D")
2>average(GetSymbolField("tse.tw","收盤價","D"),10)
3//多頭市場
4and GetSymbolField("tse.tw","收盤價","D")
5/ GetSymbolField("tse.tw","收盤價","D")[2]+0.01
6<GetField("收盤價","D")/GetField("收盤價","D")[2]
7//前兩日比大盤明顯走強
8and GetField("收盤價","D")[1]
9<GetField("收盤價","D")[10]*1.07
10//近十日沒有漲的太兇
11then begin
12
13if barfreq<> "Min"and barinterval<> 5
14then raiseruntimeerror("本腳本只限五分鐘線");
15if time=091500
16and trueall(close>close[1],3)
17//開盤三根五分鐘線都是紅棒
18and average(volume,3)>average(volume,20)*1.3
19//開盤的量能明顯增加
20then ret=1;
21end;

回測設定我是用有量的中小型股,停損停利都設7%

2016110101

回測報告如下:

20161101

勝率接近六成,不過大盤走大空頭時,用這個策略還是大多以停損出場,這策略比較適合在大多頭市場中使用。

如果擔心這個策略輸的時候輸的很慘,另一個方法是把它當成當沖策略,我用進場後的第51根K棒出場來回測,回測報告如下:

2016110201

勝率雖然比較低,但還是有55%,但最大連續虧損及最大區間虧損就都回到合理的範圍了。

最後,我在檢視回測中出現虧損的個股股價走勢,我發現那種前一天下跌的股票,今天出現紅三K的時候,尾盤收高的機會較大,所以我在腳本中加上一個條件

1and GetField("收盤價","D")[1]<GetField("收盤價","D")[2]

加上這個條件後的回測報告如下

2016110202

加上這條件後的勝率達到68%,更難能可貴的是,最大連續虧損及最大區間虧損只有 7%。

 

早先公司在開發XS這套軟體的時候,常有朋友勸我說,台灣會寫程式又會做交易的人很有限,你們花這麼多資源做這產品,能賣幾個人呢? 當時我其實心裡也是毛毛的,怕做出曲高和寡的產品,這陣子我用了這項服務之後,我發現,它讓我可以在有任何的Trading idea時,都可以寫成程式去回測,再根據回測的結果不斷的修正程式,最後理解到一個Trading idea在什麼情況下,會work,什麼情況下,聽聽就好,這種拿所有個股的交易及財報資料來作運算,找出在什麼情況下,有較大機率股價會上漲或下跌,其實是大數據分析的一種實踐。

在有這種體會之後,其實我就比較篤定了。因為,這真的可以幫到我。

雲端策略中心精進版之34~多頭轉強策略

每次當自己看好的股票股價翻紅時,我們總面臨了天人交戰: “追還是不追”,追嘛怕追到盤整的高點,不追怕這是大漲的起點。今天我想介紹一個策略,這個策略是把一定區間內的上漲跟下跌絕對值分別計算並算出加權平均,當兩者比例非常懸殊時,代表區間內多方很明確地佔了上風,這是一個判定股價是翻明確翻多的交易策略,從回測的數據來看,這個策略還蠻值得大家參考的。

我先把上面說的邏輯寫成一個指標腳本

1input:length(10); 
2variable: sumUp(0), sumDown(0), up(0), down(0),RS(0);
3if CurrentBar = 1 then
4begin
5sumUp = Average(maxlist(close - close[1], 0), length); 
6sumDown = Average(maxlist(close[1] - close, 0), length); 
7end
8else
9begin
10up = maxlist(close - close[1], 0);
11down = maxlist(close[1] - close, 0);
12 
13sumUp = sumUp[1] + (up - sumUp[1]) / length;
14sumDown = sumDown[1] + (down - sumDown[1]) / length;
15end;
16if sumdown<>0
17then rs=sumup/sumdown;
18plot1(rs);

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

2016103101各位可以發現,當RS超過4的時候,代表多頭的漲勢非常明確

我把這個指標改寫成策略腳本

1if getsymbolfield("tse.tw","收盤價")
2
3>average(getsymbolfield("tse.tw","收盤價"),10)
4
5then begin
6
7
8
9
10
11
12
13input:length(10);
14
15variable: sumUp(0), sumDown(0), up(0), down(0),RS(0);
16
17if CurrentBar = 1 then
18
19begin
20
21sumUp = Average(maxlist(close - close[1], 0), length);
22
23sumDown = Average(maxlist(close[1] - close, 0), length);
24
25end
26
27else
28
29begin
30
31up = maxlist(close - close[1], 0);
32
33down = maxlist(close[1] - close, 0);
34
35
36
37
38sumUp = sumUp[1] + (up - sumUp[1]) / length;
39
40sumDown = sumDown[1] + (down - sumDown[1]) / length;
41
42end;
43
44if sumdown<>0
45
46then rs=sumup/sumdown;
47
48if rs cross over 4
49
50and close>close[1]*1.02
51
52//最近一日漲幅超過2%
53
54and close<close[5]*1.05
55
56//最近五日漲幅小於5%
57
58then ret=1;
59
60
61
62
63end;

 

回測時我用有量的中小型股,由於我設的計算區間是10天,所以我出場設定是進場後10天

2016103103

回測報告如下

2016103102

從回測報告顯示,這個策略在過去三年共出現279個交易訊號,有173次獲利,勝率達到62%。

如果各位希望風險低一點,可以把區間拉長,這樣勝率雖然較低,但風險也會降低不少。

 

雲端策略中心精進版之33~低預估本益比攻勢發動

 

股票的價格,絕大多數的時候,是隨著大盤的多空氣氛,隨著產業的展望,順勢波動,隨波逐流,但就像潮汐一樣,退潮之後總是會轉為漲潮,所以我們可以找出那些現在股價距離平均水準還有一段距離,但開始轉強的公司,期待這些公司是正在從退潮要轉成漲潮。

這樣的公司,需要符合兩個條件

1.總市值不到600日平均的七成

2.收盤價創十日最高價

 

根據這兩個條件,我的對應腳本如下

1settotalbar(700);
2if getsymbolfield("tse.tw","收盤價")
3> average(getsymbolfield("tse.tw","收盤價"),10)
4then begin
5value4=GetField("總市值");
6value5=average(value4,600);
7if value4[1]<value5[1]*0.7
8and close=highest(close,10)
9then ret=1;
10end;

 

回測設定我用的是過去每年EPS都超過兩元的股票,出場點是設為進場後10天出場

2016102702

回測報告如下:

2016102703

勝率約57%,造成虧損的時點,主要是在大盤走長期空頭走勢的時段

如果把這個腳本用有量的中小型股來跑,回測報告如下

 

2016102704

勝率甚至超過6成

 

這樣的策略,它的核心精神有三個

1.在多頭市場之下

2.總市值離三年來的平均值有不小的距離

3.股價正在轉強

符合這三個條件的股票,就極可能符合這個交易策略。

其次,我們在腳本上試的是目前總市值不到長期平均值七成的股票,如果現在股價是不到長期平均值五成時,勝率其實更高

2016102705

回測數字為證,勝率都快接近七成了。