Author Archives: 發財橘子

那些股票外資買超的隔天上漲的機會比較大??

兩年來,介紹了不少的交易策略,有客戶問我,能不能找出某策略對某一檔股票特別管用? 這陣子我正在學習如何把人工智慧用到交易策略裡,這當中有用到一個很有名的機率理論: 貝氏定理,這個理論正好可以拿來計算某策略對某股票的勝率,今天我就舉外資買超超過兩百張作為一個例子,運用貝氏定理,計算那一檔股票在外資買超的隔天,上漲的機率較大。

在學貝氏定理的時候,教科書教我們,如果有夠多的樣本,可以統計出人們得感冒的機率,人們咳嗽的機率,人們咳嗽且感冒的機率,那就可以算出人們如果咳嗽的話,得到感冒的機率有多大?

我以外資前一日買超跟隔天股價收高作例子,來呈現貝氏定理的概念

 

貝氏定理

 

當我們可以算出近N日來有那些天收高,算出近N日有那天的前一天外資買超,也算出近N日那些收高的日子裡有多少天的前一天外資買超,那麼根據貝氏定理,就可以算出如果前一天外資買超,那麼當天收高的機率有多高?

於是我寫了以下的腳本

 input:n(500,"樣本數");
settotalbar(n);
value1=GetField("外資買賣超","D");
variable:x1(0),y(0),c1(0),c2(0),c3(0);
if value1[1]>200 
then begin
x1=1;
c1=c1+1;
//外資買超的次數
end
else x1=0;

if close>open
then begin
y=1;
c2=c2+1;
//上漲的次數
end
else y=0;

if value1[1]>200
and close>open
then c3=c3+1;
//上漲且外資買超的次數

value2=c1/n; //外資買超的機率
value3=c2/n; //上漲的機率
value4=c3/c2;//收紅且外資買超的機率
value5=value4*value3/value2;
if countif(value1[1]>200,n)>20
then ret=1;
outputfield(1,value5*100,0,"外資前一日買超隔天收高的機率");
outputfield(2,c1,0,"上漲次數");
outputfield(3,c2,"外資買超次數");
outputfield(4,c3,0,"上漲且外資買超");

拿這個腳本去跑那些有一定的天數外資曾買超過的股票(我這裡是設20 天),然後根據其收高的機率排序,有如下圖:

2018050901

接下來我們就來印證看看這十檔股票是不是真的在外資買超的隔天會收高

我寫了一個警示腳本如下:

value1=GetField("外資買賣超","D");
if value1[1]>200 
then ret=1;

拿這個腳本去回測,用上面這十檔跑過去一年,一天就出場,交易成本設成0,回測的結果如下:

2017050902

回測報告顯示,如果只拿這十檔股票,在外資買超後進場,確實會賺錢,但其實這樣的結果不會太意外,因為我們用了過去500根當樣本去算機率,這500根也包括了回測時用的最近這一年的200多根。

所以如果要透過貝氏定理來找出某策略很適用的個股標的,有三個數字要很要求

  1. 樣本數一定要夠長
  2. 符合策略條件的次數要夠多
  3. 貝氏理論算出來的預測機率要夠高

 

這樣的方法還蠻適合用來找出那些股票適合那些常出訊號的交易策略,對於那些買進訊號不常出現的策略,因為可以用來計算的樣本不夠多,可能就不合用了。

在實際應用上,建議再放到模擬交易裡去跑一跑,看看是不是像回測的數字這麼好。

 

xqlite banner

 

打造個股儀表板

 

前幾天介紹了大盤儀表板,然後聰明的朋友就舉一反三的問我,那有沒有個股儀表板? 我試寫了幾天,總算寫出一個自己覺得還不錯的腳本,今天就來野人獻曝一下,大家對於尋找個股的買點,都有各自的獨門絕活,可以使用類似的寫法,建構自己的進場儀表板。

大盤儀表板的概念,是在K線圖上,標示出各種不同大盤指標的進場點,使用者每天打開這個儀表板,就知道有那些條件出現了買進訊號,如果近幾日不同的條件都出現買進的訊號,那就代表後市上漲的機率上昇。

個股儀表板也是類似的概念,我是使用彼此沒有相關性的資料,來建構不同的買進訊號,並且濾掉近期重覆出現的訊號,我使用的資料分別有以下十個指標或欄位

1.KD

2.內外盤量

3.淨力指標(計算開高低收之間的差距)

4.分公司買進賣出家數

5.三大法人買賣超

6.MACD

7.資金流向

8.總成交次數

9.強弱指標

10.主力買張

我在K線圖上,標出利用這十個數據所建構的進場點,就如下圖般

個股儀表板

每天把觀察名單拿來一檔一檔的用這個儀表板看一遍,就可以找出自己想要買的股票,進場點到了沒?

要畫出像上面的這張圖,對應腳本如下:

condition1=false;
condition2=false;
condition3=false;
condition4=false;
condition5=false;
condition6=false;
condition7=false;
condition8=false;
condition9=false;
condition10=false;
switch(close)
begin
case >150: value5=low*0.9;
case <50 : value5=low*0.98;
default: value5=low*0.95;
end;
//==========日KD黃金交叉================

input: Length_D(9, "日KD期間");
input: Length_M(5, "周KD期間");
variable:rsv_d(0),kk_d(0),dd_d(0),c5(0);
 
stochastic(Length_D, 3, 3, rsv_d, kk_d, dd_d);
 
c5=barslast(kk_d crosses over dd_d);
if c5=0 and c5[1]>20
then condition1=true; 
if condition1
then plot1(value5,"月KD高檔鈍化且日KD黃金交叉");
//============內外盤量比差====================
var:c3(0);
value6=GetField("內盤量");//單位:元
value7=GetField("外盤量");//單位:元
if volume<>0 then begin
value8=value7/volume*100;//外盤量比
value9=value6/volume*100;//內盤量比
end;
value10=average(value8,5);
value11=average(value9,5);
value7=value10-value11+5;
c3=barslast(value7 crosses over 0);
if c3=0 and c3[1]>20
then condition2=true;
if condition2
then 
plot2(value5,"內外盤量比差");

//===========淨力指標==============
var:c4(0);
input:period2(10,"長期參數");

