請問如何將變數儲存並比較?

  •   177 
  • 最後發表   Frank88886  2024 四月 23
Frank88886 發文於   2024/04/21

請問如何將變數儲存並比較?
當條件滿足時,將第一次數值紀錄,再次滿足時,將第二數值紀錄,並且比較第一次與第二次數值。

我不知道用NumArray是否正確,我一直無法將第一次數值保存下來,具體如下,

Array: NumArray[10](0);

 

if oscValue < 0 and oscValue > oscValue[1] and oscValue[1] < oscValue[2] 

then begin

value1 = oscValue[1];

value2 = lowest(low,3);

end;

 

NumArray[1] = value1; //紀錄第1次的oscValue[1]

NumArray[2] = value2; //記錄第1次3根低點

NumArray[3] =         //紀錄第2次的oscValue[1]

NumArray[4] =         //記錄第2次3根低點

 

//比較兩次的oscValue[1]與3根低點

if NumArray[1] < NumArray[3] and NumArray[2] > NumArray[4] then ret = 1;

end;

排序方式: 標準 | 最新
虎科大許教授 發文於   2024/04/21

你這樣寫,邏輯應該沒問題。只是光看你提供的程式碼,並沒有計算oscValue,會不會問題就出在這裡?若只是比較這4個數值,其實有更簡單的寫法,不需要用到陣列。

Frank88886 發文於   2024/04/21

許教授,請問還有甚麼樣的寫法 可以指教一下嗎?
(oscValue前面有計算,為了縮減篇幅沒有貼上來)

虎科大許教授 發文於   2024/04/21

if value1 < value1[1] and value2 > value2[1] then ret=1;

  • 按讚來自於
  • frank8888656
Frank88886 發文於   2024/04/21

感謝!

XS小編 發文於   2024/04/23

Hello Frank88886,

 

if oscValue < 0 and oscValue > oscValue[1] and oscValue[1] < oscValue[2] then begin

    value1 = oscValue[1];

    value2 = lowest(low,3);

    end;

 

這樣確實會在 oscValue 條件符合時將數值保存,但當第二次條件符合時數值會直接被更新。

除了用 虎科大許教授 提供的方式,在條件更新的那一次檢查當根Bar與前根Bar (也就是上一次條件符合) 的數值外,若您要使用NumArray來記錄的話應該這樣作:

if oscValue < 0 and oscValue > oscValue[1] and oscValue[1] < oscValue[2] then begin

    NumArray[3] = NumArray[1];

    NumArray[4] = NumArray[2];

    NumArray[1] = oscValue[1];

    NumArray[2] = lowest(low,3);

    end;

 

這樣 NumArray[3] 就會是 NumArray[1] 的前期值,NumArray[4] 就會是 NumArray[2] 的前期值,

NumArray[1] 與 NumArray[2] 則是原本的 value1 和 value2。

 

感謝 虎科大許教授 的熱心回覆。

發表回覆
Close