Author Archives: 發財橘子

合併多重訊號到單一警示retmsg的應用

今天我們要介紹一個新功能,可以把多樣不同的訊號放在同個一腳本裡,只要透過設定回傳的訊息,就可以知道這個商品是多或空的觸發,而只要使用同一個進階警示就能完成!!

以台指期貨為例,在多數的情況下,如果股票有強力的多頭攻勢,第一個會需要突破的關卡就是昨日的高點!! 當指數期貨價格能衝過昨日高點,就代表著多頭勢力有一定程度的信心要作出一番攻擊,透過這樣的關鍵價監控,除了有助於對盤勢的掌握,更能再期指中有較強的獲力信心程度!

空方發動攻擊時,第一個目標價就是昨日低點!許多看盤者或交易程式都會把這個價格當做是多方留守的防線,一但價格被擊破,不少多方停損單會出籠,走出一段下跌走勢的機會也大大提升!!

我們把多空合併後,腳本可以這樣寫 {資料讀取400 最大引用10,適用1MIN}

variable:Xhigh(0),XLow(100000);

if Date xHigh =maxlist(H,xHigh);
xLow = minlist(L,XLow);
end;

if V > TimeDiff(currenttime,time,"S")*25 then begin
if L < XLow then begin retmsg ="破昨低觸空"; ret=1; end;
if H < xHigh then begin retmsg ="過昨高觸多"; ret=1; end;
end;

快來試試吧!

尋找少康中興的股票

朋友抱怨我給他的腳本跑出來的股票有的會漲,有的不漲反跌,我請他舉例,他舉完後,我就知道,我這朋友犯了一個開始做程式交易時大家都會犯的錯~拿單一策略去套用在所有的商品上。

以我朋友抱怨的這個腳本為例,這個腳本是去尋找過去橫向盤整超過二十天以上的股票,然後在今天盤中股價突破二十天來高點且出現長紅棒的時候進場。

電腦要挑出這樣的股票,它必須符合幾個條件
1.過去二十天以來最高價跟最低價差距小於6%
2.今天到目前是長紅棒(現在股價超過開盤價2.5%
3.現在的股價突破過去二十天高點
4.成交量到目前為止超過一千張

除了上述條件之外,這樣的股票必須是大家會追的下手的。

什麼叫大家追的下手的呢?

那就是股票要可能有些題材的?

反過來說,就是當電腦跑出一些符合上述條件股票,而這些股票毫無讓大家追得下手的題材時,就必須濾掉。

那些是屬於這種股票呢?

前些日子我曾分享一張企業生命週期的圖給大家。

我提到當一家企業,因為時勢而起,但同業有比它更強大的對手,營運開始進入惡性循環,長期下來毫無起色,最後走上英雄末路。

這樣的公司,我用XQ選股中心,設了兩個條件來篩選

1.連續六年EPS小於0.5元
2.近六年EPS合計小於1元或資本支出小於近三年平均

這些股票連續六年EPS少於0.5元,代表不管景氣如何,它有自己的問題,在問題解決前,這種股票缺乏題材,就算整理後稍有突破,大家也沒有什麼追價的動力。

但反過來說,這樣的公司如果連續幾個月營收數字都明顯優於過往,那就是少康中興的股票了。
要挑這樣的公司,就是在前面三個條件之後,再加上兩個條件
1.連續三個月月營收年增率都大於5%
2.月營收創13個月新高

等待少康的過程是漫長且可能等不到的,這樣的公司,平常根本不要拿來使用策略雷達,但如果等到少康中興時,就要納入每天的觀察名單中了,因為,歷史告訴我們,少康中興的投資報酬率很高,如果只以年報酬率來算,甚至會高過大金剛。

Larry Williams 短線交易秘訣

r1

Larry Williams的著名著作”短線交易密訣”中提到一個非常重要的概念:當收盤上漲時,價格若處於強勢波動率收斂,當股價再創短其新高時,就是非常理想的進場點, 反之則為空點!
這樣的概念可能有點抽象,讓我們來情境試想:有一檔股票正在漲,昨天的波動率假設是2,今天又上漲了,而且今天收盤價和最低價的距離只有不到1,這表示往下去的力道已經收斂掉了,當這樣的情況出現,如果股價突然衝過這兩天的高點,那就是多方要出擊了,這是個一決勝點!! 當然,這時後最好是記下這天的低點,用來當作停損使用!
我們來看一下腳本:

vars: _MarketPosition(0);
Condition1 = Close > Close[1] and (Close-Low) <= 0.5*(High[1]-Low[1]);
Condition2 = Close < Close[1] and (High-Close) <= 0.5*(High[1]-Low[1]);
{整個策略非常單純,上面兩行僅判斷波動率,下面則是部位判斷與停損點的設定}
if _MarketPosition < 1 then begin if condition1[1] and C > maxlist(H[1],H[2]) 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);
_MarketPosition=1;
value1 =minlist(L[1],L[2]);
end;
if C cross over value2 and _MarketPosition=-1 then
begin
plot4(C*1.01 ,"回補");
_MarketPosition=0;
end;
end
else if _MarketPosition >-1 then
begin
if condition2[1] and C < minlist(L[1],L[2]) 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);
_MarketPosition=-1;
value2 = maxlist(H[1],H[2]) ;
end;
if C cross under value1 and _MarketPosition=1 then
begin
plot3(C*1.01 ,"出場");
_MarketPosition=0;
end;
end;

