想不通的小問題?麻煩小幫手幫忙解答 謝謝

  •   69 
  • 最後發表   拉不拉多  2021 七月 16
拉不拉多 發文於   2021/07/14

vars: stockwin(0),stocklost(1),var1(0),i(0),var2(0),var3(0);

var1=highestbar(high,10);

var3=highest(high,10);

//print(var1,var3);

for i=var1 to var1+4

begin

if close[i]>=open[i] then 

stocklost+=volume[i]

else 

stockwin+=volume[i];

print(close[i],volume[i]);

end;

print(stockwin,stocklost);

print(stockwin/stocklost); 

 

執行結果如下  : 想請問,為什麼print(close[i],volume[i])價量都對 但是5天累加出來的stockwin& stocklost 卻是錯誤的數值?

 137.500000 4291.000000 

137.000000 3324.000000 

138.500000 1716.000000 

138.000000 1576.000000 

138.000000 1744.000000 

22625120.000000 37397859.000000 

0.604984 

137.500000 4291.000000 

137.000000 3324.000000 

138.500000 1716.000000 

138.000000 1576.000000 

138.000000 1744.000000 

22632735.000000 37402895.000000 

0.605107 

XQ小幫手 發文於   2021/07/16

Hello 拉不拉多,

 

這個問題跟您上次詢問的相似。

 

由於您 stocklost 跟 stockwin 兩變數沒有重置,所以從預先讀取筆數開始運算時變數就一直往上累加,而不是從0開始加。

您可以將for迴圈的部分修改為:

stocklost = 0;

stockwin = 0;

for i=var1 to var1+4 begin

    if close[i]>=open[i] then stocklost+=volume[i] else stockwin+=volume[i];

    print(close[i],volume[i]);

    end;

這樣stocklost + stockwin就會是for迴圈所print出來的值加總。

發表回覆
Close