Author Archives: 發財橘子

雲端策略中心精進版之21~烏龜交易法則之買進訊號

昨天跟大家介紹烏龜交易法則波段作空策略,今天跟大家介紹的是同一個法則的波段作多策略, 原理是一樣的,只是作多是要尋找在多頭市場股價創100日新高的股票,結果數據證明,烏龜交易法則,不管多空方向,都行得通。

波段作多的烏龜交易策略腳本,跟作空的腳本差不多

condition1=false;
condition2=false;
if getsymbolfield("tse.tw","收盤價")
>average(getsymbolfield("tse.tw","收盤價"),10)
//大盤屬於多頭格局
then begin

if high=highest(high,100)and barslast(high=highest(high,100))[1]>100
then condition1=true; 
//創百日新高且上一次發生時是在100個交易日之前
if average(volume[1], 5) >= 1000
then condition2=true;
//五日移動平均量大於千張
if condition1 and condition2
then ret=1;

end;

回測設定時,因為是作多,所以我用的是過去三年ROE都超過25%或是過去三年eps都大於兩元的股票來回測,持有20天後出場

091216

回測報告如下

091215

回測報告的數字還是十分迷人,勝率超過六成,最大連續虧損還在可接受範圍。

 

從這兩個波段操作的策略來看,一百天來,第一次創百日新高或創百日新低,都是很深具趨勢意義的事情。

 

雲端策略中心精進版之20~烏龜交易法則之賣出訊號

在程式交易圈,烏龜交易法則是大家耳熟能詳的交易概念,它的核心精神應用在交易上,可以衍生出勝率很高的交易策略,今天我們要談的就是烏龜交易法則用在波段作空的策略。

烏龜交易法則,又稱為海龜交易法則,它的核心在於如果股價突破N日來的最高價就作多,如果跌破N日來的最低價就作空。

至於這個N要用多少,則看您是作長還是作短,也看您是應用在什麼樣的金融商品。

我自己的經驗,如果在台股要波段作空,這個N可以選擇100

我寫了以下的這個腳本來作為烏龜交易法則的應用腳本

 condition1=false;
condition2=false;
if getsymbolfield("tse.tw","收盤價")
<average(getsymbolfield("tse.tw","收盤價"),10)
//大盤屬於空頭格局
then begin

if L=lowest(L,100)and barslast(L=lowest(L,100))[1]>100
then condition1=true; 
//創百日新低且上一次發生時是在100個交易日之前
if average(volume[1], 5) >= 1000
then condition2=true;
//五日移動平均量大於千張
if condition1 and condition2
then ret=1;

end;

因為是波段作空,所以在跑回測時,商品設定我選的是不大賺錢的大型股,出場我設20天之後

091214

以下是跑三年數據的回測報告

2016101101

 

過去三年用這個腳本共出現73個交易機會,其中51個賺錢,22個虧錢,勝率快接近7成,更可貴的是最大連續虧損率只有15%,這代表這個交易策略不會讓你淪落到連續一直虧錢的天人交戰中。

從這個腳本就可以了解到,其實交易策略不一定要很複雜,有的時候交易需要的反而是嚴格的紀律及執行力。

 

 

雲端策略中心精進版之19~開盤反轉賣出訊號

開盤是觀察一檔股票多空均勢很重要的時段,特別是一檔股票從多頭轉空頭時,從早盤的走勢可以看出一些端倪,其中在個股反轉初期,如果早盤出現那種開高後,一路下跌到跌破前一天收盤價的走法時,往往是一個空頭格局的預警訊號。

每天開盤,我們總希望自己的股票能夠一飛沖天,領漲大盤,但是如果今天一開盤開高之後就持續下跌,而且下跌的幅度不小,一路跌破昨天的收盤價,它代表的意義是

1.今天有利多,所以開高

2.但上檔賣壓重,而且不是短線的獲利了結賣壓,因為這種賣壓通常只會殺到平盤

這兩點綜合起來,就是利多不漲且有特定賣壓持續出籠,這絕對不是什麼好的徵兆。

為了找出這樣的股票,我寫了一個腳本如下:

