策略雷達

  •   406 
  • 最後發表   kenny_lin  2025 一月 20
kenny_lin 發文於   2025/01/09

小幫手您好 請問目前是想於策略雷達警示腳本到5分鐘後再進行觸發 請問如何設定?

謝謝~~

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

符合警示條件時,記錄當下的時間,然後用TimeDiff或TimeAdd函數協助判斷5分鐘到了沒,若到了就警示。

kenny_lin 發文於   2025/01/13

小幫手您好 以下是我針對 觸發頻率設定為K棒內單次觸發 頻率為5分鐘 逐筆洗價 當到5分鐘時條件都符合才跳出警示 的語法 請問是否洽當 謝謝~~

Var: HighTime(0);

if Date <> Date[1] then HighTime = 0;

if condition1 and condition2 and condition3 and condition4 = false and value3>3000 then HighTime = Time;

if HighTime > 0 And Time > HighTime And Time < TimeAdd(HighTime,"M",5) Then 

Begin

End;  

虎科大許教授 發文於   2025/01/14

符合條件就記錄時間,目前時間與記錄的時間差距在5分鐘就執行begin...end之間的程式碼。這樣看起來OK,但是宣告時要加intrabarpersist,亦即 var: intrabarpersist HighTime(0);

kenny_lin 發文於   2025/01/14

小幫手您好 目前主要程式碼是if condition1 and condition2 and condition3 and condition4 = false and value3>3000 then HighTime = Time; 目前更新如下 於執行時還是無法接收到訊息 請問是否哪裡需要修改

var: intrabarpersist HighTime(0);

if Date <> Date[1] then HighTime = 0;

if condition1 and condition2 and condition3 and condition4 = false and value3>3000 then HighTime = Time;

if HighTime > 0 And Time > HighTime And Time < TimeAdd(HighTime,"M",5) Then 

Begin ret =1;End;  

附加文件

虎科大許教授 發文於   2025/01/14

執行之前先在程式碼加上print指令,觀察這幾個condition及HighTime的變化,就應該知道問題所在。

XS小編 發文於   2025/01/20

Hello kenny_lin,

 

小編補充,time 回傳的會是K棒的開始時間,故 Time > HighTime And Time < TimeAdd(HighTime,"M",5) 會不符合。

因為5分鐘頻率下 TimeAdd(HighTime,"M",5) 就會是下一根K棒的Time,而要同時大於這根K棒且小於下一根K棒的時間是不存在的。

建議您可以改用 currenttime (電腦當下時間) 來作計算會比較適合。

 

舉例來說:

var: intrabarpersist HighTime(0);

if condition1 and condition2 and condition3 and condition4 = false and value3>3000 and HighTime = 0 and getinfo("IsRealTime") = 1 then HighTime = Time;    //多次條件符合時只記錄第一次符合的時間

if HighTime > 0 And currenttime > TimeAdd(HighTime,"M",5) Then begin 

    ret = 1;

    HighTime = 0;    //觸發過後變數歸0重新開始計算

    end;

發表回覆
Close