在傳統邏輯中,公理是無法被證明或決定對錯。
在我們的市場中,技術分析被廣泛的使用,
但是我們無法確切地去證明技術分析是對或錯,
我們只能用一堆理由去掩飾它不合理的地方。
一個技術分析系統它背負了許多但書,
而成為大家所接受的交易法則。
接下來我們會花一些時間來探討較常被使用的技術分析。
首先我們來介紹一下KD指標-
隨機指標的理論認為:
當市場處於牛市時,收盤價往往接近當日最高價;
反之在熊市時,收盤價比較接近當日最低價,
該指數的目的即在反映出近期收盤價在該段日子中價格區間的相對位置。
根據上面的理論,
所以我們應該也可以應用在期貨當沖的程式交易上面。
KD的計算方式如下:
它是由%K(快速平均值)、%D(慢速平均值)兩條線所組成,
假設從n天週期計算出隨機指標時,
首先找出最近n天當中的最高價、最低價與第n天的收盤價,
然後利用這三個數字來計算第n天的未成熟隨機值(RSV)
RSV =(第n天收盤價-最近n天內最低價)/(最近n天內最高價-最近n天內最低價)×100
計算出RSV之後,再來計算K值與D值。
當日K值(%K)= 2/3 前一日 K值 + 1/3 RSV
當日D值(%D)= 2/3 前一日 D值+ 1/3 當日K值
若無前一日的K值與D值,可以分別用50來代入計算,
經過長期的平滑的結果,起算基期雖然不同,
但會趨於一致,差異很小。
接下來我們的重點放在要怎麼把它呈現在程式上面呢?
你必須要把線圖畫出來才能做觀察,
方便讓你做出進場決策。
新手教室
如果你是一個新手,你想把KD值畫出來,該怎麼著手呢?
首先我們要抓出我們的參數,也就是n天,
n是我們可以去改變的數值,
看你要算9日的KD值還是18日的KD值都可以。
接下準備計算RSV值了,
我們用比較簡單的方式把RSV的公式給表示出來,
如下所示:
那n日內的最高值要怎麼表示呢?
那就是highest(price,n)這個函數了,
其中price的位置就放入我們要的價格,
所以我們要的就是highest(high,n)。
同理,n日內的最低價格就是lowest(low,n)。
最後我們就可以把RSV值的程式碼給寫出來了,
RSV=((close-lowest(low,Length))
/(highest(high,Length)-lowest(low,Length)))*100;
再來我們要算K值跟D值,
大家可以注意到,
KD值的公式如下:
這邊有一個重點就是,
我們是用n日內的價格去計算的,
所以當K棒數小於n時,
我們是無法算出RSV跟KD值,
所以K棒必須超過n時才可以算出。
當第n根K棒出現時我們才可以開始計算,
此時我們沒有前一天的KD值,
所以用50代入當作前一天的KD值做計算。
Input:Length(9),Up(70),Dn(30);
Var:RSV(0),K_V(50),D_V(50),x(0);
if CurrentBar=Length then begin
K_V=50;
D_V=50;
end;
If CurrentBar >Length AND Length > 0 Then Begin
if highest(high,Length)<>lowest(low,Length) then begin
RSV=((close-lowest(low,Length))/(highest(high,Length)-lowest(low,Length)))*100;
K_V=RSV/3+(2*K_V)/3;
D_V=K_V/3+(2*D_V)/3;
end;
End;
Plot1(K_V, "%K",red);
Plot2(D_V, "%D",green);
plot3(Up, "up",blue);
plot4(Dn, "dn",blue);
上面的程式有些地方要說明一下,
為什麼要加上if highest(high,Length)<>lowest(low,Length) then begin,
因為那是放在分母的數值,
所以你必須加上這一個條件,
才可以保證他不為0,
程式才會正常運作計算出來。
然後一個指標函數最多只可以畫四條線圖,
所以最多只能用到plot4而已。
而我們的指標程式圖形裡面還加上得超買跟超賣線進去,
我們內定超買值為70,超賣值為30,
這部分可以根據個人喜好去做改變。
最後我們就可以畫出上面的KD線圖了,
下篇文章我們會繼續討論如果KD拿來做交易,
到底行不行得通呢?
我只是想把市場上的技術分析,寫成程式驗證給大家看,看看是否會賺錢?並不表示我認同他是一個會賺錢的策略,所以是站在中立的立場驗證而已.感謝您的指教.
回覆刪除