if getsymbolfield("tse.tw","收盤價")
<average(getsymbolfield("tse.tw","收盤價"),10)
//大盤空頭
and GetField("收盤價","D")=lowest(GetField("收盤價","D"),20)
//日線創五日新低
and GetField("收盤價","D")*1.05>highest(GetField("收盤價","D"),20)
//收盤價距20日高點不到5%
then begin 
input: Ratio(1.5, "反轉%");
input: TimeLimit(93000, "時間限制");

variable: _BarIndex(0), _Open(0), _Low(0), _High(0), _Volume(0);

if Date <> Date[1] then
 begin
 _BarIndex = 1;
 _Open = Open;
 _Low = Low;
 _High = High;
 _Volume = Volume;
 end
else
 begin
 _Low = minlist(_Low, Low);
 _High = maxlist(_High, High);
 _Volume = _Volume + Volume;
 _BarIndex = _BarIndex + 1;
 end;

Condition1 = GetField("Open", "D") > GetField("Close", "D")[1];
//開高
Condition2 = Close < _High * (1 - Ratio/100);

//比當日高點低超過1.5%且跌破昨日收盤價
 
Condition3 = Time < TimeLimit;
//09:30之前



Ret = Condition1 And Condition2 And Condition3 ;
end;

為了避免有人洗價,所以我回測用的是市值適中的股票,跑五分鐘線,停損停利都設為5%

091211

回測報告

20161011

從回測的數字來看,出現這種情況,基本上下跌的機率較大,下跌的幅度也比上漲的幅度大。

買了股票,我們總是希望能賺到錢,但像這種開高後反轉殺破昨日收盤價的股票,如果是在空頭市場,又是在一個二十天來形成之頭部的最低點,必須小心後市可能還有下跌的空間。

 

 

 

雲端策略中心精進版之18~暴量剛起漲

以前認識的老營業員常邊抽著煙邊跟我分享他的操作哲學,他常跟我說,如果成交量跟股價同步都創半年來的新高,而且才剛起漲,股價現在離半年來的低點沒有太遠,就給它勇敢的衝進去,不要怕,我當年只能抽長壽,他都抽Dunhill,顯然衝進去是對的。

我試著把他所說的這段話寫成交易策略,這個策略主要是由幾個條件所組成

1.大盤屬於多頭市場(小弟我不逆勢操作)

2.股價創百日來新高且成交量也是百日新高

3.現在的股價距離百日來最低點沒有超過14%

根據上述三條件所寫的腳本如下:

 if getsymbolfield("tse.tw","收盤價")
>average(getsymbolfield("tse.tw","收盤價"),10)
then begin

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

Condition1 = H=highest(H,day);
//今日最高創區間最高價
Condition2 = V=highest(v,day);
//今日成交量創區間最大量
Condition3 = highest(H,day) < lowest(L,day)*(1 + ratioLimit*0.01);
//今日最高價距離區間最低價漲幅尚不大
Ret = Condition1 And Condition2 And Condition3;

end;

我用有量的中小型股去回測,我停利設12%,停損設8%

091205

 

回測報告如下圖

091204

勝率超過6成,平均一年獲利有三成,手氣很差連續虧損的最大虧損也只有兩成多,難怪他抽Dunhill。

 

 

 

雲端策略中心精進版之17~開盤三連黑

早先,市場有所謂的開盤八法,其中如果開盤的時候,連續三根五分鐘K棒都是黑K棒,被稱為開盤三連黑,市場老手認為,如果個股出現這樣的走勢,代表在消化完前一天所有的各種數據後,今天的開盤展現的是空方一路追殺,多方一路潰敗。

我試著把這樣的經驗法則寫成交易策略,希望透過歷史數據的回溯測試,找出這樣的法則,在什麼情況下,有比較高的勝率。

為了表達五分鐘線三連黑,我畫了下面這張圖

%e9%96%8b%e7%9b%a4%e4%b8%89%e9%80%a3%e9%bb%91%e7%a4%ba%e6%84%8f%e5%9c%96

以這張圖為思考的基準,以下是我寫的腳本