value12=summation(high-close,period2);//上檔賣壓
value13=summation(close-open,period2); //多空實績
value14=summation(close-low,period2);//下檔支撐
value15=summation(open-close[1],period2);//隔夜力道
if close<>0
then
value16=(value13+value14+value15-value12)/close*100;
 
c4=barslast( value16 crosses over -4);
if c4=0 and c4[1]>20
then condition3=true;
if condition3
then 
plot3(value5,"淨力指標");

//===========多頭起漲前的籌碼收集================
var:c2(0);
value1=GetField("分公司買進家數");
value2=GetField("分公司賣出家數");
value3=value2-value1;
value4=countif(value3>20,10);
c2=barslast(value4>6 );
if c2=0 and c2[1]>20
then condition4=true;
if condition4=true
then
plot4(value5,"籌碼收集");

//===========法人同步買超====================
variable: v1(0),v2(0),v3(0),c1(0);
v1=Getfield("外資買賣超");
v2=Getfield("投信買賣超");
v3=Getfield("自營商買賣超");

c1= barslast(maxlist2(v1,v2,v3)>100);
if c1=0 and c1[1]>20
then condition5=true;
if condition5=true
then plot5(value5,"法人同步買超");

//========DIF-MACD翻正=============
input: FastLength(12), SlowLength(26), MACDLength(9);
variable: difValue(0), macdValue(0), oscValue(0);
MACD(weightedclose(), FastLength, SlowLength, MACDLength, difValue, macdValue, oscValue);
var:c6(0);
c6=barslast(oscValue Crosses Above 0);
if c6=0 and c6[1]>20
then condition6=true;
if condition6
then plot6(value5,"DIF-MACD翻正");
//========資金流向======================

var: m1(0),ma1(0),c7(0);
m1=GetField("資金流向");
ma1=average(m1,20)*1.5;
c7=barslast(m1 cross over ma1 and close>close[1]);
if c7=0 and c7[1]>20
then condition7=true;
if condition7
then plot7(value5,"資金流向");
//=========總成交次數================
var: t1(0),mat1(0),c8(0);
t1=GetField("總成交次數","D");
mat1=average(t1,20)*1.5;
c8=barslast(t1 cross over mat1 and close>close[1]);
if c8=0 and c8[1]>20
then condition8=true;
if condition8
then plot8(value5,"成交次數");
//=========強弱指標==================
var:s1(0),c9(0);
s1=GetField("強弱指標","D");

c9=barslast(trueall(s1>0,3));
if c9=0 and c9[1]>20
then condition9=true;
if condition9
then plot9(value5,"強弱指標");
//============主力買張================
var:b1(0),mab1(0),c10(0);
b1=GetField("主力買張");
mab1=average(b1,10);
c10=barslast(b1 cross over mab1);
if c10=0 and c10[1]>10
then condition10=true;
if condition10
then plot10(value5,"主力買張");

裡頭有用了barslast這個函數,目的是濾掉那些近期重覆出現的買進訊號,函數的說明如以下的連結

barslast

 

寫完腳本後必須設定好繪圖的格式,在技術分析設定中的主圖疊圖頁籤中選個股儀表板之後,調整繪圖的型式,樣式,顏色及座標軸,如下圖,即可完成個股儀表板的制作了。

20170504

每個人對於進場點的選擇,可能有很多種方法,透過這個寫法,可以清楚的看到不同方法的進場點,也可以更進一步的,把出場點也標示出來,這麼一來,操作上就可以更進退有據了。

xqlite banner

 

當沖腳本2之多頭市場開盤暴量一分鐘K三連紅

這次要介紹的當沖腳本概念很簡單,那就是開盤一分鐘K連續三根上漲,成交量暴且收在最高點,這種股票如果是在多頭市場,去跑市值適中的股票,勝率有接近七成。

早先股票只有四,五百檔的時候,市場老手們慣用的手法之一是,早上一開盤就找那些有一定的市值與交易量,然後開盤的時候直接跳空上去,而且三分鐘內都是一路往上沒有拉回,成交量比之前放大不少,一分鐘線並且收在最高點,這樣的股票往往是當天盤中最強的股票。

不過用這一招的市場老手,我有觀察到他們都是多頭市場才入市的,只要覺得這盤不能玩了,就縮手旅遊去,不會逆市硬做,至於什麼時候是多頭,什麼時候是空頭?  有位市場老手說的很傳神,如果你進去追高後都虧錢就是空頭,如果進去後賺多輸少就是多頭。

我把這樣的精神寫成用一分鐘K在跑的腳本

if barfreq <> "Min" or Barinterval <>1 then
 RaiseRuntimeError("請設定頻率為1分鐘");
variable:BarNumberOfToday(0); 
if Date <> Date[1] then BarNumberOfToday=1 
else BarNumberOfToday+=1;{記錄今天的Bar數} 

if barnumberoftoday=3
//今天第三根1分鐘K,也就是開盤第三分鐘
then begin
if trueall(close>=close[1],3)
//連三根K棒都是紅棒
and volume>average(volume[1],3)*2
//成交量是過去三根量平均量的兩倍以上
and close=highd(0)
//收最高
then ret=1;
end;

如果挑那些市值適中的股票,跑最近的多頭市場,停損停利都是用4%,回測報告如下

多頭市場的開盤三紅k

但如果是在空頭市場用這個腳本,回測報告如下

20170502

真的是沖的愈多,死的愈慘。

我那天看了一個數字,說當沖的人目前在台灣只有兩萬人,但卻佔了一成的成交量,表示當沖的族群雖然不多,但卻很活躍,從這個腳本來看,當沖的輸贏關鍵就在於有沒有順勢操作,多頭市場先買後賣,空頭市場先責後買,千萬不要一條路走到黑。

 

xqlite banner

當沖腳本1之五分鐘線狹幅整理後帶量突破

當沖的常見手法之一是,去尋找有好一陣子都在盤整的股票,然後等到它開始帶量上攻時,就進場,今天來跟大家介紹我對這個策略的研究。

 

先請大家看一張圖

五分鐘線整理後突破

江湖傳說這種線當沖賺錢的機率大,所以我就試著寫了一個簡單的腳本來試

input:Length(100); setinputname(1,"計算期數");
input:Ratio(0.5); setinputname(2,"突破幅度%");
input:RRatio(2); setinputname(3,"盤整區間幅度%");
input:TXT1("僅適用5分鐘線"); setinputname(4,"使用限制");

