有一種恍然大悟的感覺
因為寫當沖程式寫很久了 程式沒用過均線之外的任何指標
使用均線時 天數都很短 所以要用均線的時候 都用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 !!