if getsymbolfield("tse.tw","收盤價")
<average(getsymbolfield("tse.tw","收盤價"),10)
//大盤屬於空頭格局
and GetField("收盤價","D")=lowest(GetField("收盤價","D"),20)
//日線創二十日來的最低價
and GetField("收盤價","D")*1.05>highest(GetField("收盤價","D"),20)
//但收盤價距離20日來的最高點不超過5%
then begin
if Date = Date[2] 
and Date[2] > Date[3]
and Close < Close[1]
and close[1] < Close[2]
and Close[2] < Open[2]
then ret=1;
end;

我用總市值適中的股票,用5分鐘K來來跑這個腳本,停損停利我都設5%回測設定

091202

以下是回測報告

091203

從這個回測報告來看,只有在大盤空頭市場且個股剛剛進入初跌段時,開盤連三黑才比較有超過五成以上的短空勝率

 

雲端策略中心精進版之16~天量後反轉

除了價量背離後跌破低點之外,另一個需要提高警覺的賣出訊號是天量天價之後,股價跌破創天量天價當天的起漲點。因為如果發生這種事情,代表當天大量的追高買盤,全部被套牢,除非後市有更強有力的買盤去消化這些套牢賣壓,否則就要小心這是一個反轉的訊號。

以下圖為例,高檔套牢區有大量的成交張數,一旦股價跌破,短期內大家一看到上面有那麼大等著解套的賣壓,通常不大會去追價買進,因此而形成一個短空的機會。

100401

為了找出這樣的股票,我寫了一個腳本如下:

Input: day(200, "計算天期");
Input: _Dist(60, "距離"); 

variable:Maxv(0); 
MaxV = Highest(Volume, day); 
//找出區間天量
variable:MaxH(0);
 MaxH = Highest(High, day);
//找出區間最高價
variable:Kprice(0), Kdate(0);

if Maxv = v and MaxH = H then
//今量是區間高量且今日高點是區間高點 
begin
 KDate = Date;
 Kprice = L;
//找出區間天量天價的日期及當日最低價
end; 
if GetSymbolField("TSE.TW","收盤價")
<average(GetSymbolField("TSE.TW","收盤價"),10)
//大盤屬於空頭格局
then begin
Condition1 = C[2] crosses below KPrice
//前天收盤價跌破天量天價當天的最低價 
and C[1] < KPrice 
//昨天還在天量天價當天最低價之下
and C < KPrice
//今天也還在天量天價當天最低價之下
and Datediff(Date, KDate) <= _Dist;
//今天距離天量天價當天的日期差在一定範圍內
Condition2 = Average(Volume[1], 5) >= 1000;
//昨日量五天移動平均大於1000張
Condition3 = C < C[1];
//今天收跌
condition4=lowest(low,day)*1.4<kprice;
//從低點上來漲幅超過四成
Ret = Condition1 And Condition2 
And Condition3 and condition4;
end;

由於這種創天量天價的股票大多是小型股,所以我拿有量的中小型股來跑回測,出場點設定是十天之後。

091207

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

091206

從回測報告上可以發現,超過五成的中小型股如果出現這樣的情況,後市看跌。

 

雲端策略中心精進版之15~多日價量背離跌破

說到多頭警訊,多日價量背離算是很常被提到的一個,我從實證數據上的回測發現,如果頻頻出現股價上漲但成交量下跌的情況,一旦跌破近期的低點,後市下跌的機率確實比較高。

為了找出這些價量背離的股票,我寫的腳本如下:

input:Length(5, "計算期數");
input:times(3, "價量背離次數");
input:Dist(20, "距離");

variable:count(0),KPrice(0),hDate(0);

count = CountIf(close > close[1] and volume < volume[1], Length);

if count > times then begin
 hDate=Date;
 Kprice = lowest(l,length);
end;

if GetSymbolField("TSE.TW","收盤價")
<average(GetSymbolField("TSE.TW","收盤價"),10)
then begin

Condition1 = Close crosses below Kprice;
Condition2 = DateDiff(Date,hdate) < Dist;

Ret = Condition1 And Condition2;

end;

由於要回測的是空頭策略,所以我還是用不大賺錢的中大型股來回測,回測設定的出場我設為五天後出場。

不大賺錢的中大型股,它的選股條件有兩個

