程式語法的問題

  •   359 
  • 最後發表   test999  2024 八月 07
test999 發文於   2024/07/31

指標的程式碼如下:

input:period(300,"計算天數");

SETTotalBar(320);

variable:count(0);
count=0;


value1=GetSymbolField("1104.tw","close","AD");
value2=simpleHighest(value1,period);
if value1>=value2*0.95  then
count=count+1;


//value1=GetSymbolField("2330.tw","close","AD");

plot1(count);

 

如果沒加入註解的那一行   count=1

加入了註解的那一行後     count會變為0

照理說  註解的那一行不應該影響count的值才對

希望各位高手解惑   謝謝

 

排序方式: 標準 | 最新
貓市 發文於   2024/08/01

加入註解的那行會影響simpleHighest的計算

test999 發文於   2024/08/01

謝謝   貓市

但是程式由上而下

註解的那一行   應該不會影響count才對

還是不太懂

虎科大許教授 發文於   2024/08/01

照理說,程式執行是按照循序結構進行,後面改變變數數值,應該不會影響前面的結果。可能指標腳本在運作時,不大一樣吧,這部份我也不清楚。不過,我一般不會用相同變數在程式裡面重複使用,因為這很容易會犯邏輯上的錯誤。你把註解的value1改成value3就不會有問題了。

test999 發文於   2024/08/01

謝謝許教授

我知道把變數名稱改掉   就沒有問題

但是不太懂原理   所以問這個問題

我則是習慣把某個變數   當成暫存變數   所以會常使用同一個變數名稱

XS小編 發文於   2024/08/07

Hello test999,

 

會有問題是因為 simplehighest 在運算時會去取 value1, value1[1], value1[2], ... value1[period] 作比較。

若把註解取消,value1 雖然會是 1104 的收盤價,但 value1[1] ~ value1[period] 則會是 2330 的收盤價,因為 value1=GetSymbolField("2330.tw","close","AD"); 是最後執行的。

您可以將 value1[1] 畫出,可以很容易看到問題原因。

test999 發文於   2024/08/07

了解   謝謝小編

發表回覆
Close