Author Archives: 發財橘子

KO克林格成交量擺動指標

2015052801

克林格成交量擺動指標Klinger Oscillator, KO是一個與成交量又關的股票技術指標,它是由Stephen J. Klinger所發明的。以下介紹一下這個技術指標的計算方法和它在股票交易中的使用方法。
克林格成交量擺動指標Klinger Oscillator的計算方法 :
首先,計算股票在每個交易日的平均價格=(收盤價+最高價+最低價)/3
如果,平均交易價格高於前一日的平均交易價格,那麼當日的股票成交量為正值;平均交易價格低於前一日的平均交易價格,那麼當日的股票成交量為負值。
然後,計算34天和55天(正負處理後的)成交量的指數移動平均值;這兩者的差值就是克林格成交量擺動指標Klinger Oscillator。 為了更好的觀察這個指標的趨勢,還可以計算這個技術指標的13天指數移動平均值。

value1=(close+high+low)/3;
variable:v1(0);
if value1>=value1[1]
then v1=volume
else v1=volume*(-1);

value2=average(v1,34);
value3=average(v1,55);
value4=value2-value3;
value6=average(value4,3);
value5=average(value4,13);
plot1(value6);
plot2(value5);

這個技術指標的目的是為了觀察短期和長期股票資金的流入和流出的情況。它的主要用途是確認股票價格趨勢的方向和強度。 如果用它來判斷股價趨勢方向,就要看這個指標的擺動範圍所處的相對位置。如果股價是上升趨勢,它的擺動範圍靠上(大於0的方向); 如果是下降趨勢,它的擺動範圍靠下(小於0的方向)。如果用它來判斷股價趨勢的強弱就要看這個指標與股票價格之間有沒有背離現象出現。 股票價格下跌,KO指標出現多頭背離,那麼交易方向為買入;股票價格上漲,KO指標出現空頭背離,那麼就要伺機做空股票。

%B指標

%B這個指標,是從佈林值演化過來的,我們要了解%B指標前,先來溫習一下佈林通道(BBand)

Input: price(numericseries), length(numericsimple), _band(numericsimple);

BollingerBand = Average(price, length) + _band * StandardDev(price, length, 1);

從上述的程式,我們了解,布林值的上下兩條線就是移動平均線各加減N個標準差。 而%B則是在(收盤價 – 布林帶下軌值) ÷ (布林帶上軌值 – 布林帶下軌值)
從這個公式來看,當收盤價愈貼近布林值下軌道線,且上下兩條線差距很大時,%B的值愈趨近於零,如果收盤價都穿過布林值上軌道線了,%B的值就會大於一。

所以如果%B從0.5以下,突破自己的五日平均線,是翻多的訊號,相反的,如果在1以上,則短線有過熱的徵候。

以下就是%B的腳本

input: Length(20);	SetInputName(1, "布林通道天數");
input: BandRange(2);SetInputName(2, "上下寬度");
input: MALength(10);SetInputName(3, "MA天期");

variable: up(0), down(0), mid(0);

up = bollingerband(Close, Length, BandRange);
down = bollingerband(Close, Length, -1 * BandRange);

if up - down = 0 then value1 = 0 else value1 = (close - down) * 100 / (up - down);
value2 = average(value1, MALength);

Plot1(value1, "%b");
Plot2(value2, "%b平均");

20150528

DKX多空線

dkx多空線

DKX多空線的設計是希望可以儘快的找到市場的真正多空趨向
它用了兩個方法
1.用中價來代替收盤價作為計算的基準
中價的算法是用(收盤價*3+開盤價+最高價+最低價)/6
這樣的作法是又有考慮到其他三個價位的代表性,又特別強調收盤價才是一天多空的均衡點

2.它在計算多空線時,拿過去二十日的中價作平均,但愈接近現在的那根BAR權值愈重。
所以他算出來的這個多空線的位置,是經過二十個中價作加權平均出來的。

至於它的應用很容易
1.收盤指數突破多空線即翻多。
2.收盤指數跌破多空線即翻空。

以下是DKX多空線的腳本

variable:MID(0),midsum(0),DKX(0),DKXMA(0);

