當日創新高的寫法

  •   42 
  • 最後發表   無情卻慈悲  昨天
無情卻慈悲 發文於   2026/01/19

var: todayHighPrice(0);

if Close[0] > GetField("High", "D")[0] then  todayHighPrice = GetField("High", "D")[0] ;

請問當日創新的寫法,上面寫是否正確呢?

我應用起來好像沒法抓到。

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

Close[0] > GetField("High", "D")[0]   <- 這個條件不可能滿足。

無情卻慈悲 發文於   2026/01/19

好的,謝謝

原來是這個要先加  todayHighPrice = GetField("High", "D")[0] ;

虎科大許教授 發文於   2026/01/19

今天的收盤價(或即時成交價)不可能大於今天的最高價。

無情卻慈悲 發文於   2026/01/25

請問這樣寫,是對的嗎

 

var: IntrabarPersist todayHighPrice(0);

once(time >= 090000 )

begin

if Date <> Date[1]  then

    todayHighPrice = GetField("High", "D")[0];

end;

if GetField("High", "D")[0] > todayHighPrice then begin

    todayHighPrice = High;

 

end;

 

虎科大許教授 發文於   2026/01/25

若你的當日創新高,指的是目前的價格創今日新高,則應該先設定一個開始監控的時間點,讓市場有時間決定到目前為止的高點。例如,在現貨開盤15分之後,亦即currentTime>=091500,開始判斷是否有創新高。

var: intrabarpersist myH(0);

if currentTime < 091500 then

   myH = getField("最高價","D")

else

   begin

      if c > myH then ret=1;

      retMsg="創新高!"

   end;

無情卻慈悲 發文於   2026/01/26

感謝您的回覆,只是我的寫法是 once(time >= 090000 ) ,在大於090000時僅執行一次抓取當日且當下的最高價到變數中,然後後面的價格持續與此變數做比較,不知哪裡錯誤,可否指點出我的想法是否有問題呢 謝

虎科大許教授 發文於   2026/01/26

若你的執行商品是台指期,這樣的寫法與我說的一樣。若是股票,其實就是判斷價格有沒有高於開盤價。我想,你面臨的問題應該是跑歷史K棒時,once已經被執行了,這造成今天九點沒有記錄最高價。

無情卻慈悲 發文於   2026/01/26

您好,我是跑盤中個股雷達,要偵測出開盤至收盤這期間的最高價,想用once在初執行時先把當日最高價存下來比較。

虎科大許教授 發文於   2026/01/26

那就不讓程式跑歷史K棒。請在程式第一行寫上:

if getinfo("isrealtime")=0 then return;

無情卻慈悲 發文於   2026/01/26

好,不過不讓程式跑歷史,應是 getinfo("isrealtime")=1 ,不是嗎?謝謝

顯示更多回應 發表回覆
Close