1.股本超過10億

2.最近三年每年eps都小於0.7元

091121

根據上述的設定,去跑三年的數據,回測報告如下

091201

從這個數據來看,價量背離後的創新低,的確是一個勝率頗高的空頭交易策略。

 

 

 

雲端策略中心精進版之14~投信強買發動

市場老手們常說禿子跟著月亮走,外資說話的股票我們跟著外資走,投信說話的股票我們跟著投信走,我從過往三年的數據上發現,當過去三天合計投資買超張數超過總成交量一成時,後市確實短多獲利出場的機率較高。

一直以來,我們都看得投信每天的買賣超,但我們總是透過經驗法則,加上其他的判斷工具,來研判這些投信進場的股票,有那幾檔後市值得一跟。

我試著想找出投信買賣超使用規則,其中一個不錯的規則,它的概念如下:

1.投信連著三天買超的張數超過成交量的15%。

2.在買超後幾日內,股價創了波段高點

我把這兩個規則寫成了一個腳本

input: pastDays(3, "計算天數");
input: _BuyRatio(15, "買超佔比例(%)");
input: _Distance(60, "距離KPrice");

variable: SumForce(0), SumTotalVolume(0),Kprice(0), Kdate(0);

SumForce = Summation(GetField("投信買賣超")[1], pastDays);
sumTotalVolume = Summation(Volume[1], pastDays);

if SumForce > SumTotalVolume * _BuyRatio/100 And Average(Volume[1], 5) >= 1000 then 
begin
 Kprice =highest(avgprice[1],pastDays);
 Kdate = date[1];
end; 

Condition1 = C crosses above Kprice and datediff(date, kdate) <= _Distance; 
Condition2 = Average(Volume[1], 5) >= 1000;
Condition3 = Volume > Average(Volume[1], 5) * 1.2;
Condition4 = C > C[1];
condition5=GetSymbolField("TSE.TW","收盤價","D")
>average(GetSymbolField("TSE.TW","收盤價","D"),10);

Ret = Condition1 And Condition2 
And Condition3 And Condition4
and condition5;

由於投信考慮到流動性及股性,會買的股票大多屬於總市值適中的股票,所以我用總市值適中的股票來回測,出場是設為進場後20天。

回測設定

091119

回測過去三年的數字後報告如下

091120

從上面的回測數字我們可以發現,如果投信有密集連買三天,之後只要股價一發動,往往會有波段的漲幅。

 

 

 

雲端策略中心精進版之13~炒高後無量反轉下跌

早年我曾在證券商底下的投顧當研究員,那時候投顧跟總公司的營業廳在同一棟樓,收完盤,我常跟幾個老營業員聊天打屁,那時候正好踫到民國83的大多頭行情,大家每天都聊的很起勁,後來有一天,有位我覺得很厲害的營業員,突然跟大家宣佈他當天就開始勸客戶減碼了,第一次踫到這種大多頭行情的我,熊熊很難接受,我就問他,股票都還在漲啊,為何會突然看壞,他跟我說,漲到這裡,很多股票都漲了超過五成,成交量開始明顯下滑,顯示空手的已經追不下手,這種情況持續個幾天,早晚要多殺多。我年輕氣盛,對他的觀察半信半疑,隔天起,我特別留意那些漲多股票的成交量,  果然還是持續出現追高乏力的低量,隔了幾天,行情就真的出現了比較明顯的拉回。

今天要跟大家介紹的交易策略,跟我的這段經驗有關,我想寫出一個短空的策略,符合這個策略的股票,要具備以下的特徵

1.過去半年上漲五成以上

2.目前股價離波段最高點不到一成

3.最近的成交價比前幾天還高

4.但這幾天的成交量跟比較長期的均量相比,有一段距離

這種股票就是典型的大漲後股價在高檔,但成交量縮的很兇

根據上述的特徵,我寫的對應腳本如下:

input: Periods(120,"計算期數");
input: Ratio(50,"期間漲幅%");
 
if 
close < close[4]
and close*1.1>highest(close,periods)
and close >= close[Periods] *(1 + Ratio*0.01)
//過去半年漲幅超過五成
and average(volume[1],5)*1.4 < average(volume[1],20)
and GetSymbolField("tse.tw","收盤價","D")
<average(GetSymbolField("tse.tw","收盤價","D"),10)
then ret=1;

