(已解決) 請問Array要怎麼做加法運算呢?答案是:區域變數會有記憶上一次計算的功能,要清除為0

  •   435 
  • 最後發表   Sadless  2020 八月 21
Sadless 發文於   2020/08/19

我宣告了一個一維陣列,來記錄成交量。

然後,利用測試一、測試二、和測試三,三種不同的寫法,來累加一維陣列裡面的成交量值。

請問小幫手,為什麼測試一和測試二的結果是錯誤的呢?

是因為Array的元素不能直接相加嗎?

 

測試結果如下:

 

 

測試的寫法如下:

//宣告
settotalbar(4.8*60*60);

inputs:number_of_observing_days(2); //預設回頭觀察2天

Array:array_volume_of_observing_day_per_day[](0);

Array_SetMaxIndex(array_volume_of_observing_day_per_day, number_of_observing_days);

//計算過去N日該分鐘的成交量占比

variable: i(0);
for i = 1 to number_of_observing_days
begin
    //取得該日的累計成交量
    array_volume_of_observing_day_per_day[i] 
    = getfield("成交量","D")[i];
end;

variable:sum_1(0);
variable:sum_2(0);
variable:sum_3(0);


//測試1
for i = 1 to number_of_observing_days
begin
    sum_1
    = sum_1
    + array_volume_of_observing_day_per_day[i];
end;

//測試2
    sum_2
    = sum_2
    + array_volume_of_observing_day_per_day[1]
    + array_volume_of_observing_day_per_day[2];

//測試3
    sum_3
    = Array_Sum(array_volume_of_observing_day_per_day, 1, number_of_observing_days);

plot11(sum_1,"sum_1");
plot12(sum_2,"sum_2");
plot13(sum_3,"sum_3");

 

 

排序方式: 標準 | 最新
XQ小幫手 發文於   2020/08/21

Sadless大 您好

請您先看下這兩張圖

我們可以把時間拉到最開始劃線的地方,

一開始三條線的數值都會是相同的,

但是第二張圖SUM_3會是正常6595,

而SUM_1 2 會呈現累加6595+17=6612 

所以您在使用sum_1 2 的想法的時候,

可能要考慮到需要避掉累積的問題,

ex 在換日的時候先把sum_1 2 數值歸零

以上想法提供給您參考  感謝

Sadless 發文於   2020/08/21

原來如此。

我忽略掉了區域變數會有記憶上一次計算的功能,所以沒有考慮到累計的問題,感謝小幫手的提醒。

發表回覆
Close