可以從圖裡面看得到這個點容易成為決勝點!!
改成警示的話腳本會變成下面,跑出來的結果各位可以參考對照是不是有這樣的現象!!

vars: _MarketPosition(0);
Condition1 = Close > Close[1] and (Close-Low) <= 0.5*(High[1]-Low[1]);
Condition2 = Close < Close[1] and (High-Close) <= 0.5*(High[1]-Low[1]);
if _MarketPosition < 1 then
begin
if condition1[1] and C > maxlist(H[1],H[2]) then
begin
ret=1;
value1 =minlist(L[1],L[2]);
end;
if C cross over value2 and _MarketPosition=-1 then
begin
_MarketPosition=0;
end;
end
else if _MarketPosition >-1 then
begin
if condition2[1] and C < minlist(L[1],L[2]) then
begin
_MarketPosition=-1;
value2 = maxlist(H[1],H[2]) ;
end;
if C cross under value1 and _MarketPosition=1 then
begin
_MarketPosition=0;
end;
end;

r2

先進指標Zero Lag HeikinAshi

zha
這個指標為Zero Lag Heikin-Ashi,為利用Heikin-Ashi Price計算之TEMA。Heikin-Ashi為2004年由Dan Valcu所提出的新理論,藉由對原本的「開高低收」做些調整,而期望能在各種指標的操作上有更好的表現。Heikin-Ashi有著反應比EMA快,同時又比TEMA平滑之特性。利用這些特性再搭配月均線,我們可以得到更好的反應市場趨勢。 在這樣的情況下,我們就能第一時間掌握反轉的關鍵點!!

我們看一下腳本:

 

input: Length(14);
variable: price(0), haO(0), haC(0), haMax(0), haMin(0), TEMA1(0), TEMA2(0), EMA(0), ZeroLagHA(0);

price = (close+open+high+low)/4;
haO = (haO[1]+price)/2;

haMax = maxlist(high, haO);
hamin = minlist(low, haO);

haC = (price+haO+haMax+haMin)/4;

EMA = xaverage(haC, Length);
TEMA1 = 3*EMA-3*xaverage(EMA, Length)+xaverage(xaverage(EMA, Length), Length);
EMA = xaverage(TEMA1, Length);
TEMA2 = 3*EMA-3*xaverage(EMA, Length)+xaverage(xaverage(EMA, Length), Length);

ZeroLagHA = 2*TEMA1-TEMA2;

plot1(ZeroLagHA, "Zero Lag HeikinAshi");
plot2(average(C,20),"Average");