settotalbar(3);
setbarback(Length);


if barfreq<> "Min" or barinterval <> 5 then return;

variable: RangeHigh(0);
variable: RangeLow(0);
RangeHigh=highest(close[1],length);
RangeLow=lowest(close[1],length);

if RangeHigh[1] < RangeLow[1] * (1+ RRatio/100)
then begin
if Close cross over RangeHigh*(1+Ratio/100)
and volume>average(volume,length)*1.5 
and trueall(GetField("成交量","D")>500,10)

then ret=1;
end;

一開始用全部的股票去回測近一年,總交易次數達到2903個,勝率超過53%,但平均報酬率是負的0.14,總報酬率更是虧了一屁股,意思是雖然贏多虧少,但交易次數實在太高,賺的都被手續費及證交稅給拿光了(交易成本只設成0.2%)。

所以不應該拿所有的股票去跑,應該加點什麼?

籌碼面是大家都一直很常用的,所以就加了過去十天主力買超至少七天的條件

結果勝率是高了一點,有53%,但還是會虧錢。  仔細檢視輸錢的交易,大多發生在指數下跌的時候,所以就試著過濾掉那些加權指數下跌的日子,回測的結果如下

2017042803

終於看到超過55%的勝率跟正的總報酬率,但最大連續虧損及最大區間虧損還是很嚇人,接下來我試著不用全部的股票去跑,改成用市值適中的股票,勝率有57.65%,最大區間虧損為53.72%,這大概就是我能調到的極限了。

最後po一張最近一波多頭走勢,從去年11/14到今年3/21的回測圖

2017042804

這樣的回測數字就真的很迷人了,代表這個當沖策略在多頭市場是真的可以賺到錢,但指數在拉回的時候,必須改成用先賣後買的空頭當沖策略。

最後po一下最終版的這個當沖腳本

input:Length(100); setinputname(1,"計算期數");
input:Ratio(0.5); setinputname(2,"突破幅度%");
input:RRatio(1.5); setinputname(3,"盤整區間幅度%");
input:TXT1("僅適用5分鐘線"); setinputname(4,"使用限制");

settotalbar(3);
setbarback(Length);


if barfreq<> "Min" or barinterval <> 5 then return;

variable: RangeHigh(0);
variable: RangeLow(0);
RangeHigh=highest(close[1],length);
RangeLow=lowest(close[1],length);

if RangeHigh[1] < RangeLow[1] * (1+ RRatio/100)
then begin
if Close cross over RangeHigh*(1+Ratio/100)
and volume>average(volume,length)*1.5 
and trueall(GetField("成交量","D")>500,10)
and countif(GetField("主力買賣超張數","D")>0,10)>=7
and GetSymbolField("tse.tw","收盤價","D")
>GetSymbolField("tse.tw","收盤價","D")[1]
and GetSymbolField("tse.tw","收盤價","D")
>average(GetSymbolField("tse.tw","收盤價","D"),5)

then ret=1;
end;

我用的盤整定義是100根的5分鐘K上下波動不超過2%

xqlite banner

 

 

 

進場點一目了然的大盤儀表板

這兩天的盤忽上忽下,朋友們對後市看法分歧,有的人覺得接下來就是五窮六絕了,有的人覺得等第一季季報醜媳婦見完公婆就要開始反應未來的i8題材。 先前跟大家報告說大部份的買進策略在空頭市場都是虧錢的,那麼有沒有一個方法, 可以很快的擁有一個快速判斷多空的標準呢?  今天就來跟大家介紹我自己開發的工具~ 大盤儀表板。

請大家先看一張圖

大盤儀表板二

在這圖上的各種不同的標記,是不同腳本出現的買進訊號位置,我把這些位置都標在加權指數的K線圖上,然後各位會發現

1.如果只是單一個訊號出現時,可能是買進訊號,但也有可能是在反彈的高點

2.如果幾天內出現兩個買進訊號,大盤翻多的機率高很高了

3.如果是三連星以上,甚至像是去年11/14日以來的五連星,那出錯的機率就很低了。

這圖怎麼來的呢?

我先來給大家看它的腳本

condition1=false;
condition2=false;
condition3=false;
condition4=false;
condition5=false;

//==========OTC佔大盤成交量比================

value1=GetSymbolField("tse.tw","成交量");
value2=GetSymbolField("otc.tw","成交量");
value3=value2/value1*100;
value4=average(value3,5);
value5=low*0.98;
if value4 cross over 20
then condition1=true;
if condition1
then plot1(value5,"OTC進場訊號");
//============內外盤量比差====================

value6=GetField("內盤量");//單位:元
value7=GetField("外盤量");//單位:元
value8=value7/volume*100;//外盤量比
value9=value6/volume*100;//內盤量比
value10=average(value8,5);
value11=average(value9,5);
value7=value10-value11+5;
if value7 cross over 0
then condition2=true;
if condition2
then 
plot2(value5,"內外盤量比差");

//===========上漲下跌家數RSI指標==============

input:period(10,"RSI計算天數");
value12=GetField("上漲家數");
value13=getfield("下跌家數");
value14=value12-value13;
value15=summation(value14,period);
value16=rsi(value15,period);
if value16 cross over 50
then condition3=true;
if condition3
then 
plot3(value5,"上漲下跌家數RSI");

//===========上漲家數突破200檔================

value17=lowest(value12,5);
value18=average(value17,15);
if value18 cross over 200
then condition4=true;
if condition4=true
then
plot4(value5,"上漲家數突破200家");

//==========上漲下跌量指標=====================
input:p1(3);

value19=GetField("上漲量");
value20=getfield("下跌量");
value21=average(value19,period);
value22=average(value20,period);
value23=value21-value22;
value24=average(value23,5);

if value24 cross over 0
then condition5=true;
if condition5=true
then
plot5(value5,"上漲量突破下跌量");

先前跟大家提過,策略不定要用開高低收等價格來計算,也可以使用別人比較不好拿到的欄位,所以我這裡拿了OTC佔大盤成交量,內外盤量比差,上漲下跌家數RSI,上漲下跌量及上漲家數等非價格的欄位來判斷大盤是否由空翻多。