input:length(10);
MID=(close*3+open+high+low)/6;
variable:r1(0);
midsum=0;

for r1=0 to 19 begin
midsum=(20-r1)*mid[r1]+midsum;
end;

DKX=midsum/210;
dkxma=average(dkx,length);

plot1(close,"收盤價");
plot2(dkxma,"dkx的移動平均線");

KST確認指標

KST確認指標是把短中長期的變動率ROC給與不同權重,用來判斷趨勢,精准掌握轉折買賣點。
腳本如下:

variable:kst(0);

value1=average(rateofchange(close,12),10);
value2=average(rateofchange(close,20),10);
value3=average(rateofchange(close,30),8);
value4=average(rateofchange(close,40),15);

kst=value1+value2*2+value3*3+value4*4;

plot1(kst,"KST確認指標");

 

KST確認指標

從附圖可以看得出來,確認指標在接近50處反轉是大盤由多翻空的訊號,從-50回升則是由空翻多的多頭反攻號角。

ALF亞歷山大過濾指標

2016052702

這指標很簡單算,但卻出乎意料之外的好用
它的算法就是拿今天的收盤價去除以十天前的收盤價
大於一就代表這十天作多的都賺錢,小於一就代表這十天作多的都被套牢。

input: length(10); setinputname(1, "天期");

Value1 = close / close[length-1];
plot1(Value1, "亞歷山大過濾指標");

各位可以參考附圖
2016052703
然後我們就會發現,指數橫盤後如果這指標從一以下突破一,往往是大盤作多的訊號,反之是賣出訊號。
我試過很多的指標,這個指標我覺得有參考意義,所以我就把它加到我的大盤check list
類似這樣的指標,我把它放到check list的,還有
1.%B
2.DKX多空線
3.成交量擺動指標
4.KST確認指標
5.Q指標
6.威廉變異離散量
7.ZDZB築底指標
8.多空分數
9.Vortex indicator
10.Coppock indicator

尋找大盤短期多空方向的指標

2016052701
我看盤看了 25年,兩個最大的心得是
1.大家很習慣樂觀時更樂觀,悲觀時更悲觀,追漲又殺跌。
2.大家很愛比價,有人帶頭拉,同類的就有人追,有人帶頭殺,同類的就很難撐得住。
基於這兩個原理,我用XS寫了一個很簡單的指標,透過漲跌家數及漲跌停家數的變化,來尋找大盤的多空轉折點
我的腳本如下:

input:period1(5),period2(15);
value1=GetField("上漲家數");
value2=GetField("下跌家數");
value3=GetField("漲停家數");
value4=GetField("跌停家數");
value5=value1+value3*2-(value2+value4*2);
//(上漲家數+漲停家數*2)-(下跌家數+下跌家數*2)
value6=average(value5,period1);//短天期平均
value7=average(value5,period2);//長天期平均
plot1(value6,"短天期");
plot2(value7,"長天期");

因為漲跌停板的影響力特別大,所以我另外再多算兩倍
算出來的數字取移動平均後,我設了一個自訂指標,畫出來的圖就像附圖
各位可以看得出來
1.每次短天期平均從低檔回昇時,都是大盤止跌回升的起點,
2.短天期突破長天期時,短線會有高點
3.短天期自高檔拉回時,指數也作短期頭部
4.短天期跌破長天期時,短線仍有低點
這樣的指標,對於期指短線的多空方向,有一定的參考作用,以這兩天來看,短天期快突破長天期,如果今天能收小紅小黑以上,那短線應有反彈的機會。
至於短期及長期的參數要用幾天? 漲跌停要用幾倍去算? 各位可以自行調整到您覺得最優的參數。

尋找那些先前大漲過,最近在休息的股票

來尋找那些先前大漲過,最近在休息的股票
正所謂春江水暖鴨先知,一檔股票如果兩天可以漲一成,代表有人真金白銀地押在這檔股票上,而且還願意追高,這種情況往往是有人知道了公司不為人知的利多,率先佈局。
但代誌不見得像這些有消息的人想的那麼簡單,有時候盤不好,或者短線獲利及解套的賣壓湧現,造成股價上去又下來,春鴨反而被套牢。
但如果春鴨掌握的消息是正確的,後來隨著消息面的更廣為人知,就會有更多的買盤進場,如果這個利多很大,股價也可能走一大趟多頭行情。
為了挑出這樣的股票,小弟寫了以下這個選股的腳本:

