圖說技術指標的設計方式與背後的思維(一)

By | 2020-03-04

技術分析分成很多派別,背後各有其思想基礎,近來用XS想要發展一些自訂指標,來建構自己的技術分析體系,所以作了不少的嚐試,這系列是來跟大家分享我的心路歷程

今天先來跟大家介紹的,是技術指標發明者 ,如何透過單根K棒裡,開高低收的四個相對位置,來偵測多空雙方的力道拉扯。

就像下面這張圖

我們可以把當根K線的開高低收四個點位,配合前一根的開高低收,定義出各式各樣的多空數據

例如,累積/派發線這個技術指標,就認為

一,收盤價-最低價: 當根K棒裡,多頭的淨力道

二,最高價-收價盤:當根K棒裡,空頭的淨力道

三,最高價-最低價:當根K棒裡,多空爭戰的整個戰場區域

所以當天的淨多空力道比例是((收盤價-最低價)-(最高價-收盤價))/(最高價-最低價)

所以累積/派發線指標的腳本就可以撰寫如下

VAR:ADL(0);
if currentbar=1 then 
adl=((close-low)-(high-close))/(high-low)*volume
else if high<>low then 
adl=adl[1]+((close-low)-(high-close))/(high-low)*volume
else 
adl=adl[1]+((close/close[1])-1)*volume;
plot1(adl,"累積派發線");

用這個指標畫成的圖就如下圖

類似的作法,也出現在大家常用的DMI指標上。

如上圖,DMI指標的計算,是先定義了三個數值

一,Truerange真實波動區間,如上圖右邊的概念,代表了當根K棒跟前一根之間最大的波動區間。

二,+DM : 如上圖左邊,如果最新一根BAR的高點比前一天的高點更高,那+DM就是最新一根K棒的高點減前一根的高點,否則就是零,這意思是+DM代表了最近一根K棒多頭所新攻克的區域

三,-DM: 同理 ,就代表最近一根K棒空頭所新攻下的區域。

在計算DMI時,要先比較+DM與-DM的值,那個數字大,另一個數字就=0

+DMI這數據就是+DM的移動平均/真實波動區間的移動平均

-DMI則是-DM的移動平均/真實波動區間的移動平均

從計算公式來看,就了解DMI指標是來計算每一根K棒多頭新攻下的城池VS空頭新攻下的城池的對應數據。

這種拿最新一根K棒的開高低收與前一根K棒的開高低收等八個數字對應關係所衍生的技術指標非常非常的多,大家在自訂指標時,可以參考前人的思維邏輯再來加以衍生。

接下來就跟大家分享兩個這類的指標

一,錢德動能震盪指標

Input:length(10, "天期");
variable: SU(0),SD(0); 
if close >= close[1] then 
SU = CLOSE - CLOSE[1] 
//上漲值 
else 
SU = 0; 
if close < close[1] then 
SD = CLOSE[1] - CLOSE 
//下跌值 
else 
SD = 0; 
value1 = summation(SU,length); 
//區間上漲值的總合 
value2 = summation(SD,length); 
//區間下跌值的總合 
value3 = (value1-value2)/(value1+value2)*100; 
//區間上漲值總合減下跌值總合的結果當分子
//兩者的總合當分母 
plot1(value3, "CMO");

這裡用的就只是最近兩期的收盤價

二,相對強度(RS)

類似把一段區間上漲與下跌值相加總之後再作運算的,最普遍被應用的是RSI這個指標,這個指標是由RS相對強度這個概念而來,以下是相對強度的腳本

SetBarMode(1);
//指定為simple函數
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); 
//第一根的sumUP是過去一段期間內上漲點數合的平均值
sumDown = Average(maxlist(price[1] - price, 0), length); 
//第一個的sumDown是過去一段期間內下跌點數合的平均值
end else begin
up = maxlist(price - price[1], 0);
// up是如果當天上漲時的上漲值
down = maxlist(price[1] - price, 0);
//down是如果當日下跌時的下跌值 
sumUp = sumUp[1] + (up - sumUp[1]) / length;
//sumUp是前一期的sumUP+最近一期上漲值(如果上漲的話)
sumDown = sumDown[1] + (down - sumDown[1]) / length;
//sumDown是前一期的sumDown+最近一期下跌值(如果下跌的話)
end;
if sumDown = 0 then RS = 0 else RS = sumUp /sumDown;

這是個函數腳本,用這個函數,RSI的計算公司如下

所以基本上,RSI這個指標也是K棒開高低收四點所衍生出來的技術指標,它用的是當根收盤價與前一根收盤價的差值。

從上面這些例子,我們可以了解到,有一派的技術指標,是根據K棒開高低收的相對位置,來研判多空勢力的變化,大家可以根據這樣的思維,自己定義多空的不同力量,發展出自己的自訂指標。