Author Archives: 發財橘子

唐奇安通道

今天要介紹一個海龜交易法很有名的指標:唐奇安通道。

這是由著名的海龜交易員Richard Donchian所發明,是一個極簡的突破策略:當價格突破通道上緣就買進做多,跌破通道下緣就賣出部位。

可以用以下的腳本畫出指標圖:

input:Period(13);
plot1(Highest(H[1], period),"通道上緣");
plot2(Lowest(L[1], period),"通道下緣" );
plot3((Highest(H, period)+Lowest(L, period))/2,"通道中線");

警示則可以寫成

input:Period(13);
if H = Highest(H, period) then ret =1;{作多}
if L = Lowest(L,period) then ret=1;{作空}

當然這樣的期數調整會視情況而定,每一檔商品可能最佳的結果也都不一樣,不過通常每個交易員都會有一個習慣的參數,可能是月線或季線加減。

我們先看一下加上買賣點指標畫在圖上的情況,腳本加上

if C > value1[1] then begin
plot4(C*1.01 ,"作多");plot5(C*1.02);plot6(C*1.03);plot7(C*1.04);
end;
if C < value2[1] then begin
plot11(C*0.99 ,"作空");plot12(C*0.98);plot13(C*0.97);plot14(C*0.96);
plot15(C*0.95);plot16(C*0.94);plot17(C*0.93);
end;

我們從2747可以看到明顯的多空分壘,當股價的波動具有足夠的趨勢性時,這樣的指標就能夠發揮最大的效用!

這幾年來簡單的突破系統由於採取極短線賺取利差的人大幅增加,而導致假突破等”騙線”的情況越來越多,海龜交易也適應性的產生許多變形,但總結的目標就是要減少雜訊,判斷出商品的走勢穩定性,這是在交易中相當關鍵的獲利點!
tac1

自訂頁面唐奇安通道可以參考這裡!

多空趨勢指標

研究過許多策略後,會發現一種情況,最後是有效而能存活的策略,都會引用到波動率的概念!

這是為什麼呢? 照一個最基本的邏輯去看,要有獲利,其實就是在買進賣出間得有一定足夠的價差,讓這筆交易買在較低的點,賣出在較高的點,扣除手續費後,才是淨資本利得。

這件事最大的關鍵點就是”足夠的價差”!!

這意謂著,當在發展策略的時候,最好都要以這個點當作重要的參考依據,因為這是獲利的來源!! 所以絕大多數的策略,都會將波動率考慮進去,當做是必要參數!!

今天我們再來看一個常用的訊號,這是利用每天的價差高低點,計算出一個通道,突破通道上緣且收最高則作多,反之則標記作空。

我們先建立一個趨勢函數:LongShortTrend 腳本如下:

input: ATRLength(NumericSimple), ATRMult(NumericSimple), Strength(NumericSimple), sTrend(NumericRef);
var:mATR(0), avg(0), mLower(0), Upper(0), trend(1), flag(0), flagh(0), xTrend(0),HighLow(0);

HighLow = Highest(High, ATRLength) - Lowest(Low, ATRLength);
mATR = XAverage(HighLow, ATRLength);
avg = (XAverage(high, Strength) + XAverage(low, Strength))/2;
Upper = avg + mATR;
mLower = avg - mATR;

if c > Upper[1] and c > Highest(High, Strength)[1] then trend = 1
else if c < mLower[1] and c < Lowest(Low, Strength)[1] then trend = -1;

if trend < 0 and trend[1] > 0 then flag=1 else flag=0;
if trend > 0 and trend[1] < 0 then flagh = 1 else flagh = 0;

if trend > 0 and mLower < mLower[1] then mLower=mLower[1];
if trend < 0 and Upper > Upper[1] then Upper=Upper[1];

if flag = 1 then Upper = avg + mATR;
if flagh = 1 then mLower = avg - mATR;

if trend = 1 then xTrend = mLower else xTrend = Upper;
LongShortTrend = xTrend;
sTrend = trend;

從這個函數很明顯可以看出,我們用高低點價差的均值和高低中價均值去做了一個通道,畫出指標腳本用下面腳本

input: Length(9), Multi(1), Strength(9);
variable: strend(0),LS(0);
LS = LongShortTrend(Length, Multi, Strength, strend);
if strend = 1 then Plot1(LS,"Trend_Up") else Plot2(LS,"Trend_Down");

if C cross above LS then
begin
plot4(C*1.01 ,"作多");
plot5(C*1.02);plot6(C*1.03);plot7(C*1.04);
plot8(C*1.05);plot9(C*1.06);plot10(C*1.07);
end;

if C cross below LS then
begin
plot11(C*0.99 ,"作空");
plot12(C*0.98);plot13(C*0.97);plot14(C*0.96);
plot15(C*0.95);plot16(C*0.94);plot17(C*0.93);
end;