condition1=false;
settotalbar(100);
if countif(close>close[2]*1.1,20)=1
then condition1=true;//過去二十天內有一次兩天漲超過10%
if close*1.05<highest(close,20)//現在股價比20天來的低點低至少5%
and trueall(close<=close[1],2)//這兩天股價都持平或收黑
and highest(close,20)=highest(close,60)//近二十天來的高點跟近六十天來的高點一樣高,代表不是一路下跌的走勢,上次的急拉不是跌深反彈
and condition1
then ret=1;

我把這個選股腳本拿去挑股票,然後再把挑到的股票用策略雷達裡的火箭拉回,階梯式向上等即時盤中腳本來洗價
如果洗出來就代表這檔先前有急拉過的股票,在休息後又蓄勢待發,這種股票我就會列入觀察名單
附圖是一個很典型的例子。
先前大漲現在休息

大盤多空對策訊號

ls3
十九年前,我第一次到證券商研究部當研究員時,部門有三位同仁輪流負責解盤,但大家用的分析工具不一樣,對盤勢的看法常常今天A君說多,明天B君卻翻空。我去分公司時,常被虧說你們研究部像月亮,初一十五不一樣。
後來我跟他們三位老兄分別聊了一下,學景氣燈號的作法,把他們用的分析工具,在EXCEL上作了一個表,每個工具都給一分,用來計算大盤的多空燈號。

後來這件事因為小弟EXCEL功力太差,每次作出來的結果都沒有太大的參考性,加上我又被叫去自營部工作,所以也就無疾而終了。

XS上線後,我一直想再試試重編大盤景氣燈號,研究了一陣子,今天來跟大家報告我的研究結果。

我一共用了以下的數據來當判斷分數的標準
1.外資買賣超
2.投信買賣超
3.自營商買賣超
4.融資餘額
5.融券餘額
6.上漲量
7.外盤量
8.RSI
9.MACD
10.KD
11.DMI
12.主力買賣超
13.AR
14.ACC
15.TRIX
16.SAR
17.MA

每個數據我都訂了一個多頭條件,例如RSI我就訂5日RSI比10日RSI高且低於80

如果符合條件就加一分,然後每天歸零,重新計算,最後再取十日移動平均。
在語法上,寫法大致如下:

input:P1(30);setinputname(1,"先前法人未接觸天數");
variable: XData(0),YData(0),ZData(0),Z(0);
if currenttime > 180000 or currenttime < 083000 then Z =0 else Z=1;

XData = GetField("外資買賣超")[Z];
YData = GetField("投信買賣超")[Z];
ZData = GetField("自營商買賣超")[Z];

value6=GetField("上漲量");
value7=GetField("外盤量");
variable:count(0);
if date<>date[1]
then count=0;
if xdata>0
then count=count+1;

if ydata>0
then count=count+1;

if zdata>0
then count=count+1;

if value4-value4[1]<20000
then count=count+1;

if value5-value5[1]>20000
then count=count+1;

if value6/volume>0.00001
then count=count+1;

if value7/volume>0.5
then count=count+1;

value8=rsi(close,5);
value9=rsi(close,10);
if value8>value9 and value8<90
then count=count+1;

variable: Dif_val(0), MACD_val(0), Osc_val(0);
MACD(Close, 12, 26, 9, Dif_val, MACD_val, Osc_val);
if osc_val>0
then count=count+1;

value10=mtm(10);
if value10>0
then count=count+1;

variable:rsv1(0),k1(0),d1(0);
stochastic(9,3,3,rsv1,k1,d1);
if k1>d1 and k1<80
then count=count+1;

variable:pdi_value(0),ndi_value(0),adx_value(0);
DirectionMovement(14,pdi_value,ndi_value,adx_value);
if pdi_value>ndi_value
then count=count+1;