這些指標的概念及應用原則,在先前寫過的文章中有作過介紹,這邊就不贅言,

我把相關的連結放在下面,有興趣的朋友再點進去看即可

內外盤量比在預測大盤後市上的應用

OTC跟上市成交量比值是股市多空指標

上漲下跌家數差RSI指標

上漲的股票有沒有200檔?

為了作成儀表板,讓我在看大盤K線圖的時候,可以看到有沒有出現進場訊號,腳本上我做了一個小小的安排: ” value5=low*0.98″

這個安排是當符合單一策略的進場條件時,就讓電腦幫我在那一根bar的最低點*0.98處標示出來,怎麼標呢?

就是在K線圖上用滑鼠按右鍵後選主圖疊圖,把上面這個指標腳本加到疊圖指標裡,然後像下圖,繪圖型式選”點”,繪圖樣式選不同的型狀,記得座標範圍要選價位座標,這樣就可以完成一個大盤的多空儀表板了。

有了這個儀表板,就可以對於現在大盤是否要翻多進場,可以一目了然。

當然各位可以發展自己的大盤進場策略,然後像上面的腳本那樣,把這些策略都放到儀表板中,這樣就可以一張圖就完成大盤的多空判斷。

不過每一個被放進來標成進場點的策略,最好還是回測一下,有一定的勝率才放進來,例如以上述放在condition1的那個策略,以下是它近三年的回測報告

大盤儀表板一

有了這個儀表板,就可以判斷何時要開始翻多提高持股比例,甚至根據有幾星連線來調整持股比例,也可以透過buy call option來作交易,也可以把它拿來作為個股進場策略的前提,這是股票程式交易一個很值得發展的武器,我自己用到現在,就下跌的b波時會出現假訊號,其餘的時候還蠻OK,特別是在長線空頭後出現這些訊號,那更是讓人義無反顧的翻多。

我拋了這塊磚,希望大家都能打造出自己最理想的大盤儀表板。

 

xqlite banner

 

 

 

從期貨之神黃毅雄的訪談內容談XS的發展順序

昨天有用戶寫mail問我為何把XS的開發重心擺在股票,而不是現在程式交易圈最流行的指數期貨,我想借由台灣期貨之神黃毅雄先生當年受訪的文章內容,跟大家報告我的想法。

黃毅雄先生是台灣期貨界的奇人,不認識他的朋友,可以google一下,就知道他有多厲害。底下這個連結,有其完整的受訪內容
http://cgdzh.com/forum.php?mod=viewthread&tid=4256

 

這篇文章我看了非常多遍,黃先生是台灣少數股票及期貨都能賺錢的雙刀流大劍客,我把他受訪的內容分成十七個要點。

1. 操作期貨並不容易,期貨要做好一定要具備很多功力,期貨要做好必須從基本分析、技術分析,和看你是否耐力夠不夠,這很重要,一般人作期貨只是為了賺錢,大家所想的也只是這樣,而忽略了應該具備的很多的涵養和功力。通常這些涵養和功力並不是那麼容易就具備到的,最起碼要五年以上。今天整個社會的發展對年輕人來說,最有機會的地方依然是這個市場,以我來說就是個例子。這市場並不是那麼容易就能夠讓你每個人都做好,你要做期貨,要從事這行業,你一定要紮下很深的功力。

2.在期貨市場上、股票市場上看到的一些成功的範例,有辦法在這市場上賺到錢的人都是小時候苦過來的人,這耐力就是從這裡來的。他們在那種惡劣的環境下長大,自然而然的培養這種鬥志──這是很重要的。買賣能夠成功是要經過無數次的賺錢賠錢,無數次的鍛鍊,所以一定要有相當的耐力就是這個原因,這不是這麼簡單。

3. 我是從圖形去觀察,並強調型態學,型態是最重要的買賣依據。有很多人強調RSI、KD等等指標,那都是不行的,而且不要用它。買賣很多人很容易做到後來變成丐幫的弟子──丐幫的人打狗棒拿出來揮兩下,破碗公拿出來,叫著牛肉麵一碗、陽春麵一碗,拿個就趕快跑了,通常這很容易賠錢。

4.我在美國、臺灣看到大部分在期貨市場、股票市場的買賣者,通常買賣都做得很短,都做短線 ,我最否定的就是丐幫的做法,另外一種就是少林派做法,這種做法也不行,少林派的人一坐禪就坐很久,都不起來,很多買賣都是憑直覺,現在黃金是紅是黑,石油看漲看跌,都是憑直覺,去買幾張,就擺在一邊。結果MarginCall來了,他認為很便宜了,就一直補一直補,補到總有一天受不了,一定會斷頭。我本身是武當派的人,武當弟子每天出門一定揹劍,如果時機大反轉時劍就拿出來,時機如果不對小指頭就趕快剁掉。

4.我感到最得意的一次買賣是六、七年前,也就是1987年時了,T-Bond是在高價,大約在120元美金,我認定型態開始要往下,那時候正是醞釀期。而我那時剛從西班牙失敗回來,那時身上沒有錢,我的能力只能從一張做起。 我就從那一張做起,我認為那是頭部醞釀期,開始作空,一邊跌一邊加碼,沒有再從口袋裡拿錢出來。我做到了1500張。我也沒有跟朋友借資來Margin,就做這一張,從一張做到1500張,這一招就是我所謂的倒金字塔做法。很多人以為作股票是正金字塔做法,做期貨也是正金字塔做法,期貨如果是從正金字塔做法做是會很悽慘的,因為正金字塔是Margin3%,試問一邊跌一邊買,再跌在買,最終是否必死斷頭?那一邊漲一邊空,在漲再空,是否也是斷頭?所以正金字塔的做法是絕對錯誤的,而且一定要倒金字塔,倒金字塔有什麼好處?你做時要看底、看頭,看頭作空、看底做多,邊漲邊加碼,再漲再加碼,無須用到自己的錢,用的錢都是在戰場上俘虜來的,並且把它編入你的國防軍再打,借力使力,這是我最得意的一場戰爭。

