Author Archives: 發財橘子

現金總市值比高的公司

在價值型投資當中,最保守最保守的價值型投資者,會想要尋找那些手上的現金比總市值還高的公司,因為公司最慘的情況就是被清算,被清算時最容易變現的是現金,如果市值跌到比公司持有的現金還低,那就很容易吸引大股東或其他的蒼蠅蚊子聞香而來,這時候如果成交量出現跟以往不一樣的熱絡景況,那就可能公司股價過低的情況已經被市場有心人士發現了,現金總市值比高的這個選股機器人,就是在挑這樣的公司。

要挑這樣的公司,一共是用了兩個選股腳本

第一個是找現金總市值比高過0.7的公司

value1=GetField("現金及約當現金","Q");//單位百萬
value2=GetField("短期投資","Q");//單位百萬
value3=(value1+value2)/100;//單位億之現金及短期投資合計金額
value4=GetField("總市值","D");//單位:億
if value4<>0
then value5=value3/value4;
//現金總市值比;
if value5>0.7 and value3>3
 //現金總市值比大於0.7且現金及短投合計超過3億
then ret=1;

outputfield(1, value5, 1, "現金總市值比");

第二個則是常見的無量變有量

input:v1(1000,"前一根bar成交量");
input:v2(1500,"這根bar成交量");
if trueall(volume[1]<=v1,10) and volume>v2 
then ret=1;

這兩個腳本合在一起,就是來挑這種股價低於價值且開始出量的股票。

舉個例子,2363矽統這檔股票,

236301

帳上現金有12億,長期投資裡有備供出售的聯電315380張,帳面價值是38億,光這兩者的合計就是50億,但矽統的股本是56億,股價只要跌到6.5元左右,總市值只有36億,這是標準的現金價值比市值高的股票。

各位可以發現,這檔股票跌到6.5元以下時,如果出量就會彈回七元以上,然後再跌下來,這就是很典型的無量變有量就是買點的例子

236302

這種股票會跌的這麼慘,通常是前景堪憂,但如果帳上現金多,就好像一個小朋友抱著大量的現金在街上走,難保不會被有心人士看上,這個選股法就是在尋找這樣的公司。

 

xqlite banner

低PB股轉強

 

在價值型選股機器人裡,有一個策略是低PB股轉強,這個策略我是尋找股價低於15元但每股淨值超過9 元的股票,然後股價創二十日新高且股價尚未大漲的,過去三年回測的數據還不錯。

S__20414477

這個選股策略,是從一個警示策略改良而來,這個警示策略的腳本如下

// 選股法: 普通股全部
// 作多, 持有期別=20期
//
if GetSymbolField("tse.tw","收盤價") > average(GetSymbolField("tse.tw","收盤價"),10)
then begin
 if close<15
 and H = highest(H,20)
 and close<lowest(low,20)*1.07
 and highest(h,40)>close*1.1
 then
 ret=1;
end;

這是在多頭市場下,找先前股價下跌後的低價股

 

這策略在多頭市場蠻有效,但因為挑到的股票體質不佳,如果是進到空頭市場,就不合適用這個策略

這個腳本的概念是,在多頭市場的時候,尋找那些先前有下跌的低價股,然後當這些股票創二十日新高,但股價尚未大漲時進場,因為這代表股價在這陣子是處於打底的情況,這個策略就是找那些下跌後打底轉強的低價股,例如這個策略選到的富強鑫就是具有這樣的特 色。

2017052302

我自己使用這個選股策略的心得是,如果創新高的這兩天不是被大盤帶上來,股價有比大盤強勢,而且有放量,勝率會更高,另外,千萬記得空頭市場的訊號千萬別當真,這些低價股如果原來的主力放手,跌起來超可怕的。

 

選股機器人下載點

xqlite banner

選股機器人APP介紹

每次介紹語法,總被我那些豬朋狗友虧說,啊咱這麼熟了,直接告訴我答案就好啦, 幹嘛叫我學寫程式; 那些晚上回家做功課,要瀏覽大量資料挑股票的朋友們也常建議我們,直接把他每天要做的事情,想辦法讓電腦去做,回家最好就可以有一組股票名單可以進一步深入研究。挪雞鴨說科技始終來自於人性,各位的聲音我們聽到了,今天就來跟大家介紹咱們家最新的產品: 機器人選股APP,透過這個APP,每天晚上您要作功課才挑得出來股票,現在直在出現在您的手機裡,接下來您只要從這些股票中再去作進一步的研究就可以,這個機器人可以省下各位做功課挑股票的時間。

 

各位從iPhone或Google phone的Store 打關鍵字“選股機器人”,就可以找到這個app,這個版本的app是免費的,如果您是中華電信的hami包會員,裡頭會有一些會員獨享的選股法。

下載完這個app,打開後像下圖

IMG_5072

 

按下一步之後會出現以下的畫面

IMG_5073

按了開始測驗之後,接下來按電腦的問題問答,

IMG_5067 IMG_5068 IMG_5069 IMG_5070 IMG_5071

 

電腦就會自動找出適合您的機器人,這邊合適您的機器人可能不只一隻

IMG_5063

之後每天按下”我的訊號“這個bottom,就可以找到符合您需求的選股策略,每天跑出來的股票清單

IMG_5064

這些股票你如果有覺得值得進一步作功課的,按一下旁邊的心號,就可以加入觀察名單,然後按下”觀察名單”的bottom,就可以看到這些股票的名單

IMG_5065

目前共提供了七個機器人,每個機器人設計理念都有簡短的說明

IMG_5074

所附的這些選股策略,都是回測過有一定勝率的,設計的理念也會在每個策略的最上方加以說明

IMG_5075

這個APP接下來會跟XQ全球贏家整合在一起,讓各位看到股票名稱後可以直接在手機上看盤,查資料,看線圖及下單。

這是敝公司呼應大家的需求最新的產品,請大家使用後多給我們批評指教

 

xqlite banner

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

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

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

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

 

貝氏定理

 

當我們可以算出近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這樣的自訂函數,請先把這個函數加到自己的自訂函數中再來跑腳本才不會出現錯誤。

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

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