2008年9月12日 星期五

在分線內顯示日線 MA

看了DK的在分線內顯示日線 MA

有一種恍然大悟的感覺

因為寫當沖程式寫很久了 程式沒用過均線之外的任何指標

使用均線時 天數都很短 所以要用均線的時候 都用DK說得暴力法

反正是當沖 用不到60日均線

所以沒有考慮到 在HTS分鐘K線內畫日線MA的問題

現在 我也來野人獻曝一下 來一個求均線的函數

結果跟暴力法一樣 0誤差..

不過在這之前 解釋一些東西 是等等會用到的變數


一天開盤 5小時 1小時60分 5小時就是300分 所以 1分K 1天300根K線

5分K 1天有 300/5=60根K線;15分K 1天有 300/15=20根K線

...以此類推

所以 先弄兩個變數 一個參數

input : size(0);
vars :onemin(300),kbar(0);
kbar=onemin/size;

要算1天有幾根25分K線 在size那邊輸入25

kbar=300/25=12 所以1天有12根25分K線


再來 講其他的 也是以5分K為例

在每一交易日開始的第一根K線,前一根收盤價 就是前一日收盤價

也就是在這個時候,closed(1) = close[1]

那前兩日收盤價 closed(2),就是close[1]再回推60根K線(1天60根K線)

就是close[1+60] 也就是 close[1+kbar]

前三日收盤價 closed(3),就是 close[1+2*kbar]

...........以此類推,要前三百日都OK

程式就是用這原理寫的...

那就直接來函數程式碼了 - 函數名稱 MA


input:size(NumericSimple); {要在幾分鐘K線}
input:length(NumericSimple); {幾日均線}
vars:count(0),sumofclose(0),order(0);
vars:onemin(300),kbar(0);

kbar=onemin/size; {計算一天有幾根K線}

if date[0] <> date[1] then begin {每日開始時}

sumofclose=0; {歸0}
order=0; {歸0}

for count=0 to length-1 begin
order=1+kbar*count;
sumofclose=sumofclose+close[order]; {每日收盤和}
end;

end;

MA=sumofclose/length;


就這樣...

輸入length(日數) size(幾分K線) MA就會算出結果

Try it !!
HEMiDEMi Technorati Del.icio.us MyShare?犖?貊惜 Yahoo