2014-01-28 162 views
0

我試圖讓代碼工作calcualte平均真實範圍。因此,在電子表格端,我有 = getATR(GoogleFinance(「stock」,「all",today() - 60,today()))谷歌牀單代碼陣列

而應用程序的代碼如下。但是我一直得到這個TypeError:不能將undefined的屬性「0.0」設置爲「7.1」。帶有問題的線是第一個調用trurange [i] [0]的實例。

感謝您對此的幫助,在語法方面似乎有點愚蠢。

function getATR(arr) { 
    var atr = 0; 
    var truerange = []; 
    var i=39; 
for (var row = arr.length-1; row >= arr.length-40; row--) { 
    truerange[i][0] = arr[row][3] - arr[row][4]; 
    truerange[i][1] = Math.abs(arr[row][3] - arr[row-1][2]); 
    truerange[i][2] = Math.abs(arr[row][4] - arr[row-1][2]); 
    truerange[i][3]= Math.max(truerange[i][0],truerange[i][1],truerange[i][2]); 
    i=i-1; 
    } 

for(var row2 = 1; row2<40; row2++){ 
    truerange[row2][4] = (truerange[row2-1][4]*13+truerange[row2][3])/14; 
    if(row2=39) {atr = truerange[row2][4]} 
    } 
    return atr; 

} 

瀏覽器:IE9 操作系統:WIN7 驅動器在網絡上/硬盤桌面版:網絡

回答

0

我找ATR的6天移動均線。此代碼適用於我

function getATR(arr) { 
    arr[1][9] = Math.abs(arr[1][2] - arr[1][3]) 
    for (var row = 2; row < 41; row++) 
    { 
     arr[row][6] = arr[row][2] - arr[row][3]; 
     arr[row][7] = Math.abs(arr[row][2] - arr[row-1][4]); 
     arr[row][8] = Math.abs(arr[row][3] - arr[row-1][4]); 
     arr[row][9] = Math.max(arr[row][6],arr[row][7],arr[row][8]); 
     if (row>6) { arr[row][10] = (arr[row-5][9]+arr[row-4][9]+arr[row-3][9]+arr[row-2][9]+arr[row-1][9]+arr[row][9])/6 } 
    } 

    return arr[40][10]; 
}