達成條件後,比較當日最高點 最低點發生時間

  •   301 
  • 最後發表   樂兒  2024 六月 05
樂兒 發文於   2024/05/23

親愛的管理員,請教一個問題,

當執行頻率為"日"

想要在  condition 達成後,確認 『今天最高價發生的時間,比最低價發生時間晚』

假設condition 達成的時間為 9:40 ,則確認 9:40分以前的『今天最高價發生的時間,比最低價發生時間晚』 則 ret-=1;

 

目前寫法 是這樣

setBackBar(5, "D");

variable:_Htime(0);

variable:_Ltime(0);

 

if condition1=true and GetField("成交量","D")[1] >5000

then begin

if high = getfield("最高價", "D") then _Htime = time;

if Low = getfield("最低價", "D") then  _Ltime = time;

if _Ltime<_Htime then begin

 

ret=1;

end;

End;

 

但實際執行,跳不出東西,是否我抓取 當日最高價,跟最低價的邏輯有誤?

或是管理員可以給予教導建議,是否有更正確的寫法,可以在  condition 達成時,確認 『今天最高價發生的時間,比最低價發生時間晚』

假設condition 達成的時間為 9:40 ,則確認 9:40分以前的『今天最高價發生的時間,比最低價發生時間晚』 則 ret-=1;

 頻率是 "日"喔

感謝管理員的辛勞與幫忙,謝謝您!

 

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

在日頻率之下,high與getfield("最高價", "D")相同。Low與getfield("最低價", "D")相同。

variable: intrabarpersist _Htime(0);

variable: intrabarpersist _Ltime(0);

if c=h then _Htime=getfield("時間", "Tick");

if c=L then _Ltime=getfield("時間", "Tick");

if _Ltime<_Htime then ret=1;

樂兒 發文於   2024/05/24

許教授您好,感謝回覆,

採用這個寫法的時候,會有不少股票出現錯誤訊息,導致策略無法執行,顯示的錯誤訊息如下

5029 引用的歷史資料不存在。

不知是否因為XQ的系統問題...  請問許教授有遇過一樣的問題嗎? 謝謝您

虎科大許教授 發文於   2024/05/24

不要在歷史K棒跑程式。在腳本開頭加上以下陳述式:

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

樂兒 發文於   2024/05/27

今日測試中,目前沒有錯誤訊訊息,謝謝許教授指導!祝您 平安順心!

XS小編 發文於   2024/05/30

Hello 樂兒,

 

小編補充,由於是要取條件達成之前的最高最低點時間,所以用變數保存時間時應該在條件達成前就開始運算,不該放在 if condition1 ane ... then 裡面。

另外同根Bar的洗價運算中若要保存某次運算的值的話,要用 intrabarpersist 來宣告。

在歷史資料中無法使用應該是因為逐比洗價不支援Tick頻率的資料,故建議您可以改為 getfield("Time", "1")。

 

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

樂兒 發文於   2024/05/31

感謝管理員的說明,延伸請教一個問題,如果,改為使用 getfield("Time", "1"),還需要勾選逐筆洗價嗎?

謝謝管理員的幫忙與回答。

感恩!

 

XS小編 發文於   2024/06/05

Hello 樂兒,

 

使用 getfield("Time", "1") 和是否有勾選逐筆洗價是沒有關係的,勾不勾都可以執行。

但要注意逐筆洗價的情況下變數要使用intrabarpersist宣告才能夠保存在同根Bar洗價運算的值。

發表回覆
Close