Mass index

anne_0901_001
Mass Index,這是一個由Donald Dorsey所研發的指標,這指標使用高低範圍的波動性來判斷趨勢是否逆轉! 就這樣的定義來說,Mass Index是一個不包含方向性的波動率指標,而是利用特定波動率範圍的穿越與跌破來預測價格可能反轉的折點!!

這個Mass Index的公式是使用高低範圍的兩次加權平均來平滑高低範圍的變化,然後去累計一段時間的的範圍加權平均變化率,當我們取得這個值以後,還要在圖上標上兩段水平線,用來做為波動率擴張的上限與下限,這兩條線代表的意義有點像當股票緩漲後開始噴出,噴到一定”波動率”的時後,表示反轉風險上升,這是第一條線,而股價噴發後,股票盤整活性降低,波動率會下降,而降到一定程度下,看做是高檔盤整收殮,一則可能失去了動力而造成股價高檔盤整跌破,二則亦可休息完畢再次攻堅,這是第二條線!

當然這兩條線對於每檔股票可能值不儘相同,我們可以用常見的值先設定,再看股性調整!

腳本如下:

inputs: SLength( 9 ), SigmaLen( 25 ), vThreshold( 27 ),InverseThre( 26.5 ) ;
variables: MI1(0),MI2(0),MIR(0),MIV(0);

MI1 = XAverage( Range, SLength ) ;
MI2 = XAverage( MI1, SLength ) ;
if MI2 > 0 then MIR =MI1/MI2 else MIR=0;
if SigmaLen > CurrentBar then MIV += MIR else MIV = MIV + MIR -MIR[SigmaLen];

Plot1( MIV, "Mass Index" ) ;
Plot2( vThreshold, "擴張警戒" ) ;
Plot3( InverseThre, "盤整反轉" ) ;

anne_0901_002

主力法人成本價格的判斷

g1

在外資或是主要控盤者的操作方法裡,有個相當重要的下單法,叫做冰山單!
意思是,雖然你看到了小小一塊,其實隱藏了非常大的一個部位在裡面!
這要怎麼做到呢? 其實就是把單子拆的很散,讓一般人著實看不出來! 如果今天某大券商要買1000張台積電,使用了這個方法,在盤中每10秒都掛2張買進,不僅不容易被發現,如果間隔時間和單量都會小幅變動,那真的是很難猜得出來是不是有大戶在收,特別在這種大單很容易被狙擊的行情下,這種單真的是已經變成必備的工具!

那我們要怎麼知道大戶最終的行為呢?當然可以做的就是在盤後看一下交易所公佈的券商買賣報告書,統計一下特定券商是不是有特別的行為!
其實還有另外一個方法,比較容易被忽略,但是是非常實在,就是價格法! 不論是外資或是大戶,買股票的目的就是為了要賺錢,在這樣的假設下,就有空間可以運作!!

剛剛提到,當外資要買股票時,為了不讓人發現所使用的方法,最後總結出來的部位,還是會有一個成本價!! 如果單子的下法是非常分散在不特定時間,那最後得到的這個成本價,就會非常接近當日均價!!

XS裡提供了每日成交金額的資料,只要使用

var:DayAvgPrice(0);DayAvgPrice = GetField("成交金額")/v/1000;

就可以得到這個價格!!

而又每天的價格都上上下下,怎麼樣的才能看出大戶的動作方向的?
是的,如果是大戶,你可能不會在乎單一天的收盤價是不是比成本進價低了一點點,可是如果你買了一個星期,兩個星期,一個月,最後加起來的成本價,比收盤價還高,那就心情很鬱悶了!!

所以我們把收盤價和日均價的價差算出來,做個幾天的加總,這邊是20日,可視為月成本:

plot1(summation( c-DayAvgPrice,20),"月成本分界");

畫出圖來就一目了然了!!

典型反轉訊號

keyday rev

