顯示具有 XS語法 標籤的文章。 顯示所有文章
顯示具有 XS語法 標籤的文章。 顯示所有文章

2013年8月27日 星期二

籌碼分類

控盤者-單一券商分公司、單一價格之成交金額100萬以上的張數歸為控盤者。
 實戶-單一券商分公司、單一價格之成交金額50萬~100萬的張數歸為實戶。
 散戶-單一券商分公司、單一價格之成交金額50萬以下的張數歸為散戶。

五天內有兩天以上法人買進張數超過四成

input:ratio1(40);
input:days(5);
input:times(2);
setinputname(1,"法人買進張數比例");
setinputname(2,"近n日");
setinputname(3,"達標天數");
value1=GetField("外資買張");

value3=GetField("投信買張");

value5=value1+value3;

value7=value5/volume*100;

var:xi(1);
var:count(0);
for xi=0 to days-1
begin
if value7[xi]>ratio1[xi]
then count=count+1;
 end;
 if count>=times
 then ret=1;

2013年8月20日 星期二

法人買進比例

法人買進比例

腳本如下:

value1=GetField("外資買張");

value3=GetField("投信買張");

value5=value1+value3;

value7=value5/volume*100;

plot1(value7,"法人買進比例");



2013年8月18日 星期日

無量變有量


我喜歡挑那些千年沒人注意,才剛開始要冒出頭的股票

為了尋找這類股票,我寫了以下的腳本來找它

if average(volume,10)<1000
and volume>2000
then ret=1;

這腳本的意思就是讓電腦幫我尋找十日移動平均量小於一千張,而今天成交量超過兩千張的股票

找到這類的股票之後,我會先作以下的過濾
1.今天報紙有利多消息乎?
2.公司過去會不會騙人乎?
3.進出的號子是否為一日行情騙線的帽客乎?

如果這三者皆為NO

那我就會開始Study這檔股票的基本面
尋找支撐它從沒有量變成有量的理由

如果我找到了

它就會變成我的觀察名單

觀察名單也者,機會不錯就進場之謂也

2013年7月25日 星期四

尋找買進訊號,我們從成交量開始




要找買進訊號,最直白的方法,就是找低檔放量的,股票要大漲,有的是大股東及主力先進去吸籌碼,有的是眾法人同時進去搶,不管是那一種,成交量總會比以前放大,特別是那種一直以來,十日均量都不到1000張的股票,就像是灰姑娘,默默在掃地,一直要到成交量明顯放大,那就是要參加舞會了。

我看過不少飆股一開始起漲時的圖,我發現在量價上,大致有以下的幾個特徵
1.量原本小的可憐,根本乏人問津
2.近兩日量溫和放大,一般都是從幾百張變成一千多張
3.用溫和放大的量就可以推高股價,表示這邊的賣壓很輕
4.價量會一路持續溫和放大,而不是像放煙火一樣,一天就沒了
前一陣子很紅的陽程及前幾天很會漲的南僑,起漲前都有類似的特徵(見附圖)


於是我把這樣的條件,寫成以下的語法,請參考 ,對語法有任何疑惑的朋友,你有問我就答,我不會的我會去問來回答你。
//適用於日線
input: length1(10);setinputname(1,"均量期數");
input: Length2(5); setinputname(2,"價格長度");
var:av(0);
av=average(volume,length1);
if av[1]< 1000 and close > highest(high[1] ,Length2) and 
volume > highest(volume[1],length1) and volume>=av[1]*2

then ret=1;

if condition1 and condition2 and condition3
then ret=1;



Dm的原理與應用




昨天我們介紹了真實波動區間(TR),今天我們來介紹一下運用這個概念,配合+DM,-DM兩個數據,所發展出來的技術指標:DMI,以及怎麼同時運用這個兩個指標來尋找買進訊號

我們昨天介紹了真實波動區間(truerange,簡稱TR)的計算方式,這代表的意義應該就是在這個時間內,多空爭戰的總戰場,那打完仗之後,到底是多方贏? 還是空方贏? 是大贏? 還是小贏呢?

術分析大師用+DM與-DM來作為計算的標準

