有關print的時間點

  •   990 
  • 最後發表   無情卻慈悲  2022 十月 13
無情卻慈悲 發文於   2022/10/11

你好,

如果在60分K下的逐筆洗價,我下面的腳本不是應會正常印出來的嗎?但都沒有,可否請教一下如何改?

if time = 224400

then  begin

print("訊息");

end;

 

 

排序方式: 標準 | 最新
蕎伊斯 發文於   2022/10/11

 60分鐘的time沒有 = 224400 這個規格選項,他必須以小時K切齊

如果非K棒規格時間,可以試試用CurrentTime=224400

無情卻慈悲 發文於   2022/10/11

我有開逐筆洗價,

而不管是用time或CurrentTime=224400

我都印不出耶!

 

musashi 發文於   2022/10/12

currenttime時間建議不要只用 " = ",因為等於是一瞬間,在這一瞬間要出現成交訊號的機率非常低,時間條件可在放寬鬆一點,有成交訊號出現時,XS才會跑腳本print。

無情卻慈悲 發文於   2022/10/12

我的目的是在不同的時間點,印出一些字句,但如果是寫成大於time且小於time的方式,恐怕會一直重複印出,請問有什麼做法嗎?

 

musashi 發文於   2022/10/12

第一要確認條件時間區間內是否有成交訊號。

第二用變數控制印出次數。如下範例

if (time>=100000 and time<100100)
then begin
    if value1=0 //等於0才可以印出
    then begin
        value1=1; //印出紀錄
        print(close);//印出
    end;
end else value1=0;//離開時間區間後,重置value1=0

XQ小幫手 發文於   2022/10/12

Hello 無情卻慈悲,

 

time 回傳的會是Bar的時間,就算您用逐筆洗價,該根bar的time還是相同的,都是220000這根Bar,所以自然不會符合,您可以print出time來就可以確認。

這個例子中應該使用1分鐘頻率的time 來當作條件,也就是 getfield("Time", "1"),這樣才會有 224400 這個時間點。

 

currenttime是會有224400這個時間點,也print得出來 (參考附圖),但只有在回測,因為回測的currenttime會是回傳該根Bar的時間點,逐筆洗價的話則是該分鐘 (1分鐘Bar) 的時間點。

實際上運作時系統時間要剛好等於 224400 的機率並不高。

要檢驗您為什麼print不出來,需要麻煩您提供 回測腳本匯出檔 以及 回測的設定(截圖) 來檢驗。

您可以直接將檔案上傳,也可以Mail至客服信箱 XQservice@XQ.com.tw 且務必附上 討論文章連結網址(小幫手才能盡早處理)。

感謝。

 

感謝 蕎伊斯 和 musashi 的熱心回覆。

附加文件

無情卻慈悲 發文於   2022/10/12

你好,

附檔是策略,設定上如截圖:

感謝

附加文件

XQ小幫手 發文於   2022/10/13

Hello 無情卻慈悲,

 

如同小幫手上面所說,如果您使用currenttime在即時的狀況下,除非洗價腳本運算是剛好在您指定的時間 (要連秒數都相同),不然條件都不會符合。

替代方案就是改用 getfield("Time", "1"),這樣就會只要在那1分鐘洗價條件都會符合。

舉例來說:

if getfield("Time", "1") = 230000 then ... 就會是23:00 ~ 23:01 之間腳本有運算的話都會符合。

發表回覆
Close