value12=GetField("主力買賣超張數");
value13=average(value12,5);
if value13>0
then count=count+1;

value14=ar(26);
value15=linearregslope(value14,5);
if value15>0
then count=count+1;

value16=acc(10);
if value16>0
then count=count+1;

value17=trix(close,9);
value18=trix(close,15);
if value17>value18
then count=count+1;
value19=SAR(0.02, 0.02, 0.2);
if close>value19
then count=count+1;

if average(close,5)>average(close,12)
then count=count+1;

value11=average(count,10);
plot1(value11);

最後的分數要取幾天的移動平均,用10天,原因是我一直覺得兩週是多空的一個循環。

另外我會這麼寫的原因是有點認為市場參與者都有觀察市場的方法,我把大家常用的方法列出來計算分數,當分數愈高代表愈多人使用的工具會建議偏多,反之亦然。

所以當分數從五分以下往上走,代表會有愈來愈多人使用的工具開始由空翻多。

也因此,這樣的方法用在小型股就會不大適用,因為參與者不是一般大眾,其多空太容易受特定勢力的左右。

GetField

在XQ量化平台上線之前,市場早有很多套程式語法可供交易者使用,但敢於宣稱這是最適合台灣人使用的程式交易語法,其原因就在於, 我們可以提供台灣市場獨有的欄位,供交易者來使用。
交易者在制定台股交易策略時,往往除了開高低收成交量之外,也想要試著用台股獨特的交易資料,籌碼,財務報表等等欄位,例如法人的進出資料, 來作為交易策略的運算基礎,為了讓交易者可以如願以償,XScript提供了Getfield語法,來協助交易者完成這樣的工作,這篇文章就是來介紹這套語法及其應用。
在撰寫腳本時,當您需要使用這些台股特有的欄位時,只要在編輯器中打一個英文字母g,不管大小寫,編輯器都會跳出一個如下面附圖中的視窗, 只要您選取getfield(插入),系統就會跳出一個選取欄位的視窗,讓您直接挑選要使用的欄位。


您只要選取其中一個欄位按插入鍵,系統就自動把這個欄位帶到您的腳本中,因此,您就不需要去記那個欄位的英文名字是什麼。
例如我們如果要取得今日的外資買賣超,我們的寫法可以如下 :

value1=Getfield("外資買賣超"); 其單位是張數

如果我們要取得前一日的外資買賣超,其寫法跟我們要取得前一日的收盤價是一樣的,也就是用中括號裡寫個1就可以,所以其寫法如下 :

value1=Getfield("外資買賣超")[1];

我們非常習慣用value1=getfield(“欄位名稱”)的語法來取得特定欄位的回傳值,
這裡的value1,您也可以使用自己命名的變數名稱。

那麼到底支援多少台股欄位呢?
上面那張圖所顯示的,當您輸入G來跳出那個選取欄位的對話框時,目前Getfield支援的欄位是屬於資料欄位及商品資訊欄位,在警示類的腳本與選股類的股本中,能使用的欄位也不一樣,先跟大家介紹警示能用的欄位,下面幾類,按下連結後,可以看到所有的欄位,以及欄位的說明及使用範例

價格

量能

籌碼

基本

事件

市場統計

期權

以上是在警示腳本中可以用Getfield語法取得的所有欄位

接下來我介紹只有在選股本中才能用的欄位,如果你要寫的是警示腳本,在那個對話框中就不會有這些欄位可以選用

價格

籌碼

基本

財務

事件

所有跟財務報表有關的欄位,都是要在選股腳本中才用得到

這麼多的欄位,在使用上,XScript建議的語法如下:

Value1=getfield(“tradevalue”)[1]

或是

value1=getfield(“成交金額”)[1]

這兩種方式都可以取得昨日成交金額。

舉個例子,如果要找前一日主力買超創120天來新高,且近三日主力都買超,成交量過500張,且今天上漲超過3%的股票,就可以寫成腳本如下

value1=GetField("主力買賣超張數")[1];
if value1=highest(value1,120)
and trueall(value1>0,3)
and volume>500
and close>close[1]*1.03
then ret=1;