這樣很明顯可以看出,當股價一有趨勢時就會出現訊號,做為明確的買賣依據!!

ls2

多空點數指標

大量使用量化數據的經驗: 頭一年的時候還在摸索,會用很少的參數做嘗試,看看不一樣的參數會帶來什麼樣的結果。第二年開始,接觸的工具多了,會開始想要用更多樣化的參數,更複雜的方法,希望找到開啟交易致富之門的鑰匙,大量的最佳化和資料回朔測試,參數化…等等.買了高速電腦,學寫精進程式功力,然後交易實戰,調整,再實戰! 就這樣又過了幾年,行情起起伏伏,怎麼變化參數永遠都趕不上變化的市場!

最後直到放下了無止境的測試,刪除掉所有不該出現的參數,也才放下了那過於沉重的得失心!

就好像楊過在練劍的過程一樣,曾經追求的利刃終要放下,而致玄鐵重劍: 重劍無鋒,大巧不工。

大巧不工,說得真好!真正的關鍵,並不是高度參數化或回測最佳化的策略,而是符合市場行情最簡實的工具腳本!!

今天把一個很簡單的概念做成指標:

var:i(0),Lscore(0),Sscore(0);Lscore=0;Sscore=0;
for i = 1 to 100
begin
if C> H[i] then Lscore+= i else if C < L[i] then Sscore+= i;
end;
plot1(Lscore,"多方點數");
plot2(Sscore ,"空方點數");

過去的100天的高低價格,和現在的價格相比,現價高則多方點數加1現價低則空方點數加1。
我們可以看得出來多空勢力的轉折,對於2317,在2013年8月出就從空方優勢轉為了多方優勢! 2881富邦金在2014年5月底也扭轉成為多方走勢!!

dd2

dd1

融資異常變化指標

傳統的概念上,融資多是一般散戶在使用的工具。而融資變化的解讀,也通常會是”融資增等於籌碼散,融資減表示散戶減”! 不過這段時間以來,眼尖的人可能會發現,這樣的現象解讀似乎應該被重新認知! 我們先要做個假設:除了散戶,主力大戶可能也在使用融資,而在這樣推論下,應該會使融資使用率有顯著的變化!

我們一般在看融資,多數時候都是用張數來判斷,但是對主力大戶而言,金額和均價才是觀察的重點! 因為金額決定風險,均價決定維持率!!

我們用這最近3天內的融資變化金額去除上這3天的總成交金額,做成一個指標,看看這個指標值需要大到怎麼樣的程度,才具有特別意義?

但是,這樣就夠了嗎? 依照先前所講的波動率獲利決定理論,我們還需要加上一個條件: 當融資波動異常的時候,我們要記錄下這個時候的高低價格,當收盤價突破或跌破這個高低價,我們才進行動作,這樣,勝算才大!!

我們看一下腳本:

input:CDay(3),XRario(0.25),InDec(1);
setinputname(1,"計算日數");
setinputname(2,"佔比異常門檻");
setinputname(3,"參數:1=增異常,-1=減異常");
variable:i(1),XData(0),XDataAmount(0),XAmount(0),KeyPrice(0),xLower(0);

XData = GetField("融資增減張數")[i];
XDataAmount = Summation(GetField("成交金額")[i]/Volume[i]*XData,CDay);
XAmount =Summation(GetField("成交金額")[i],CDay);

if InDec >=1 then begin
if XDataAmount/ XAmount > XRario then begin plot1(XDataAmount/ XAmount,"增加"); KeyPrice =H; end;
end else begin
if XDataAmount*-1/ XAmount > XRario then begin plot2(XDataAmount/ XAmount,"減少"); KeyPrice=L;end;
end;

if KeyPrice = 0 then Keyprice =C;
plot3(C,"收盤價");
plot4(KeyPrice,"關鍵價");

我們可以在幾檔股票上看到一個很明顯的問題:3498,在發動飆漲之前,融資使用變化率猛飆高,真的會是散戶所為嗎? 而且在標高的大幅回檔時,融資也沒有大幅減少! 於是這對我們一開始的大戶用融資的假設,給了一個佐證案例!

有興趣各位可以改成警示試試!

f3

f2

f1

籌碼沈澱指標

以前偶會看電視老師分析股票,所謂的股海”專有名詞”,在大部份的老師口中重疊度都還頗高,譬如,一個熟悉的詞彙想必大家都聽過: 籌碼沉澱。

老師總是說:這檔股票正處於多頭回檔,待籌碼沉澱後可以擇機進場!
這句話真的是太深奧了!! 到底”籌碼沉澱”是怎麼沉澱? 從哪裡沉到哪裡才算沉澱,還是量縮就是沉澱?如果是,每檔股票量差那麼多,是要縮到幾張的量?而最後擇機進場又是什麼機?