5. 我不是看賺多少錢加碼,試問賺多少錢加碼能加幾張?沒能加幾張。我是看走勢、看時機加碼,但是買賣有一個要領,譬如說:你現在是做多頭加碼,你會怕回檔對否?比如你現在加20張,就必須做到隨時可以殺5張斬10張,後來你又認為行情穩住了,這時你認為可以加碼再加碼,這樣才不會再加碼時錢又不見了。所以我從一張做到一千多張。那是我花了幾個月過程去買賣,而且是每天都有買賣,有時甚至也必須花錢買保險(這動作一定要做),花錢買保險時你會猶豫說-這是要買還是要賣?有那”猶豫”時,我就先斬掉一些,等到有把握再買。這種動作通常是額外的花費,但是那是很重要的動作,假使你沒有花錢買保險,很可能情勢稍微回檔就全功盡棄,就會損失非常多的錢,所以這很重要。

6. 時間因素沒有放到型態上。我說做這買賣你本身就必須是一個機會主義者,說起來這話是不好聽,但是實際上你就是要做到這一點。你本身是一個機會主義者,才有資格投機,所以當機會出現(型態看出)你馬上就必須押下去。你若很慎重,KD、RSI等等的指標就拿出來參考,但是若參考下去,所有的買賣就不要做了──事實就是如此。我寧願進場時馬上碰到回檔,因為沒有"現在買就立刻漲,現在空行情就馬上下跌"這回事。人說做人要有量,做買賣也要有肚量,你不可能能夠算到剛剛好;所以做這買賣就要有量,買下去就必須承受它回檔,或是空股票時必須承受暫時的反彈。有人很會計較,很在意買時立刻跌幾點,空時立刻漲幾點,錙銖必較,這是不對的。你如果強調型態學,則得失不可看得太重,這很重要;若看得太重,就是丐幫弟子的做法。

7.在這市場做這麼久,我覺得我的敵人不是行情,不是研判,而是自己,這是我最大的敵人,怎麼說呢?因為人的心情會起變化。或許你今天想揮師攻下幾個城池,才願意放手,但是突然間下午一個朋友來找你:「你最近做得不錯,有賺錢了,就保守一點吧!」聽到這一句話,完了!馬上心情起了一個變化。你每天的心情都在變化,而或許你自己本身並不知道。所以我說:一個成功的買賣者,每天都必須撥出半小時給自己能夠冷靜,探討你自己(不是探討行情!),你的心情想法是否有平常心,這很重要。

8.從一張做到一千五百多張的過程確實是做長線。當時我以週線來觀察這行情是否在變化,所以是在長線佈局。在這過程中行情震盪來回,參考丐幫棍法,而基本上還是武當招式,有時長線,有時短線。簡單來說,頭部型態,可能你在頭部反轉這地方開始作空,然後一路加碼。我通常從頸線這個地方開始加碼,這裡”加碼”我通常會碰到一些煩惱;從這個地方加碼,如果碰到反彈,我可能會閃過,如果空太多MarginCall來我就減碼,再下來再空,再掃下來我翻作多,這是我的慣性。

9.做這買賣最重要事能掌握頭部、底部型態,你們一定知道並且記得,頭部和底部型態的掌握很重要,有的人只觀察不出手,通常破頸線下來他都空不到,你們若有經驗一定會知道這一點。有人參考tradingsystem電腦系統等,通常賺不到。有時候市場溫溫吞吞,很不乾脆,你要知道為什麼這地方很難做,所以我通常找尋的點通常在頭部出發的地方,一般看型態都是確定後再進場,但是有一個缺點,就是確定後反而賺不到錢。為什麼?很可能確定後空在”頸線下”,那幾天後呢?價位拉回,你抬頭一看,會看到我應該空在頭型下來這點,你自己會怕。所以我說小反彈時馬上補掉。底部型態也是一樣,當突破時,你通常賺不到,這不是期貨的點,期貨買賣的精神是在你能以小搏大,這很重要的做法就是能夠以小搏大,因為你要小錢賺到大錢,你必須在這就要看到這是一個大餅,你在醞釀期時就應該佈局,邊買邊走邊確定,一邊確定就一邊加碼,才有辦法賺到大錢。假設我在這裡買,假設拉回頸線內我就賣,既然已砍頭線了──你已經在外面磨一下午了,你還要磨回去嗎?再擦回去就不像了──這個一定殺出。我很可能在這一殺會變成不賺錢,甚至賠錢。那不要緊、我不怕、這次被騙下次再來。若是丐幫弟子,在這小賺你就跑了對不對?你做這買賣你一定要想辦法去賺大錢,因為在這買賣你沒有辦法賺大錢你就沒有辦法在市場上立足,這點你要記住。你如果一天到晚在強調牛肉麵,沒用、不會賺錢,它若不對,我就撤兵下次再打。

10.我每天除睡眠以外,每天所想的都是基本因素、技術因素那方面,及自己是不是夠冷靜,整個思緒都是這些。當時我看T-Bond應該是會下跌,我作買賣不只是看技術分析,我也看基本分析。但是我以技術分析為主,基本分析為輔,這點要記住,這點很重要,你們要記住。很多理論派做到後來都是強調基本面,技術面忽略(他們會把基本面淩駕於技街面之上),那我告訴你,這樣絕對賠錢行不通。

11.有成功的頭部型態,也有失敗的頸部型態,例如:失效的頭部型態,這是標準M型,當這頸線重返往上的時候,這個頭部型態就失敗。你說只有50%成功率,這我們不必在意。我們只看這型態是否成立,有時它會回檔再下去,但若沒沖過頸線,則是失敗的頭部型態,即然是失敗頭部型態,這種情況,我會補空,補空再反做多,既然是失敗的頭部型態,一定會重返頸線;反之亦然。

12.修練工夫須要時間。這時間培養你賺錢的經驗,也培養你賠錢的經驗,培養你時時刻刻去探討你自己。因為很多心路歷程不是你能體會,我的心路歷程只有我自己才能體會得出來,你必須自己經過無數次賺錢和賠錢你才有辦法體會。

13.  不管從事那一行業,你一定要很內行,要很專精,你到各行各業去看,各行業裡的成功者總是有限,結果有辦法成功的人一方面是機運,一方面是努力。我想我們這行業沒有機運這回事,如果說是一筆二筆的買賣,就有機運的問題;如果是長久的買賣,就沒有機運這件事,一定要靠功力。