當指數或股價處在高檔時,跑得快是一個很重要的反射機制,跑得對則是一種藝術!
我們今天把市場上常用的底部V型反轉拉高,看看高檔倒V型反轉要怎麼做?!
如果要成為倒V, 那中間那天的高點勢必要高於左右兩邊,再來就是強度要夠的話,中間那天的高點,至少要比左右低點大上一定幅度,這邊就設定為5%
腳本可以這樣表達

condition1= H[1] > H[2] and H[1] > H and H[1] > L[2]*1.05 and H[1] > L*1.05;

//當這樣的情況發生的時候,我們把左右兩邊的最低價平均一下,當做是一個關鍵價
if condition1 then value1 = (L+L[2])/2;
//當股價跌破這個價格的時候,就是反轉的訊號! 這是標準型策略的作法!
{警示} if Close cross under value1 then ret=1;

這樣我們就完成一個型態辨識型的策略了!
如果要畫在圖上就可以改成:

{指標} plot1(Value1,"高檔反轉線");

這樣一來就可以在盤中即時知道哪些股票有面臨反轉向下的危機喔! 使用XS做即時型態辨試一點都不難!

突破投信成本線

對於一般投資人來說,當行情難以預料或是真的看不懂盤勢的時候,只要出掉部位,趁空偶爾看看盤瞭解一下,靜待適宜時機再來進場就好了!

可是對於法人來說,可就不是這樣了,尤其是投信!! 基本上投信可以看作是一個基金公司,這個公司呢,就是用募來的錢賺錢,績效好,才能越做越大! 如果績效不好,或是不夠好(大家都賺但是你賺的特別少)的情況下,那就麻煩了! 這樣不僅僅可能影響公司商譽,經理人的飯碗也是有可能不保的!

這時候身為一個基金經理人,就得使出渾身解數來創造績效了!

要賺到績效,第一件事就是…要會買股票! 沒錯,如果基金投信想從某檔股票上賺到錢,基本上在正常的情況下,這些動作是無所遁行的! 每個經理人操作方法可能不儘相同,不過重點都是一樣,買進以後快點拉抬,趁量還大,快出一出獲利了結!故事真是太完美了!

那我們這些小散戶怎麼從中獲利呢? 當然要從最簡單的方法下手,之前有提到過策略的標準作法: 找到一個關鍵價, 等市價突破這個價的時候,買進!! 就這樣,我們要先找到投信的短期進場成本價當關鍵價,盤中有突破就來通知一下,我們就可以很開心的搭順風車了!!

input: pastDays(3); setinputname(1,"計算天數");
input: _BuyRatio(10); setinputname(2,"買超佔比例(%)");

variable: SumAm(0),SumForce(0), SumTotalVolume(0),APrice(0),AVGP(0),Kprice(0),QDate(0);

APrice = GetField("成交金額")[1] / V[1]/1000;

SumAm = Summation(GetField("投信買賣超")[1]*APrice, pastDays);
SumForce = Summation(GetField("投信買賣超")[1], pastDays);

sumTotalVolume = Summation(Volume[1], pastDays);

if SumAm > 30000 and SumForce > SumTotalVolume * _BuyRatio/100 then
begin
Kprice =highest(avgprice,pastDays);
QDate=Date;
end;

if DateDiff(Date,QDate) < pastDays+5 and C > Kprice and C[1] < Kprice then ret=1;

凱特納通道

anne_0711_001

今天我們利用凱特納通道和成交量振盪來追蹤分析突破交易的趨勢穩定性!

這個指標分析稱為TMV(Trend.Momentum.Volatility&Volume),即趨勢動量,波動率與成交量的綜合指標。

一直以來,市場老手前輩在講解多頭盤勢的時候,都會提到一點:價格在上揚時,量要溫和放大,走勢才能持久,一但量失控,可能就意謂著行情的尾聲!

我們今天就來看一下怎麼樣把這樣的概念實現在可以具體表徵的K線圖上!

首先,我們做出凱特納通道,圖上三條線的地方就是這個通道,一般情況下,當價格超過這個通道的高點,就是多頭趨勢的發動,稱為通道突破,而這個通道的中線,即價格均線,做為出場點!