光是要靠人腦股市分析器要解讀這段話就已經是相當不容易了,要拿來應用在市場上不就更加困難?

為了用數據明確化這件事,我們要做一個假設: 假設存在一個區域,是籌碼沉澱區,在這個區域內,持有部位的人不會隨盤勢的小幅波動而輕易賣股票。

為什麼要假設是一個區域呢? 推論是這樣:當股價在一定波動幅度下,風險都是可以承受的,所以籌碼會漸行穩定,萬一股價跌破某個關鍵價位,有紀律的交易員一定會執行停損,這時候穩定的籌碼會丟出來,使得股價跌破籌碼沉澱區,而再呈現相對浮動! 這個關鍵價位就是區域的下界。同理可推,至少要有一定的獲利才會賣出,因而會有區域的上界。

再來就是籌碼沉澱要怎麼計算呢?我們把沉澱這件事處理一下:沉澱的意義懸浮的粒子往下降,所以要求的條件是要懸浮籌碼要往下減少,最好是要在低點! 那接下來只要解決懸浮的籌碼就好辦了!!

我們將懸浮籌碼定義是一定期間內,量的變異性。在這邊採用的是5,10,20天扣除當沖的成交金額,用這個金額去計算期間變異。如果這個變異性很低,懸浮籌碼可以合理推論也降低很多,我們設一個門坎來表示降夠低了,這邊先用20天低點做為一個警戒點,畢竟我們沒辦法知道底在哪裡。

我們看一下腳本:

value1 =GetField("成交金額")- GetField("成交金額")/v*GetField("當沖張數");
if value1[1] >0 then value2 = 100*value1/value1[1]-100;

if currentbar < 1 then return;
value3 = standarddev(value2,5,1);
value4 = standarddev(value2,10,1);
value5 = standarddev(value2,20,1);

plot1(value3,"5日籌碼標準差");
plot2(value4,"10日籌碼標準差");
plot3(value5,"20日籌碼標準差");

if value3 = lowest(value3 ,20) and
value4 = lowest(value4 ,20) and
value5 = lowest(value5 ,20) then
begin
value10 = highest(high,20);
value11 = lowest(low,20);
plot4(maxlist(value3,value4,value5),"籌碼沉澱門坎");
end;

if value10 = 0 then value10 =c;
if value11 = 0 then value11 =c;
plot5(value10,"籌碼沉澱區上界");
plot6(value11,"籌碼沉澱區下界");

cc3

cc2

cc1

多方維持線

在多頭理論中,有個很重要的價位叫做”前波低點”。在循環上漲的過程中,每次的回檔低點都要一直墊高,這樣才稱得上是一個健康的多頭!!

利用這個原理可以做一個推論:當價格一直在前波低點之上時,多頭是持續的。那我們可以把這個價格拉出來做成一條多頭維持線,當做是多方進場或是出場的關鍵價位!!

由於這是單條線的買賣訊號,為了避免在這條線上下擺動時所造成的假訊號,今天還要介紹一個概念:確立機制。

這也可以利用在均線穿越等單價格的策略上! 當股價持續大於這條關鍵價位上N天,這樣才算確立,可以用語法TrueAll來處理,表示最近幾期都符合了這樣的情況。

我們先來看腳本:

var:p1(20),Posit(0);
var:iLow(low); ilow = minlist(l,ilow);
value1 = highest(h,p1); if value1 >value1[1] then ilow =h;
if Lowest(l,p1) =ilow then value2 = ilow;
if value2 > value2[1] then value3 = value2;

plot1( value3,"多方維持線");

condition1 = trueall(c>value3,3);
condition2 = trueall(c<value3,3);

if condition1 and condition1[1]=false and Posit= -1 then begin
posit=-1;plot11(C*0.99 ,"作空");
plot12(C*0.98);plot13(C*0.97);plot14(C*0.96);
plot15(C*0.95);plot16(C*0.94);plot17(C*0.93);
end;

透過這樣傳統且單純的方式,可以很明確判斷個股商品多空,也幫助我們檢視持股的健康度,尤其在這種關鍵時刻,汰弱留強是必然要做的功課,各位請一定要試試!!d2

d1

股價創新高後隔多久會再創新高

之前我們對於多頭趨勢的個股做過純價格分析,今天我們再來看看多頭另外一個重要因子:時間!!

通常要從一檔股票要賺到超額報酬,在部位持有上,就必須講求效率!
先定義報酬效率:股價變動除以經過時間!
換成白話一點說:效率就是要在最短的時間內,取得最大的股價正向變動!!

透過先前的多頭股價變動分析,我們知道當股價自高點回跌15%,接下來的報酬效率就會大幅下降而失去續抱部位的誘因! 但不可忽略的是這個效率公式裡的另外一個重要變因:時間,所造成的影響!