14. 我認為一般人失敗的原因是對從那入門不瞭解,做到後來都成為了丐幫弟子,為什麼呢?因為你做趨勢作型態有時會變化,結果你做到後來都無法相信。而且作趨勢一定要有耐心,不然你看頸部醞釀期,下跌又扭扭捏捏才願意下去。所以你要有相當的耐心,而一般人對於這個都不是很瞭解。 以我的信念來講,我就是要去逮住大機會,沒有辦法去抓大機會,你就得常常賠小錢。這並不是說因為依靠型態學去做買賣很容易賠小錢,丐幫弟子也很容易賠小錢;重點差別是你要能夠發揮去賺大錢,這很重要。

15.像棉花、柳澄汁這種我沒辦法做,我一出手就幾百張幾千張,而那些市場那麼小根本沒辦法出手,所以我選擇T-Bond….,實際上這些東西比較容易拿捏,像那些小市場就沒辦法。因為我們作買賣是以線路圖為基礎作買賣,你到那些小市場一定會被小市場的POOL作手、被猶太人吃掉,所以要做成交量大且又活潑市場。

16.我最怕聽別人的見解!因為我們人作為一個trader,每天一支劍揹出來,前面是千軍萬馬,而你孤軍奮戰一個人往前殺敵心都很虛,就很容易受影響。人最怕受影響,一旦心虛,別人的一句話就會影響你;像我這種老戰將了,也很容易有這種情形,所以最怕人家告訴我他們的見解如何如何。所以我說一個成熟的劍客應該是一個孤獨劍客,越孤單越好;所以我很少出門,都躲在家裡 。我實在說,我很少出來和人討論,這18年來我都待在家裡,因為本身是作這種買賣生活,自己訓練自己已很孤單。

17.這行業最重要是佈局,佈什麼局?就是頭部型態、底部型態的佈局是最重要,你往後注意的應該是行情走否遵照你的見解在走,這樣而已。你不須要24小時盯著Monitor,不必要。 這是兩年前的事,當然錢都是從戰場上爭來的,現在我已經脫離過去那段困鬥期,已經穩定了。

 

==========================================================

這17點我時時拿出來看,看了又看,應該說這17點影響我非常的大,每次看這17點時,我都會想,要經過什麼樣的鍜鍊,才能淬鍊出這麼強大的交易風格,後來去研究黃先生的操作歷史,發現他是先從股票開始做起,最慘的時候他虧到把做生意賺來的錢都虧光還負債300萬,但因為他沒有放棄,從一張股票,一口期貨開始,最後建構出現在這麼強大的交易架構。

我相信要當一個成功的交易者,就像是黃先生說的,要經過至少五年的鍜鍊,以我自己為例,我是1987年進外商銀行當交易員,但我可是到1994年才開始能維持穩定的交易績效。所以當公司要發展程式交易平台時,我念茲在茲的是,不要讓初學者一使用這個平台,很快就被抬出去,要讓他們有時間鍜鍊,嚐試各種交易手法,飽嚐失敗的滋味,但又不會一敗塗地,這是XS的發展一直偏重在股票交易的原因,因為期貨的槓桿比股票大得多,期貨資金配置很重要,但初期我們系統能做到的很有限,我們自覺初期幫不了期貨交易者的忙,但對那些股票操作者,我們可以從選股,從交易時機的設計著手,讓我們的使用者可以有機會隨著經驗的累積,像黃先生一樣,漸漸型塑出自己的交易體系。

過去我在證券商工作時,總經理室那些每天作數據分析的高階參謀告訴我,我們的客戶長期下來,只有不到兩成的客戶賺錢,接近八成的客戶賠錢,這兩年,我認識的期貨商高管告訴我,長期下來,一個客戶從開戶入金到變成靜止戶,平均存活期間是11個月,而能活下來一直在賺錢的,只有1%。

這幾天有期貨商在大推程式交易,說程式交易玩期貨勝率比一般人高很多,這句話可能是對的,但我朋友告訴我,他們透過API下期貨的比重,這麼多年一直維持在一成,原因不是大家不用程式下單,而是下程式單的一樣被市場打敗抬出去,甚至抬出去的速度還更快。

不是我們不想推期貨的程式交易平台,以黃先生的交易策略為例,加碼的時機,資金的控管,是很重要的環節,以目前我們能提供的服務,透過程式找到可能的頭部及底部型態是可能做得到的,但一半一半的勝率只會讓每個期貨程式交易者都像上面說的丐幫一樣,重點其實在後面的加減碼及停損過程,等我們把資金控管的功能做好,等我們在股票程式交易平台的學習曲線達到我們滿意的地步,那時候再來往那個方向走。

我們發現,初學者從股票入手,成功的機率較大,受傷時傷勢較輕,所以我們從股票程式交易平台開始作。

希望用我們平台的客戶都能撐到找到自己的聖杯,沒有中途被抬出去

這是我的小小心願,為此,我們全力以赴。

 

 

xqlite banner

打造自己的大盤多空函數

 

在前幾次的腳本中用了tselsindex這個我自訂的函數,但因為沒有再特別列出它的腳本,所以有些朋友反映腳本無法編譯成功,我想有必要跟大家介紹一下大盤多空自訂函數這樣的概念。

以前操盤時,老市場常常告戒我們,要順勢而言,不要逆勢操作,也就是多頭市場作多,空頭市場作空,當年我曾經不聽規勸,在空頭市場寫了一篇報告說EG會大漲,建議買進東聯,結果東聯一漲上去就被公司派大倒貨,這次之後我就學乖了,民國84年的空頭市場,別人輸的不要不要的,我靠放空新纖當年還能維持正的績效。 挨了一頓棍子又吃了一根大蘿蔔之後,從此我的操作策略起手式一定先問現在是多頭還是空頭?

因此當我接觸到XS這個語法的時候,我在寫交易策略時,一定會把大盤的多空方向考慮進去。所以每一個我放下去跑的策略,除了個股本身的觸發條件之外,一定會加上大盤的先決條件,例如我寫過一個整理結速的腳本如下:

