array的累加

  •   88 
  • 最後發表   風期會  2024 四月 24
風期會 發文於   2024/04/24

小幫手你好

我目前設計好腳本如下

只是在累加的array_sum,一直在指標出現都是0,或者是提示說超出索引範圍,

還煩請指教如圖片excel的口數的累加,這樣如何設計呢?感謝

p.s.附圖為指標附圖和excel抓取的口數相符合,所以基本是可以呈現累加。

//口數
value1 = GetField("外資交易買口");
value3 = GetField("外資交易賣口");

value5 = value1 - value3;


if value5<0 then begin
plot1(value5,checkbox:=1);
setplotLabel(1,"沖銷後為空單");
end else 
if value5>0 then begin
plot2(value5,checkbox:=1);
setplotLabel(2,"沖銷後為多單");
end;

if dayofWeek(date)=3 and dayofMonth(date)>14 and dayofMonth(date)<22 then plot99(date,"結算日",checkbox:=1);

if dayofWeek(date)=3 and dayofMonth(date)>14 and dayofMonth(date)<22 then value5=0;

var: _start_day(0), _end_day(0);
input: start_month(1,"合約月",inputkind:=dict(["1月",1],["2月",2],["3月",3],["4月",4],["5月",5],["6月",6],
                                         ["7月",7],["8月",8],["9月",9],["10月",10],["11月",11],["12月",12]),quickedit:=true);
input: start_year(2024,"合約年");
var: start_day_line(0);

start_day_line = GetLastTradeDate(start_month,start_year);

value11 = getbarOffset(start_day_line);

input: end_month(1,"合約月",inputkind:=dict(["1月",1],["2月",2],["3月",3],["4月",4],["5月",5],["6月",6],
                                         ["7月",7],["8月",8],["9月",9],["10月",10],["11月",11],["12月",12]),quickedit:=true);
input: end_year(2024,"合約年");
var: end_day_line(0);

end_day_line = GetLastTradeDate(end_month,end_year);

value12 = getbarOffset(end_day_line);

var: _day_count(0);

_day_count = value11 -value12;


//累加
array: FITX_num[](0);

var: i(0);

var: arraysize(_day_count);

Array_SetMaxIndex(FITX_num, arraysize);

if getFieldDate("date")<>getFieldDate("date")[1] then
  begin
    for i = 1 to arraysize
      begin
        FITX_num[i] = value1[i] - value2[i];
      end;
  end; 

附加文件

XS小編 發文於   2024/04/24

 Hello 風期會,

 

小編建議您可以將value11, value12, 和 _day_count 畫出,會比較容易了解問題原因。

需注意 getbarOffset 在取得的日期為未來日期時數值都會為0,所以計算出的陣列大小其實是錯誤的。

若只是單純要加總區間內的數值,那麼只要用日期來做限制即可。

舉例來說:

 

if date <= start_day_line then value10 = 0

else if date > start_day_line and date <= end_day_line then value10 += value5;

 

這樣value10就會加總介於 start_day_line 和 end_day_line 間的value5數值。

 

  • 按讚來自於
  • greg750
發表回覆
Close