我們設計一個多方訊號標記在K線圖上,是綠色的向上三角形,然後將量的振蕩,用黃色長條框搭配著看。在前面的假設中,多方走勢就是有出現綠色三角的區間,而量的穩定放大,我們可以看做這個區間下的量振盪變小了!

加權指數中可以看到 在五月底到六月底的這段期間,量的振盪是有在往下收的趨勢,而在七月初的爆量,將振盪拉開相當大,這時後在看盤時就得時時注意是不是量有”回穩”的情況,如果能夠回穩,攻勢持續的機會也才能比較高!!

腳本如下: 請記得把plot3設到第2座標軸,而plot1,plot2設為點

var:Periods(13);
var:Price(0); Price = (C+H+l)/3;

var:Center(0);Center = average(Price,Periods);
var:KTop(0); Ktop = Center + average(H-L,Periods);
var:KBot(0); KBot = Center - average(H-L,Periods);

variable: Length(10),pdi(0), ndi(0), adx_value(0);
DirectionMovement(Length, pdi, ndi, adx_value);

if adx_value > adx_value[1] and C > average(C,8) then plot1(C,"ADX Rising");
if adx_value > adx_value[1] and C < average(C,8) then plot2(C,"ADX Falling");

var:VolumeOsc(0);
VolumeOsc = (average(v,1)-average(V,20))/average(V,20);

plot3(VolumeOsc,"VolumeOsc");
plot4(Center,"Center");
plot5(KTop,"KTop");
plot6(KBot,"KBot");

尋找具有領先預測性的交易策略

我們總是想在個股行情發動前,就先上車,但大部份的技術指標都總是在價量齊揚之後,才會出現買進訊號。

但有的時候,可能受限於大盤的下跌,雖然股價沒有太大的上揚,成交量也沒有明顯的回升,但如果成交量佔大盤比種持續變大,股價穩定的比大盤強,往往等到大盤一回穩,股價就開始有明顯的回升。

XS裡有兩個欄位,一個叫資金流向,一個叫強弱指標,前者是成交值跟大盤成交值的比值,後者則是個股漲跌幅與大盤漲跌幅的相對闗係,我們可以透過這個兩個欄位,找到盤不好但個股表現相對穩定且資金在流入的股票。

我們常說要找價量齊揚的股票,但如果考慮到相對的概念,我們要找的其實是成交量佔大盤的比重在增加,而且股價跟大盤對應的強度在增強。

運用這樣的概念,我寫了一個指標,這指標在計算十天之內有多少天成交值佔大盤比重在增加且比大盤強,然後取五日平均
我發現當這數字從一以下向上而股價還在橫向整理時,後市出現長紅的機率頗高(如附圖一)
這個指標的腳本如下:

input:sp(10);
setinputname(1,"短計算區間");
value1=GetField("資金流向");
value2=GetField("強弱指標");
var:count1(0) ;
count1=countif(value2>0and value1>value1[1],sp);
value3=average(count1,5);
plot1(value3,"短期價量齊揚天數");

這樣的概念,代表個股的強度跟佔大盤成交值都在轉強,但股價受大盤壓抑,一旦大盤好轉,股價表現就可能很亮眼。

這樣的概念,我們可以改寫成策略雷達的腳本

input:sp(10);
setinputname(1,"短計算區間");
value1=GetField("資金流向");
value2=GetField("強弱指標");
var:count1(0) ;
count1=countif(value2>0and value1>value1[1],sp);
value3=average(count1/SP*100,5);
if (highest(close,5)-lowest(close,5))<close*1.07
and value3 cross over 35
then ret=1;

運用這個策略,記得兩件事
1.選大盤不是很好的時候
2.別挑太沒有量的股票,不然資金流向稍為增加一點成交量就會暴增

我自己使用上發現,這個策略出現的股票不是天天都有,但後市有行情的機率比起其他策略,還頗不錯。

xqlite banner