當股價上漲之際,除了漲幅要大,最好時間也要短! 可是當股價在休息之時,到底要”忍耐”多久,才能讓”回檔的漫長等待”變成一切都是值得的呢?

我們用XS來分析看看,這其中有什麼奧秘?!
同樣的,我們找出一年來曾經翻倍的個股,統計一下從上次創高到再次創新高的間隔天數。如果星期一創了新高,星期二回檔不過昨高,星期三再漲過星期一的高點,這樣回檔計算天數就是1。如果連著兩天都一直創新高,回檔天數就是0,不用列入計算!

我們將回檔天數40天以內的資料拿來分析,因為股票能持有超過兩個月以上實屬相當不易!

如下圖,我們發現多數的回檔天數, 都集中在6天以內,之後就很快的遞減了!
這表示,真強勢的個股,會儘可能的快速再度表態,就像火山噴發一樣,時間過太久就會冷卻! 要趁著行情還火熱的時後,趁勢再下一成!!
v1

看下一張累計圖,發現了一件更有趣的事:有68%(2/3)以上的個股相隔10天內會再創新高,更是有9成以上的創新高,會在23天內就發生!!
這意思是:對於大多數股價翻倍的個股,兩個星期內就會有股價創新高的現象,而有高達9成的再次創新高,會在一個月內發生!! 如果波段漲勢休息超過了一個月,股價還在溫吞不前,那報酬效率就已經是相當低落了!
v2

波動率指標

我們之前提到在操作上,時間是相當重要的一個角色!
股票進出的成本,除了手續費和稅金,比較容易被忽略就是時間成本,簡單一點講,如果把資金壓在某檔股票上,而這檔股票長時間的波動都很小,或是幾乎沒在動,而其他股票確是活跳跳的! 那這樣可獲得的報酬相對就可能來得小一些!

此我們設計了一個指標,可以衡量這檔股票的股價活潑程度:

value1= 100*(average(H/L-1,20)+standarddev(H/L-1,20,1)*3);
value2 = value1- average(value1,10);
plot1(value1,"波動指標");
if value2> 0 then plot2(value2,"波動放大");
if value2<= 0 then plot3(value2,"波動縮小");

我們可以從圖上看到,當波動較大時,相對波動較小的時段,可能獲得的報酬,是有相當大的差異的!!

在評價低檔區,等待大風吹起的股票

成長股及轉機股是這一波的主流,不過漲幅也都可觀,高處總是不勝寒。

於是,我開始想去找那些還在低檔的股票,我列了兩個條件

1.股價淨值比跟這三年來的最低值差不到一成。

2.股東權益報酬率還是正的

然後,我就用XS寫了以下的腳本去跑

input:length(36);
input:ratio(10);
setinputname(1,"計算的月數");
setinputname(2,"股價不超過每股淨值低點的百分比");
if barfreq<>"M"
then return;
value1=q_NetValuePerShare;//每股淨值
value2=q_CurrentROE;//股東報酬率
if value1<>0
then value3=low/value1
else value3=0;
value4=nthlowest(1,value3,length);

if value3<value4*(1+ratio/100) and value2>0
then ret=1;

從實際上去跑這程式所選出來的股票,基本上因為景氣循環及大環境的因素,股價沒啥表現,但如果景氣回升,基本面有轉機,或是大環境的負面因素消失,那麼這些股票因為基期低,又在三年來評價的低檔區,相對風險低,報酬高,但麻煩的是不知它們何時才會風向轉變。

所以如果把這個腳本再搭配股性轉變的腳本
那就連進場的時點都考慮到了

有興趣的朋友,不妨自己試一試。

量要放大幾倍股價會漲?

在觀察一檔股票行為的時候,成交量往往被視為一個相當重要的因子! 成交量的增加,除了是一種人氣指標,也意謂著行情的到來,就是我們常聽到的量先價行!

今天我們純粹的以量的角度來看價格反應! 假使今量是昨量的兩倍以上,但還不到三倍,則放量倍率就是2,以此類推,我們考慮昨量最小的臨界至少要有100張,看看放量一個星期以後,價格的變化!

下圖的橫軸就是放量倍率,縱軸是所有符合情況下,5日後的變動平均值。我們看到一件很特別的事: 放量倍率和變動方向,是有著特殊關係的!! 當放量倍率在2到4倍時,變動率沒有明顯的特徵,但進入5倍以後,正向力量開始上升,到8倍時到到高峰,再往上升時,反而成為了空方的負向力道!!

這和我們的經驗頗為吻合,當量是在溫和放大時,對於多方動能,是一種正向反應,但若量過度放大,反而不利後勢! 當然,我們也是得注意到對於某些特殊情況,例如是華亞科在極低檔的超爆量這種特例,這樣在使用統計資料在分析市場的時後,才能更全面客觀!!
vv