在回測設定上,我拿那些股本超過十億且過去三年每年EPS都小於1元的股票去跑,因為是短空,所以我設的出場點是十天之後。

091117

以下就是跑三年數據的回測報告

091118

因為這樣的條件有點苛,符合條件的只有46個交易機會,其中29個是獲利出場,勝率達到63%。

 

老市場人士常說的量先價行,看來還真的是有點道理

 

雲端策略中心精進版之12~開盤五分鐘三創新高

能不能有個策略,開盤五分鐘就能決定要買什麼,進場後停損停利設好,就可以不必一直盯著盤看呢?  這樣的需求,自從我開始寫程式來決定交易策略之後,一直不斷的被提起,這樣的需求,有兩個特點,一是希望開盤五分鐘就決定今天的交易標的,二是希望這樣的 交易最好是當沖或隔日沖,不想放太長,因應這樣的需求,我設計了一個開盤五分鐘三創新高的交易策略,並且在這次精進版裡,做了更多的優化,以下是這個策略的介紹。

以前有位股市名嘴發明了開盤八法,我自己用excel去跑過往多年的開盤數據,發現開盤前五分鐘,如果1分鐘線大多能收紅棒時,當天收高的機會很大,因著這樣的觀察,我試著去尋找要符合什麼樣的條件,開盤走高後比較容易收高。

我試著設了一些條件並且加以回測,最後我發現,符合以下條件,當天收高的機率比較大

1.開高。

2.五日均量大於1000張

3.中小型股

4.一分鐘線,開盤後扣除第一根之外的五根裡,至少有三根高點比前一根的高點高,而且收盤比前一根的收盤高

5.前三天的漲幅不大

6.這五根一分鐘線的成交量達到五日均量的一定比例

7.大盤屬於多頭格局

 

follow上述的條件,對應的腳本如下:

input: volumeRatio(0.1, "分鐘量暴量比例");
input: changeRatio(3, "最近3日最大上漲幅度");
input: averageVolume(1000, "5日均量");

variable:KBarOfDay(0), BreakHigh(false); 

KBarOfDay+=1;
if date<>date[1] then begin
 KBarOfDay=1; 
 BreakHigh = false;
end; 

condition1 = KBarOfDay = 6;
//一分鐘線每天的第六根
condition2 = Countif(High > High[1] and Close > Close[1] ,5) >=3;
//近五根裡至少三根最高價比前一根高且收盤比前一根高
if KBarOfDay = 1 
and close > getfield("close", "d")[1] then BreakHigh = true;
//開高
value1 = average(GetField("Volume", "D")[1], 5);
//五日均量
condition3 = value1 > averageVolume;
//五日均量大於某張數 
value2 = rateofchange(GetField("Close", "D")[1], 3);
condition4 = AbsValue(value2) < changeRatio;
//前三日漲帳幅小於一定標準
condition5 = summation(volume, 5) > value1 * volumeRatio;
//前五根一分鐘線成交量的合計大於五日均量某個比例
condition6=GetSymbolField("TSE.TW","收盤價","D")
>average(GetSymbolField("TSE.TW","收盤價","D"),10);
//大盤屬於多頭結構
ret = condition1 and condition2 and condition3 
and Condition4 and Condition5 and BreakHigh
and condition6;

回測設定裡我用有量的中小型股來跑,停損停利都設為6%,這樣的比例,約莫屬於隔日沖的交易策略

091405

最近三個月的回測報告如下,三個月裡的交易次數有67次,平均一天一次。

1101

勝率五成多,平均每個月差不多是賺5%。

如果把回測時間拉長到兩年,勝率更高,以下是兩年的回測

091406

 

 

以前我有機會跟幾個市場有名的短線大戶相聚,這些人很愛把股票拉漲停,我曾問他們,怎麼決定今天要拉那一檔,他們的答案是,”拉今天開盤最強的,有出量的,前兩天沒啥動的”,這樣的說法,跟今天的策略有點像,這也算是我們股民的集體智慧吧。