input: Periods(10,"計算期數");
input: Ratio(7,"近期波動幅度%上限");
settotalbar(300);
setbarback(50);
if GetSymbolField("tse.tw","收盤價")
>average(GetSymbolField("tse.tw","收盤價"),10)
and average(GetSymbolField("tse.tw","收盤價"),5)
>average(GetSymbolField("tse.tw","收盤價"),20)
then begin
condition1 = false;
if (highest(high[1],Periods-1) - lowest(low[1],Periods-1))/close[1]
<= ratio*0.01
then condition1=true//近期波動在7%以內
else return;
if condition1
and high = highest(high, Periods)
//最高價創波段新高
and lowest(low,periods+20)*1.1<lowest(low,periods)
then ret=1;
end;

這個腳本裡,我特別加了下面這一段

if GetSymbolField("tse.tw","收盤價")
>average(GetSymbolField("tse.tw","收盤價"),10)
and average(GetSymbolField("tse.tw","收盤價"),5)
>average(GetSymbolField("tse.tw","收盤價"),20)
then begin

這一段的意思是,只有在加權指數高於10日均線且其5日均線高於牛20日均線時,才開始跑下面的程式,這就是先考慮大盤多空再來設定個股的觸發條件。

但如果每個腳本都要先寫這麼一段,感覺很煩,而且判斷大盤的多空方向有不同的方法,也不見得每次都用同樣的腳本,所以我就把這一段寫成自訂函數。

舉 tselsindex為例,我當切觀察到,這 幾年外資如果連續買超時大盤多頭的機率較高,所以我就寫了以下的自訂函數

input:length1(numeric);
input:lowlimit(numeric);
 
if countif(GetSymbolField("tse.tw","外資買賣超金額","D")>0,length1)
>= lowlimit
then value1=1
else
value1=0;
tselsindex=value1;

這個函數的概念是,如果在一段時間內外資買超的天數超過一定比例那麼tselsindex的值就=1,否則

=0 ,例如tselsindex(10,7)=1就代表過去十天至少有七天外資是買超的。

 

所以如果大家複製了我寫的腳本中有像tselsindex這樣的自訂函數,請先把這個函數加到自己的自訂函數中再來跑腳本才不會出現錯誤。

當然各位也可以自己制定自己的大盤多空策略函數,然後把它應用在自己的交易策略上。

我這幾年忙於公事,無法當一個全職的交易人,但光靠著站對邊,以及空頭市場儘量壓低持股比例這兩個原則,每年都還能混點業外收入,我深深知道順勢而為的好處,所以建議大家,在寫波段交易策略時,把大盤的多空方向考慮進去。

盤不錯的時候,冷門股量暴增到多少值得留意?

這一波不少原本默默無聞的中小型股,在出量後大漲,我想試著透過回測,去探究量要爆增到多少,才算是多頭號角已響起,回測的結果是,單日成交金額3億台幣,對一檔一整個月成交量都不到1億的公司來說,就是一個值得參考的多頭訊號。

我的測試腳本的撰寫的邏輯如下圖

單日成交值爆到三億的決策流程

對應的腳本如下:

value1=GetField("成交金額");
if trueall(value1[1]<=100000000,20)
and value1 cross over 300000000
and close > close[1]
and tselsindex(10,7)=1

then ret=1;

這當中用了一個我自己寫的大盤多空函數叫作Tselsindex,它的對應腳本如下:

input:length1(numeric);
input:lowlimit(numeric);
 
if countif(GetSymbolField("tse.tw","外資買賣超金額","D")>0,length1)
>= lowlimit
then value1=1
else
value1=0;
tselsindex=value1;

這麼寫,是讓系統在過去十天裡有七天外資買超的時候回傳1。

我這個腳本去回測中小型股的股票,出場是設在訊號出現之後的第十天出場,如果不考慮大盤(把tselsindex那一行拿掉),過去三年的回測報告如下:

07032803

過去三年共出現52次交易機會,雖然勝率五成左右,但明顯是贏的時候贏的多,輸的時候輸的少,所績效才能大漲小回。

如果考慮到大盤多頭才進場,把tselsindex=1這一行加進去,回測報告如下:

07032802

勝率明顯提昇,平均每筆交易的報酬率比不考慮大盤多空時要高出1%

如果把回測的時間拉長到從2011年初到現在,績效沒有這三年好,但也是不差的。

07032801

 

如果暴量的標準降為2億呢? 下圖是跑近三年資料的回測報告

07032804

交易的次數會多出很多,但勝率就被拉下來了。

從以下的測試,我們可以說,如果一檔過去二十個交易日,單日成交金額都不到一億的股票,如果最近一個交易日,成交金額已超過3億,那麼在多頭市場,這樣的股票,是很值得留意的,但如果單日成交金額不到3億,那就友達以上,戀人未滿了。

 

xqlite banner

 

 

choppy market index ,ADX及噪音指標等去盤整指標

傳統的技術分析提供了兩類不同的工具,一種是趨勢指標如MA,MACD,DMI等,另外也提供了震盪指標像KD,RSI等。我在當外匯交易員時,師父教我們說有趨勢時用趨勢指標交易,盤整盤時,用震盪指標交易。 至於什麼時候是趨勢,什麼時候是盤整,因為唸的是經濟系,所以就用各種統計數據去計算多空雙方的力量,多空力量相差不大時是盤整盤,一方明顯強於另一方時是趨勢盤,股票市場可以用的數據更多,怎麼判斷現在是趨勢還是震盪,有更多的方法,可惜的是,我用了一些數據,效果都不如傳統的方法好。

目前傳統的方法,最常被提到的有三個指標

一,Choppy Market Index

這個指標的作法是以最新收盤價減去N日前的收盤價取絕對值當分子,以區間最高價減去區間最低價當分母,然後乘以100,取百分比值。

這個指標如果絕對值愈高,要嘛是分母很小,也就是區間最高價跟最低價相去不遠,這自然是盤整盤,要嘛是分子很小,那代表收盤價差距不大,也是盤整盤盤無誤,但這個指標最悶的地方在於,如果收盤價變動很小但最高最低價變動也很大時,數字可能很小,但實際上可能是尖頭反轉後的大漲。

如果是在一個原有趨勢裡,這個數字開始從高點往下走,的確是一個從趨勢走向盤整的訊號。

我把這指標改良了一下,用在加權指數上

腳本如下

input:period(10,"計算區間");
value1=(close-close[period-1])/(highest(high,period)-lowest(low,period))*100;
value2=absvalue(value1)-30;
value3=average(value2,3);
plot1(value3,"市場波動指標");

