FastHighest

  •   347 
  • 最後發表   bowen  2025 一月 26
bowen 發文於   2025/01/25

在逐筆洗價下,兩種寫法

1.

if getField("估計量") >= fastHighest(GetField("Volume","D")[1],20) then begin

      ...

end;

-------------------------------------------------------------------------------------------------

2.

once value1 = fastHighest(GetField("Volume","D")[1],20);

if getField("估計量") >= value1 then begin

      ...

end;

請問2.是否比1.計算更快?

我的理解是1.每次判斷都要再重新計算fastHighest(GetField("Volume","D")[1],20),

2.給變數之後已固定,不需要重新計算。

請問理解有誤嗎?

排序方式: 標準 | 最新
虎科大許教授 發文於   2025/01/25

once value1 = fastHighest(GetField("Volume","D")[1],20);只會計算一次value1,並保留運算的結果。由於只計算一次,不必重複一直計算歷史的數據,是比較有效率的。但是這裡要特別留意,跑歷史K棒的時候,第一根歷史K棒就會執行,計算的過去20期最大量會是第一根K棒的過去20期的最大量。若只要在盤中計算,可結合isFirstCall("Date"),才會計算正確的數值。

  • 按讚來自於
  • Bowen16
bowen 發文於   2025/01/26

感謝教授,長知識了。

發表回覆
Close