透過getfield這樣的語法,我們可以把台股特有的欄位拿來加入運算,不過要提醒大家,這些資料的更新頻率並不一樣, 所以運用這些欄位的腳本,在設進階警示時,其腳本的頻率必須設定對。

 

Getquote

在實際交易的經驗裡,我們常常透過日,週,月線,去尋找值得留意的交易機會,但進場點,往往還是看盤中的價量表現才作決定。
例如我們可能會去尋找五日RSI與十日RSI黃金交叉的股票,但為了怕是假訊號,我們經常會等到這當股票當天開盤帶量開高後才進場交易。
在未提供跨頻率的語法之前,我們無法同時處理日線上的RSI黃金交叉,又同時處理日內的1分鐘線或5分鐘線帶量開高。
Xscript為了解決這個問題,特別提供一組語法,讓交易者可以直接在盤中把最新的成交價量及委買委賣張數,傳回腳本中來作運算, 這些可以即時取得的交易資料,我們統稱為即時欄位。
從下面的台積電分時走勢圖中,我們可以看到,一檔股票目前交易所即時揭示的交易資料,大約有以下幾項 :

gq1

最新的成交時間,買進價,賣出價,成交價,單量。
最近的五檔買進委託價及對應的委託量
最近的五檔賣出委託價及對應的委託量
對於這些即時的資料,djscript幫它們分別取了不同的欄位名稱,讓交易者可以加以使用,以下就是這些即時欄位在腳本上被引用時的名稱對照表 :

q_dailyopen 開盤(日)
q_dailyhigh 最高(日)
q_dailylow 最低(日)
q_dailyvolume 總量(日)
q_Refprice 參考價
q_AvgPrice 均價
q_last 成交
q_Bid 買進
q_Ask 賣出
q_BidAskFlag 內外盤
q_TickVolume 單量
q_PreTotalVolume 昨量
q_PriceChangeRatio 當日漲幅%
q_InSize 當日內盤量
q_OutSize 當日外盤量
q_BestBid1 買進1
q_BestBid2 買進2
q_BestBid3 買進3
q_BestBid4 買進4
q_BestBid5 買進5
q_BestAsk1 賣出1
q_BestAsk2 賣出2
q_BestAsk3 賣出3
q_BestAsk4 賣出4
q_BestAsk5 賣出5
q_BestBidSize 委買
q_BestAskSize 委賣
q_BestBidSize1 委買1
q_BestBidSize2 委買2
q_BestBidSize3 委買3
q_BestBidSize4 委買4
q_BestBidSize5 委買5
q_SumBidSize 總委買
q_BestAskSize1 委賣1
q_BestAskSize2 委賣2
q_BestAskSize3 委賣3
q_BestAskSize4 委賣4
q_BestAskSize5 委賣5
q_SumAskSize 總委賣
q_DailyUplimit 今日漲停價
q_DailyDownlimit 今日跌停價

在djscript的語法中,取得這些欄位的方式很簡單,那就是運用給定變數這樣的方式,例如 :
Value1=q_dailyopen 就可以取得今天的開盤價,跟Getfield一樣,在撰寫腳本時,只要在編輯器上打 一個英文字母 “g”(大小寫皆可), 就會跳出如下圖左方的小視窗,只要點選”getquote插入”,即會跳出右邊的視窗讓您選擇要使用的即時行情欄位。

gq2

如此一來,就不必把這些欄位的名稱背起來,畢竟,還蠻不好背的。
例如我們如果要尋找今天外盤量佔總成交量比重高的股票,我們就可以寫撰寫如下圖的腳本 :

gq3
在這個例子裡,我們用value1這個內建的變數來代表q_BidAskFlag這個即時的內外盤標示,這個標示的值等於1代表是外盤成交,-1代表是內盤成交。
有了getquote這樣的語法,除了這種內外盤比的數據之外,包括內盤量,外盤量,最佳買進五檔的買進賣出委託量等盤中即時的交易所提供資訊, 都可以拿來作運算,找出盤中價量異常的股票。
getquote算是Xscript在地化特色的一個語法。