HMA的精神是在計算移動平均時,給予後面的幾根比較高的權重
腳本
inputs:Length(20) ; vars:MA(0),HMA(0); MA=2*Xaverage(close,IntPortion(Length*0.5))-xaverage(close,Length); HMA=xAverage(MA,IntPortion(SquareRoot(Length))); Plot1(HMA,"HMA") ;
參考的圖
指數移動平均(英語:exponential moving average,EMA或EXMA)是以指數式遞減加權的移動平均。各數值的加權影響力隨時間而指數式遞減,越近期的數據加權影響力越重,但較舊的數據也給予一定的加權值。
在XS中把這個移動平均寫成一個叫XAverage的函數,腳本如下
SetBarMode(2); input:thePrice(numericseries); //"價格序列" input:Length(Numeric); //"計算期間" variable: Factor(0); if length + 1 = 0 then Factor = 1 else Factor = 2 / (Length + 1); if CurrentBar = 1 then XAverage = thePrice else XAverage = XAverage[1] + Factor * (thePrice - XAverage[1]);
先前有被問到有沒有很簡單的一種指標,見紅就買,見綠就賣,剛好昨天被老朋友問到如果一直盯著台積電,但又不想一直抱著,想要來回操作,有沒有什麼簡單的方法? 今天就來跟大家介紹這樣的指標。
這個指標的基本原理還蠻單純的,如果股價高於13日的加權移動平均線就進場,跌破13日的加權移動平均線就出場。
但如果要更掌握住一檔個股的多空真實動向,不能光用收盤價來作為多空的標準,既然最高價代表當天多頭最佳的戰果,我們就可以用最高價減去加權移動平均線當作多頭力道與均線間的差額,同理最低價是空頭的最大力道,用最低價減去加權移動平均線代表空頭與均線間的差額,這樣就可以算出兩個指標
一個是Elder多頭力道指標,另一個則是Elder空頭力道指標
計算方法
Elder多頭力道指標= 日高 – n區間EMA
Elder空頭力道指標 = 日低 – n區間EMA
畫成指標的腳本如下
// Elder 多頭力道指標
// input: Length(13);
SetInputName(1, “天數”);
Value1 = High – XAverage(Close, Length); Plot1(Value1, “多頭”);
另一個腳本
//Elder 空頭力道指標 // input: Length(13); SetInputName(1, "天數"); Value1 = Low - XAverage(Close, Length); Plot1(Value1, "空頭");
我畫出來的台積電參考圖如下
透過這樣視覺化的表現,可以更掌握台積電的波段買賣點,保守一點可以在多頭力道指標與空頭力道指標都翻紅後才進場,在空力道指標已多日翻黑後就要開始提高警覺了。
基本上大股票用這個方法效果不差。
今天要介紹一個海龜交易法很有名的指標:唐奇安通道。
這是由著名的海龜交易員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;//作空
當然這樣的期數調整會視情況而定,每一檔商品可能最佳的結果也都不一樣,不過通常每個交易員都會有一個習慣的參數, 可能是月線或季線加減。 我們先看一下加上買賣點指標畫在圖上的情況,腳本加上以下的部份
Dupper = Highest(H[1], period); DLower = Lowest(L[1], period); if C > Dupper 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 < DLower 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可以看到明顯的多空分壘,當股價的波動具有足夠的趨勢性時,這樣的指標就能夠發揮最大的效用! 這幾年來簡單的突破系統由於採取極短線賺取利差的人大幅增加, 而導致假突破等”騙線”的情況越來越多,海龜交易也適應性的產生許多變形,但總結的目標就是要減少雜訊, 判斷出商品的走勢穩定性,這是在交易中相當關鍵的獲利點!
DPO指標的原文是 Detrended Price Oscillator,直譯為「非趨勢價格擺盪」指標,所謂的Detrend就是「去除掉趨勢」之意,顧名思義,也就是說這個指標可以將一個股價變動的時間數列值,袪除掉其長線的趨勢方向,而只留下短線價格的波動。這個指標設計的目的似乎與大多數的指標相反,一般的指標都是想要留下趨勢的變動,而袪除掉其短期波動的雜訊。
然而,這個指標要用什麼樣的方法,去除掉長期的趨勢呢?其實它用的方法一點也不新奇,就只是「短線乖離」的觀念而已。首先,對股價取一個固定期間的簡單平均線,將這條線畫在股價圖上,就如附圖1中K線上的藍色線即是。然後我們假想,如果這條籃色的線是一條可以彎曲或拉直的橡皮筋,而股價K線是固定附著在這條橡皮筋上的東西。現在我們要將這條橡皮筋以水平方向向左右兩方拉直,那麼K線的形狀就會跟著改變,這時你就會看到股價的「趨勢」不見了,只剩下依附在這條橡皮筋直線上的「短期乖離波動」。我們「將橡皮筋拉直」的這個觀念可以適用在任何採用移動平均線乖離的指標上。
不過,DPO指標又稍為加工了一下,因為光只是採用某一定期間的平均線,還難以突顯短期波動的「震盪幅度」,所以再將這條平均線向右方(附表1中是向下方)移動,而移動的距離以平均天數除以2加1來計算,所以當我們取6日平均值時,右移的距離則是6/2+1等於4,如果平均天數取7則7/2=3 餘1,餘數不論再加1,同樣是右移4天。
腳本
input: Length(10); variable: dpo(0); SetInputName(1, "天數"); dpo = Close - Average(Close, Length)[(Length /2) + 1]; Plot1(dpo, "DPO");
參考圖形
CCI指標的原文是 Commodity Channel Index,直譯的話就是「商品通道指標」。這個指標是由Donald R. Lamber所發明的。
這個指標的計算過程如下:
1. 先計算出典型價格:
TP t = ( 最高價t + 最低價t + 收盤價t ) /3
2. 求算典型價格的簡單平均值:
MA t =( TPt + TPt-1 + ... + TP t-n+1 ) / n
3. MA t 與TPt 離差絕對值的n日加總:
MD t =(|MAt-TPt|+|MAt-1-TPt-1 |+....+|MAt-n+1-TPt-n+1|)/n
4. CCI公式:
CCI t = ( TP t-MA t ) / ( 0.015 * MD t )
這個CCI公式的設計,當典型價格等於其平均值時,CCI值會等於零。所以這個公式的原始設計比較像是在使用乖離率的觀念,因為只有當最後股價在極短期內作劇烈的向上或向下運動時,CCI值才會出現突然向上或向下大幅擺盪的極端值。這個公式的發明者為了將CCI指標值限定在一定的範圍內波動,所以特別將分母部份乘上0.015的參數值。
腳本
// XQ: CCI指標 // input: Length1(14), Length2(28), Length3(42); SetInputName(1, "天數一"); SetInputName(2, "天數二"); SetInputName(3, "天數三"); Plot1(CommodityChannel(Length1), "CCI1"); Plot2(CommodityChannel(Length2), "CCI2"); Plot3(CommodityChannel(Length3), "CCI3");
參考圖形
由於DMI指標主要的用途在於作趨勢成立的判斷,因此是屬於較為長期交易的技術指標。而DMI指標的三條線中,ADX線可以說是相當奇特的一條線。ADX線在上昇趨勢開始形成時,會從底部往上攀昇,直到上昇趨勢開始平緩而盤旋時,ADX線便回轉向下。而當下降趨勢開始時,ADX線同樣的又開始從底部往上爬昇,直到下降趨勢和緩而盤整時,ADX線又開始向下回轉。
腳本的寫法如下
input: Length(14); variable: pdi_value(0), ndi_value(0), adx_value(0); SetInputName(1, "天數"); DirectionMovement(Length, pdi_value, ndi_value, adx_value); // 初始區波動較大, 先不繪出 // if CurrentBar < Length then begin pdi_value = 0; ndi_value = 0; adx_value = 0; end; Plot1(pdi_value, "+DI"); Plot2(ndi_value, "-DI"); Plot3(adx_value, "ADX");
參考圖形
ADI指標的原文是Accumulation Distribution Index,按原文直譯的名稱是「累積分配指標」,其實它真正的意思是「漲跌力道聚散指標」,Accumulation指的是上漲力道在累積,而Distribution指的是上漲力道在消散之意,所以是「聚散指標」
ADI計算公式如下:
如果 今日收盤價「大於」昨日收盤價,則
今日ADI= 昨日ADI + [ 今日收盤價 - Min ( 今日最低價,昨日收盤價 ) ]
否則
今日ADI= 昨日ADI - [ Max ( 今日最高價,昨日收盤價 ) - 今日收盤價 ]
公式中的Min(A,B)表示取兩者中較小的數字; Max(A,B)表示取兩者中較大的數字
公式中的「 今日收盤價 - Min ( 今日最低價,昨日收盤價 ) 」,代表股價的上升力道,公式之所以這樣設計的原因,是因為今日股價如果上漲的話,那麼要從那裡算起漲點?如果今天一開盤就跳空上漲,收盤又收更高,那麼昨天的收盤跟今天的最低價之間有個上漲的「跳空缺口」,這部份應該要算作今日的上漲力道,所以起漲點應以昨天的收盤價來算;反之,如果今天的盤中低點甚至比昨天的收盤更低,那麼就以今天的最低點當起漲點.所以整個公式的意思是:當今日股價是上漲的話,那麼就將這一上升的力道累加進ADI指標值內.
同樣的,公式中的「 Max ( 今日最高價,昨日收盤價 ) - 今日收盤價 」,指的是下跌的力道,在計算起跌點時,一樣要將下跌的「跳空缺口」也包括在內,因而起跌點是今日最高點與昨日收盤價兩者中較大的那個數字.所以整個公式的意思是:當今日的股價是下跌的話,那麼就將這一下跌的力道從累計的ADI中扣除.
ADI指標是一個累計值,所以是趨勢性的指標,它沒有一個固定的波動範圍,所以指標值的絕對數值沒有意義,重要的是指標線的方向.當指標線往上時,表示上漲力道在「凝聚」,上漲機會較大;反之,如果指標線往下的話,表示上漲力道在「消散」,股價下跌的機率較大.
腳本
variable: adi(0); if Close > Close[1] then adi = adi[1] + (Close - minlist(low, close[1])) else begin if Close < Close[1] then adi = adi[1] - (maxlist(high, close[1]) - close) else adi = adi[1]; end; Plot1(adi, "A/DI");
參考圖形
Volume Oscillator(OSCV)成交量擺動指標顯示兩條成交量移動平均線之間的價格差異,差異可以點值或百分比在圖表中顯示。
腳本
Input: length1(5); setinputname(1, "短天期"); Input: length2(20); setinputname(2, "長天期"); Value1 = Average(Volume, length1); Value2 = Average(Volume, length2); if value1 = 0 then value3 = 0 else Value3 = (Value1 - Value2) * 100 / Value1; Plot1(Value3, "OSCV");
參考的圖形
您可以使用兩種不同的移動平均量,以確定成交總量的趨勢是增加或減少。當 OSCV 上升穿越零軸以上,它標誌著短期移動平均量已遠遠高於長期移動平均量。 有許多方法來解釋成交量的變化趨勢。一個普遍的信念是,價格上漲加上成交量增加,或價格下跌加上成交量下跌,代表利好。 相反,如果成交量增加時,價格下跌,交易量減少時價格上漲時,市場跡象顯示了潛在的弱勢。
股價上漲加上成交量的增加意味著更多的參與者進入市場,趨勢應可以持續。相反,股價下跌時成交量增加,表示參與者離場,下降趨勢不易逆轉。
累積克林格成交量擺動指標Cumulative Klinger Oscillator是一個與累積能量線OBV相似的指標, 它是利用根據日間股票平均價格的變動而對成交量累積而成,而在累積能量線OBV中用的是日間股票的收盤價的變動來作為成交量累積的標準。 相對來說,累積克林格成交量擺動指標比KO指標更適合用於判斷股票價格趨勢的方向。
腳本
variable: kovolume(0); value1=(close+high+low)/3; if CurrentBar = 1 then kovolume = 0 else begin if value1 > value1[1] then kovolume = kovolume[1] + volume else begin if value1 < value1[1] then kovolume = kovolume[1] - volume else kovolume = kovolume[1]; end; end; Plot1(kovolume, "KO能量潮指標");
參考圖形