關於陣列的 XAverage函數的 計算結果!!

  •   143 
  • 最後發表   Caique  2022 五月 12
Caique 發文於   2022/05/09

小幫手 您好!!

我把一堆股票的收盤價丟進陣列...

想用for迴圈 & XAverage函數 直接 計算EMA的值後 再丟給另一個陣列存放

卻發現 計算出來的結果 令人傻眼( ex. 台積電 股價500多 5分K EMA20= 80多 )

用 Average函數 卻無此問題??!!

想請教 我是哪一個部分 寫錯了嗎??!!

感謝!!

for x = 1 to 100

begin

EMA20_100[ x ] = XAverage(  Price100[ x ], 20 ); 

end;

XQ小幫手 發文於   2022/05/12

Hello Caique,

 

1.不論是XAverage還是Average,其使用的第一個input都是價格序列不是陣列,雖然可以運行但小幫手並不建議您這樣使用。

因為可能會發生當初撰寫函數時沒有想到的錯誤。

 

2.就小幫手所知,XS腳本底層在運算時,像XAverage這種會使用前期值的函數不能使用迴圈的方式來運算。

您可以測試以下兩種寫法:

array: Parray[1](0), Carray[1](0);

 

Parray[0] = close;

Parray[1] = getsymbolfield("1101.TW", "Close");

 

for value1 = 0 to 1 begin

    Carray[value1] = Xaverage(Parray[value1], 10);

    end;

 

value2 = Xaverage(close, 10);

value3 = Xaverage(getsymbolfield("1101.TW", "Close"), 10);

plot1(Carray[0]);

plot2(value2);

plot3(Carray[1]);

plot4(value3);

 

 

array: Parray[1](0), Carray[1](0);

 

Parray[0] = close;

Parray[1] = getsymbolfield("1101.TW", "Close");

 

Carray[1] = Xaverage(Parray[0], 10);

Carray[2] = Xaverage(Parray[1], 10);

 

value2 = Xaverage(close, 10);

value3 = Xaverage(getsymbolfield("1101.TW", "Close"), 10);

plot1(Carray[0]);

plot2(value2);

plot3(Carray[1]);

plot4(value3);

 

第二種計算出來的 plot1 = plot2,plot3 = plot4,但第一種的就會出錯。

  • 按讚來自於
  • Caique Song
發表回覆
Close