用它畫成的圖如下

07032701

從這張圖可以看出,

1.當這個指標從50以上下滑時,代表一個趨勢的休息

2.這指標踫到尖頭反轉會失真

二,ADX指標

在計算DMI時,也會算到ADX ,它的算法其實跟CMI很像,只是它是把上攻的部份佔波動區間的比率與下殺部份佔波動區間比例的差當分子,兩者的和當分母,所以如果踫到尖頭反轉時,一樣會踫到分子太小, ADX的值變小,但真實情況可能反轉後的行情正如火如荼的開展中。

下圖就是加權指數跟ADX的對照圖

07032702

從這張圖看的很清楚,如果趨勢形成後,中間遇盤整,ADX可以很清晰的透過指標值的回降而呈現,但如果是趨勢的反轉,就算新趨勢已形成,指標仍會是呈現盤整多空不明的情況。

三,噪音指標

這個指標先前我有介紹過,它是拿近N期的漲跌值當分母,拿近N期每天的高低差當分子,計算的腳本如下:

input:n1(10);
input:n2(10);
 
setinputname(1,"計算區間");
setinputname(2,"短天期移動平均");
value1=absvalue(close-close[n1-1]);
value2=summation(range,n1);
if value1=0
then return
else
value3=value2/value1;
value4=average(value3,n2);
 
plot1(value4,"短天期噪音指標");

 

這指標跟大盤的對照圖如下:

07032703

這指標的概念是指標值昇高代表噪音變大,代表阻力變大,盤整的機率大增,相反的,如果這指標在往下走,代表趨勢明顯。

 

除了上述三個指標之外,我試過用籌碼及委買委賣張數去做,效果都不好,就算用這三個,寫出來的策略,回測的數據也不大漂亮。

在趨勢市場中運用順勢交易系統,在盤整市場中運用震盪型交易系統,這樣的主張被稱為恆溫器交易系統,這種系統號稱不管在趨勢盤或盤整盤都能賺錢,這種交易系統的核心就是先判斷目前是趨勢盤還是盤整盤。

如何分辨現在是盤整還是趨勢盤,對我來說,還真是高難度的事情,目前也還沒有找到可信度高到可以直接拿來放到程式交易腳本中的策略,上面三個方法,比較像是去偵測原來趨勢是否進入多空均衡的狀態,這些方法對於如何提醒自己趨勢可能進入盤整,是有用的,但如果是尖頭反轉時,千萬別因為看到這類指標而錯過了行動的時機,這一篇算是跟大家介紹這一派別的思考方式,若真的找到好的方法,再上來跟大家介紹。

 

 

 

 

 

 

 

 

為什麼學投資要看A到A+

A到A+這本書,英文名字叫Good to Great,大部份能夠上市的公司,應該都可以算是夠 good的公司,但做為一個投資人,我們希望投資的標的,最好不僅僅只是good,我們希望挑到great的公司,特別是像現在指數都近萬點了,我們會希望投資的標的能夠長線保護短線,所以我們要挑那些好上加好,會不懼大環境,一直好下去的公司。

在A到A+ 這本書中,用了一張圖來說明這樣的概念

AA

James Collins認為,一家公司要從厚植實力到突飛猛進,要在三個方面建構六個特點,我把這樣的概念列表如下

一,對的人:

1.有第五級的領導人

2.先找對人再決定要做什麼

二,正面對決的心態

1.勇於面對嚴酷的環境

2.刺蝟原則

三,嚴謹的行動力

1.有紀律的文化

2.掌握新科技來加速成長

這六點裡最難懂的應該就是剌蝟原則,一樣有張圖來說明這個概念

hedgehog1

這張圖的意思是,那些從good往great 邁進的公司,他們把公司的重心放在以下三個的交集上

1.充滿熱情的事業

2.能達到世界水準的事業

3.可以帶動獲利引擎的事業

對於非商科背景的朋友,在這本書裡,James Collins透過研究,提出了變成偉大公司的作法,這些作法,不是用財務數字來描述,而是透過比較good的公司及great的公司,然後找到的一些great公司的共通點。

為什麼James Collins會寫這本書呢?

這要從他寫了Bulit to Last這本書談起,這本書的中文書名叫基業長青

他在這本書裡找出了18家所謂高瞻遠矚的公司,這些公司都具備一些共同的特徵,他說,如果你在1926年1月1日,各投資這18家公司一美元,到了1990年底,會增值到6356元,如果你是投到大盤指數基金,則是增長到415 元,所以Collins在這本書的序言裡,一開始就建議每一位投資人一定要看這本書。

後來有位麥肯錫的顧問跟他說,你研究做的很好,書寫的很棒,但書上只告訴我們,great的公司具有那些共同的特徵,但沒有告訴我們要如何才能讓一家公司從good變成great。

所以James Collins又花了5年的時間去研究要如何從good 變成great

然後寫了A到A+這本書。

 

這本書跟大家說明了從Good到great的進程,這些上面所提到的進程,大致可以列出幾個重點

1.有一個第五級的領導人

2.這位領導人把心思花在,不斷找到對的人進到公司

3.然後這家公司有紀律的把他們的熱情,專注在一項他們可以具有世界競爭力的產品

4.而這項產品是可以帶給他們夠豊厚的財務報酬

5.這家公司很有紀律的往這樣的方向持續前進

6.他們善有科技的創新,來加速他們往這樣的方向前進。

不曉得各位看到上面六點,腦海裡浮現的是那家公司呢??

台積電?鴻海?巨大? 巨大? 華碩? 大立光? 微星? 研華? 正新? 聯發科?

 

台灣還有那些公司,符合上述這六項原則,正一步步地在厚植實力,然後等到時機成熟的時候,會開始進入突飛猛進的階段呢?

我以前當研究員拜訪上市櫃公司的時候,感受到那種長期值得投資的公司,大都能夠維持一種不斷地迎向挑戰,專注在特定事業,持續架高進入障礙的韻律,這樣的公司,通常毛利率能維持在一定的數字,且每年營收很少會有較大幅度的衰退。

看了A 到A+這本書,才發現,這樣的韻律,正是厚植實力的過程。

所以,我推荐這本書,給所有的朋友

因為這裡頭,包含了如果挑出好公司的非量化觀察角度啊!!

 

xqlite banner