小幫手您好 請問目前是想於策略雷達警示腳本到5分鐘後再進行觸發 請問如何設定?
謝謝~~
符合警示條件時,記錄當下的時間,然後用TimeDiff或TimeAdd函數協助判斷5分鐘到了沒,若到了就警示。
小幫手您好 以下是我針對 觸發頻率設定為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;
符合條件就記錄時間,目前時間與記錄的時間差距在5分鐘就執行begin...end之間的程式碼。這樣看起來OK,但是宣告時要加intrabarpersist,亦即 var: intrabarpersist HighTime(0);
小幫手您好 目前主要程式碼是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;
執行之前先在程式碼加上print指令,觀察這幾個condition及HighTime的變化,就應該知道問題所在。
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;
6 評論