其算法如下:(+DM=pdm, -DM=ndm)
pdm= maxlist(High - High[1], 0);
ndm = maxlist(Low[1] - Low, 0);
if pdm < ndm then
pdm = 0
else 
begin
if pdm > ndm then
ndm = 0
else
begin
pdm = 0;
ndm = 0;
end;
end;
先算出今天多頭有多攻佔過多少土地: high-high[1] 今天高點比昨天高點多出來的部份就是多頭今天的成績單,如果今天的高點沒有突破昨天的高點,那今天多頭的成績單就是考零分
相反的,low-low[1]就是空頭今天的成績單
如果今天多空都沒有佔領新的領土過,那兩邊的成績都是零
(如果要看圖解,可以從這個網址點DMI進去看:http://www.moneydj.com/z/analyst/analyst_home.htm)
接下來,開始計算+DI,-DI及ADX
先取移動平均,公式上亦有人在前一日的平滑上是乘上(length-1)/length,這邊XS的內建公式中,前一天的值是直接乘以1,其實兩者相差不大
padm = padm[1] + (pdm - padm[1]) / length;
nadm = nadm[1] + (ndm - nadm[1]) / length;
atr = atr[1] + (tr - atr[1]) / length;

+DI= 100 * padm / atr; 
-DI = 100 * nadm / atr;
這樣的計算方式是在計算多方及空方有沒有愈來愈加速的攻城略地

if dValue0 + dValue1 <> 0 then
dx = AbsValue(100 * (+DI – (-DI) / (+DI +(-DI));
ADX = radx[1] + (dx - radx[1]) / length;
而ADX則是不管是多方或空方獲勝,就是單純的陳述有沒有一方的勢力在持續的攻城略地。

我們在未來還會介紹更多計算一檔股票多空勢力消張的指標,但從+DI及-DI的計算過程中我們可以發現,其實長期觀察一檔股票多方及空方在戰場上的成績,是一個很好的觀察角度,而TR的引入,其目的就是用來表達整個戰場的大小。

當我們把這些數據拿來一起看,然後我們發現戰場愈來愈大,表示新勢力進場,同時是多方勢力不停攻城略地時,我們就可以比較有把握這是一個可信度高的進場信號,因為如果只是+DI回升,但TR數據沒有明顯向上時,代表的,可能只是舊勢力受大盤影響的隨勢拉扯而已,並不足以形成有效的買進訊號

之所以這麼不厭其繁的跟大家交代這些指標的算法,主要是當大家知道指標的計算方式之後,就可以理解一個買進訊號的形成原因及背後的意義,這樣大家才知道這樣的訊號較可能適用在什麼樣的商品及什麼樣的時候,其實有些技術指標如果大家知道其原理,就不會把它拿來作為期指五分鐘線的交易指標,因為開盤及收盤的台期指,其參與者及交易的原因跟本就跟盤中的多空勢力不一樣,有些指標較適用於大型股及指數,反之有些其實拿來找中小型股比較有意義,當大家理解這些指標的計算方式及背後的邏輯,運用就可以存乎一心,不會人云亦云了。

我們至今介紹了TR, +DM, -DM,這三個數據都代表了一根BAR中,多空交戰的一些痕跡,接下來,我們會介紹更多可以拿來衡量一個商品多空氣勢的小計算,然後當大家理解了這些小計算之後,就可以自己實事求是的發展自己的交易系統,也不見得要follow前人留下來,一般人常用的技術指標了。



RSI



過去幾天,我們都在細部分解多空交戰的戰場,並且透過開高低收四個點的計算,檢衡量多空交戰的痕跡,但有些學派根本就覺得收盤價就是最後多空勢力的均衡點,痕跡不重要,最後均衡點才重要,因此開高低這三個點不該拿來計算,拿來計算反而會誤導,應該只看收盤價,於是,我們今天就來介紹根據這樣子邏輯來運算的兩個工具,這兩個工具是最被經常拿來檢測個股強度的工具。
一個叫相對強度相對強度(Relative Strength,RS),一個就是大家最耳熟能詳的RSI
計算公式如下:
RS=AUn / ADn
AUn是n日內收盤價上漲點數的n日平均數=Σ(上漲點數_i) / n
ADn是n日內收盤價下跌點數的n日平均數=Σ(下跌點數_i) / n
RS的意是就是過去幾天裡,上漲點數的總合與下跌點數總合的比例

例如過去五天上漲有三天,合計漲了75點,下跌有兩天,合計跌了25點,那RS就是 75/25=3 
第二個是RSI
其公式是 RSI=100*AUn / (AUn+ADn)
RSI的意思是在過去N期裡,上漲的BAR,其上漲的點數合計,佔所有漲跌點數合計的比例
如果我們要計算十天的RSI,結果這十天都上漲,那十天的RSI就是100

在xsscript上,RSI的公式如下:

input: price(numericseries), length(numericsimple); 
variable: sumUp(0), sumDown(0), up(0), down(0);
if CurrentBar = 1 then
begin
sumUp = Average(maxlist(price - price[1], 0), length); 
sumDown = Average(maxlist(price[1] - price, 0), length); 
end
else
begin
up = maxlist(price - price[1], 0);
down = maxlist(price[1] - price, 0);

sumUp = sumUp[1] + (up - sumUp[1]) / length;
sumDown = sumDown[1] + (down - sumDown[1]) / length;
end;

對於這個耳熟能詳的指標,我們最常的有四個用法
1. 高檔跌破80時賣出
2. 低檔突破20時買進
3. 高檔背離時賣出
4. 低檔背離時買進
在實戰上,我們會發現,低檔背離的機會不大,因為股票的末跌段
,經常加速趕底,加速趕底時很難出現低檔背離。低檔突破20時的買進訊號可信度也不高,因為只要一個跌深後的大反彈,就會造成這樣的訊號。

但是把這樣的指標拿來當作高檔賣出的訊號時,就有它的參考價值了,因為這個指標的數據愈大,代表的是一定期間裡,上漲的天數跟幅度愈大,會在高檔反轉,代表先前漲的急又多,現在不如以往了,會背離代表雖然股價還是上漲,但上漲的天數跟漲幅跟以前不能比。
不管是那一種,對於有持股的人,都是一種警訊。

這樣以收盤價為唯一計算基準的作法,會不會比先前介紹過的那些以開高低收為計算標準的指標好用呢? 那一種比較有道理? 
我想從計算公式中大家可以發現,對那種兩邊都軍容壯盛的大型股,那些多空爭戰的痕跡比較有參考價值,小型股的open,high,low比較容易被扭曲,所以小型股用RSI可能比較不會被誤導,但小型股容易被急拉急殺,所以比較長天期的RSI可能會比較合適。

連續多日開高的應用指標

RSI的概念就是在一定天期內上漲幅度的總合,佔總波動幅度總合的比例,今天我們拿這樣的概念來做一個應用。

如果我們相信,每天的開盤價跟昨日收盤價的距離,代表的是多空雙方經過一夜沈澱後,重新出現的實力展現,那麼如果我們把OPEN-CLOSE[1]當作一個數字,然後取這個數字的RSI,我們就可以得到一個衡量開盤氣勢的指標(見附圖)

這個指標的意義在於充份展現且僅僅展現一定天期內開盤時的多空氣勢,我們知道大部份的股票開盤時常會受到前一日歐美股市及今日日韓開盤的影響,也會受到昨日法人買賣超及融資券的影響,也可能受到報紙消息的影響,因此,我們在應用這個指標時,基本上只應用在法人不愛,以往沒量,與大盤連動性不高的小型股,當這類股票出現多日開盤表現不錯,導致用OPEN-CLOSE[1]來計算的RSI出現自低檔翻揚且突破五十時,就值得我們留意了。

為啥要留意open-close[1]呢? 因為市場其實有不少人,白天有正職的工作,就算聽到消息,只能填個訂價單,或是開盤買一買,然後趕快去工作。電子股的從業人員每天接觸上下游及同業,消息流來流去,很多人都只能開盤去買,特別是那些平常沒什麼量的股票,所謂的春江水暖鴨先知,就會表現在每天開盤時的量價表現上。

在應用上,我自身的經驗中有幾點提出來大家加減參考
1. 要跟量搭起來看,連著幾天可以開小紅且有點量的小型股,特別是盤不怎麼樣時還能出現這種走勢的,很可能就是有人知道了一些我們不知道的
2. 避開線型前一天剛好有買進訊號的股票。我以往常拿這指標挑一些小型股,結果發現有些根本只是技術指標剛好出現買進訊號,有些線仙們跳了進去,結果就是線仙們跟我都被套牢。
3. 有些主力會作開盤價,所以前一天拉尾盤的,主力有在搞和的,就別被騙了。

4. 用這指標挑到真能漲的股票,大部份先前都冷到靠北邊,所謂反常必有妖,只有這種八風吹不動的股票開始有人燒香,才是我們真該注意的。
這個指標我從來沒有單獨用,也只用在冷門股,但它幫我挑到過不少開始有點味道的冷門股,介紹給大家,計算很簡單,因為我腦袋就這麼丁點大,我這個大學聯考數學考28分的都會算,相信大家應該也ok。




當KD踫到移動平均線

我認識一些老市場,在股市二十多年屹立不搖,共同的特點是很用功,每天下午到晚上,一檔一檔的看線型。

其中有一位,是我很尊敬的長者,他每天的功課,就是尋找KD黃金交叉且均線也黃金交叉的股票,他從股票只有三百多檔時看到現在股票一千四百檔,挑的股票,還是維持這樣的原則,今天我就試著用XS Script的語法,跟大家介紹一下這一簡單操作策略背後的意義。
KD值應該是史上最多人用,但最常突槌的技術指標,為何連著均線一起看就會不一樣?

首先我們先看KD到底是怎麼算出來的
1. 找出區間最高價 maxHigh = Highest(high, length)
2. 找出區間最低價 minLow = Lowest(low, length)
3. 算出RSV (Raw Stochastic Value)
if maxHigh <> minLow then
rsv = 100 * (close - minLow) / (maxHigh - minLow)
else
rsv = 50
以區間最高價到最低價當分母,以收盤價到最低價當分子,兩數相除,代表的是收盤價在區間高低點的位置
4. 算K值及D值
if currentbar = 1 then
begin
k = 50;
d = 50;
end
else
begin
k = (k[1] * (rsvt - 1) + rsv) / rsvt;
d = (d[1] * (kt - 1) + k) / kt;
end; 
在這邊RSVT及KT都是參數,把K值的公式拆開來如下
K=K[1]*(rsvt-1)/RSVT+RSV/RSVT
說穿了K值就是前一天的K值跟今天的RSV的加權平均 ,而RSVT就是權值的參數,例如 RSVT=3 那K值就=K[1]*2/3 + RSV*1/3

至於D值則是把K值再拿來作一次加權平均
從這樣的計算公式中我們可以了解到,K值和D值都是建立在RSV值的基礎上,也就是建立在收盤價到底位於區間高低點中那個位置的計算基礎上
至於透過加權平均及用D值來再一次加權平均K值,其差別都只是在近幾日的RSV的權重加多重而己,透過K值與D值的黃金與死亡交叉,其實說穿了就是透過不同權重的同樣概念,來確認目前收盤價在區間中的地位是不是愈來愈高,還是愈來愈低。

了解這樣的特性之後,各位就可以了解,KD在應用上,如果是在穩定的趨勢上時,KD指標會很準,相反的,如果在一天大漲,一天大跌時,或是連續多日小幅漲跌的整理盤勢時,KD是無用武之地的。
那怎麼確認股價是在一個形成的趨勢上呢?最簡單的方法就是看股價是否突破一個比較中長天期的移動平均線
這也是市場老手說KD要搭季線來一起看的道理了。

xs script平台的好處,就是當你有一些交易的想法,當你夠了解每個指標的意義及罩門,你可以透過聯集及交集,把不同的指標拿來一起作為進場的條件,也可以自創一個兼具不同意義的新指標,但這些的前提都是,我們得先搞清楚每個指標的計算方式及背後的意義。





MTM動能指標

這幾日,在這裡寫的內容,總是開高低收,又加又減又乘又除,大家有點暈了吧,今天跟大家介紹一個很阿殺利的指標,就是江湖人稱動量指標的MTM
MTM的算法很爽快,就是今天收盤價減n日前的收盤價,一行搞定。
我們用xs語法來把MTM寫成一個函數
input: price(numericseries), length(numericsimple);
Momentum = price - price[length];

這個很簡單的算術算出來的指標,它代表的意義是什麼呢?
如果股價每天都漲1塊錢,MTM會是怎麼呈現? 答案是在0以上走平,每天都跌一元呢? MTM會在0以下,也走平,不漲不跌呢?每天價格都一樣, MTM當然會等於0
所以我們可以把MTM的不同形態整理成一個表格如下:
MTM走勢 意義
在0附近走平 股價不漲不跌

在0以上走平 股價每天漲,價差一樣,或是上漲的速度跟n日前一樣
在0以下走平 股價每天跌,價差一樣,或是下跌的速度跟n日前一樣
在0以上呈上升趨勢 股價以比原先更陡的方式上漲,或是股價止跌回升
在0以下呈下降趨勢 股價以比原先更快的速度下跌,或是股價作頭下跌
在0以上呈下降趨勢 跟n日前比起來漲速變緩
在0以下呈上升趨勢 跟n日前比起來跌速變緩

從這個表格,我們就可以看出,我們要挑的股票MTM必須具備三種情況
1. 先前在0以下呈下降趨勢
2. 最近在0以下呈上升趨勢
3. 現在突破0


也就是股價必須經過加速趕底,打底,回升這三階段。

過去一陣子我們介紹了很多衡量多空態勢的方法,MTM則是衡量趨勢的力道有多強,所以現在我們有了衡量多空態勢的工具,有了衡量趨勢的工具,也有了衡量趨勢力道的工具,接下來我們會開始試著把這些工具結合一起來應用,尋找聖杯的道路,接下來會更有趣。

剛好在這時候,內含XS Script策略雷達的XQ5.0從今天起正式上線,手上有XQ軟體的朋友可以直接升級,想要多了解一點的朋友可以直接從http://new.xq.com.tw/這個XQ專屬網站的策略雷達來了解

盤中可以找出那檔股票有大單在敲進的腳本

盤中可以找出那檔股票有大單在敲進的腳本
幾天前跑去朋友的看盤室泡茶聊天,朋友眼睛還是一直盯著電視牆左右上下不停的看,於是我們有了以下的對話。
我:你在忙著找什麼?
友:在找外盤不斷有大單敲進的股票。
我:多大的金額叫大單?
友:單筆成交金額超過500萬
我:每檔股價差那麼多,電視牆揭露的是張數,你怎麼知道有沒有超過500萬?
友:我自己會換算,這看久了就很直覺(得意)
我:可是現在股票有1400檔,你的電視牆裝不下這麼多檔,會不會有漏網之魚?
友:會啊,我只放那些有量的股票,沒量的都沒放
我:可是不是小型股比較會飆嗎?
友:沒辦法啊。

家後,想了一下,寫了一個腳本,請我們公司的高手改了一下,腳本如下:

input: BigBuy(500); setinputname(1,"大戶買單(萬)");
input: BigBuyTimes(10); setinputname(2,"大戶買進次數");
input:TXT("須逐筆洗價"); setinputname(3,"使用限制:");

variable: intrabarpersist Xtime(0);//計數器
variable: intrabarpersist Volumestamp(0);

Volumestamp =q_DailyVolume;

if Date <> currentdate or Volumestamp = Volumestamp[1] then Xtime =0; //開盤那根要歸0次數

if q_tickvolume*q_Last > BigBuy*10 and q_BidAskFlag=1 then Xtime+=1; //量夠大就加1次

if Xtime > BigBuyTimes then ret=1;

透過這個腳本每天盤中用逐筆洗價模式,我們就可以找出單筆外盤成交超過五百萬的次數超過十次的股票,這邊的五百萬及十次,都設成參數,各位可以自行調整。

有了這腳本,我準備來去叫我朋友拆電視牆。

最強的股票是那些屢創新高但很少漲停者

最強的股票是那些屢創新高但很少漲停者

上面這句話是我在網路上看來的,人家說實踐是檢驗真理的唯一道路,所以我請了公司的高手幫我寫了一個函數如下:
input: length(numeric);
variable: la(length-1); //日數與參數調整
variable: QHigh(high[la]); //含當根k 第一筆資料起算
variable: outputdays(0);  outputdays=0; //每根k要歸0
variable: ix(0); //迴圈用數
for ix = 1 to la begin 
if ( high[la-ix] > QHigh ) then
begin
outputdays+=1;  
 QHigh = high[la-ix];
end;
end;

Highdays=outputdays;


然後我用這個函數,寫了一個很簡單的腳本如下:
input:days(10);
input:rate(7);
input:count(2);
SetInputName(1, "計算的天數");
SetInputName(2, "漲幅上限");
SetInputName(3, "創新高天數");
value1=highdays(days);
if value1>=count
and value1<=value1[days-1]*(1+rate/100)
then ret=1;

出來。

我拿這個腳本去跑所有的股票,結果一檔都跑不出,所以我就改成近十天有一天創新高且十天內漲幅合計不到一成,結果跑出了六檔股票,其中只有兩檔沒有漲停,一檔是3665,另一檔是5474
,這會是個值得每天跑一次的策略嗎? 就讓時間去檢驗看看囉。

2013年7月24日 星期三

昨日不到500張,今天成交量超過1000張

今天心血來潮,寫了一個只有四行的腳本如下:
input:v1(500); setinputname(1,"前一根bar成交量");
input:v2(1000); setinputname(2,"這根bar成交量");
if volume[1]<=v1 and volume>v2 and close=high
then ret=1;
這腳本用在日線,用來尋找昨天成交量不到五百張,今天已經超過1000張,而且現在處於當日最高價的股票

股票箱之大型股應用



這幾天被同事吐槽,我專攻小型股,寫的腳本對績優股沒啥用,回家閉門思過了一陣子,寫了以下這個腳本:
input:length(12);設定股票箱的區間
value1=NthHighest(1,high,length);區間最高點
value3=nthhighest(3,high,length);區間第三高點
value4=Nthlowest(1,low,length);區間最低點
value5=nthlowest(3,low,length);區間第三低點

if
value1[1]<=1.03*value3[1]最高點跟第三高點相差不到3%
and value5[1]<=value4[1]*1.03最低點跟第三低點相差不到3%
and value1[1]<=value4[1]*1.1最高點與最低點相差不到10%
and close>value1[1]最新價格突破至前一根bar的波段高點
then ret=1;

這個腳本有點股票箱突破的味道(見附圖),如果再加上量也創新高就更可信。


這腳本絕對適用於藍籌股,因為這些大型股成交量大,非單一勢力所能左右,當股價呈現箱型走勢時,代表多空雙方只是跟著大盤隨波逐流,但如果這樣的股票箱被突破或跌破,代表的是多空勢力結構的改變,這樣的改變,很可能是伴隨在基本面消息之後,可能是伴隨在法人進出場意願改變之後。

這個腳本用了兩個函數
nthhighest(n,price,length):在一定區間中price第n個最高價
nthlowest(n,price,length):在一定區間中price第n個最低價

例如
value1=nthhighest(2,close,30)
代表過去三十根bar中收盤第二高價

我同意每個腳本都有各自適用的商品,這個股票箱腳本,對大型股頗有用,介紹給大家。

XS函數教學之一:trueall

XS函數教學之一:trueall

XS上線後,開始有朋友試著把自己看盤的邏輯寫成腳本,有朋友問我說,如果要寫連賣十天收最低要怎麼寫啊? 一天天寫很煩吔!
這邊介紹一個函數叫作trueall,可以用來表示近n期都得符合某個條件。以附件的例子來說,這是九連陽的腳本,若在trueall後方括號的陳述式連九期為true,這個函數值才是true

所以連續十天收最低可以寫成

if barfreq<>"D" then return;
if trueall(close=low,10) then ret=1;