回測的時間點

  •   643 
  • 最後發表   無情卻慈悲  2021 七月 16
無情卻慈悲 發文於   2021/06/29

你好,

我在跑回測時,下面的語法中好像不會生效,沒有在規定時間中他在回測中仍會下單,請問我是否該怎麼改,才六讓回測時可以在我指定時間內才能有交易呢?

//可下單時間

condition1  =  (

(currenttime >= 90000 and currenttime <= 130000)

or 

(currenttime >= 150000 and currenttime <= 235900)

or 

(currenttime >= 000000 and currenttime <= 030000)

);

 

排序方式: 標準 | 最新
蕎伊斯 發文於   2021/06/29

currenttime 是指當下實際時間,
回測要使用 Time 

無情卻慈悲 發文於   2021/06/29

請問,那我是否應在在腳本中,除保留上面的currenttime代碼,另再寫一組Time 的來並存,對嗎?

感謝

condition1  =  (

(currenttime >= 90000 and currenttime <= 130000)

or 

(currenttime >= 150000 and currenttime <= 235900)

or 

(currenttime >= 000000 and currenttime <= 030000)

 

);

 

condition2  =  (

(Time >= 90000 and Time <= 130000)

or 

(Time>= 150000 and Time <= 235900)

or 

(Time >= 000000 and Time <= 030000)

);

 

if position = 0 and condition1 and condition2

then SetPosition(1, MARKET);

 

蕎伊斯 發文於   2021/06/29

直接用Time 就可以了,Time 是指K棒開K時間,5分鐘K,090000=實際時間090000~090459

無情卻慈悲 發文於   2021/06/29

感謝 我來試試

無情卻慈悲 發文於   2021/06/30

請問小幫手,我使用 Time無法讓尾盤自動平倉耶(3分K逐筆洗價),一定要用currenttime嗎?

可是用currenttime又在回測中無法生效,可否指點一下?

 

//*尾盤平倉(個股)

input:_hold(1,"1當沖,0不當沖");

if Position <> 0 and SymbolType = 2 //(2為股票、3為期貨)

and _hold = 1

and currentTime > 131800 and currentTime < 132500 

then

begin

SetPosition(0, MARKET,label:="個股尾盤平倉");

//print(date,time,"尾盤平倉",FilledAvgPrice);

end;

XQ小幫手 發文於   2021/07/01

Hello 無情卻慈悲,

 

currenttime 在回測時得到的資訊會與 time 相同。

所以您不需要特別分開用。

 

您一開始提到的問題,會在指定時間外交易,小幫手猜測可能是在指定時間內觸發,可是下一根進場的時候已經在指定時間外了。

第二個問題,您可以用currenttime或time,可是您設定時間限制的時候要小心。

以股票來說好了 3 分鐘頻率在13:25以前的 Bar 為 13:18 跟 13:21 (13:24會是 13:24 - 13:27)。

所以您設為 time >=131800 and time <= 132500 的話應該會交易。

但需注意,若那兩個時間點的Bar沒有交易量的話,是不會下單去交易的。

另外,XS回測並沒有3分鐘頻率可以選擇。

 

以上皆為小幫手的猜測,如果需要更詳細檢查的話需要麻煩您提供 自動交易中心匯出檔包含(勾選)交易腳本、回測報告、問題發生的時間點與商品(截圖也可以)以及XQ Log。

Log資料夾(預設路徑:C:\SysJust\XQLite\LOG)直接壓縮後提供即可。

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

感謝。

無情卻慈悲 發文於   2021/07/01

哈囉,

我回測時是用5分K喔。

然後您說的觸發時機點的問題,我個股一次有十多檔而且是用洗價模式,絕對會觸發,

我原本是前日把原本的程式碼從cuttenttime改成time,並仔細觀用1點20分時的動靜,發現沒有觸發,我立即停止策略並馬上改回currentime,就馬上觸發平倉了,所以這一點,是否可以請小幫手直接測試一下我上面的code呢?

若真的沒有,我再整理log檔,因log檔實在很大,而且時間點已是好幾日前的事了。

這一樣可以改成time,就可以測試了,真的感謝您。

//*尾盤平倉(個股)

input:_hold(1,"1當沖,0不當沖");

if Position <> 0 and SymbolType = 2 //(2為股票、3為期貨)

and _hold = 1

and currentTime > 131800 and currentTime < 132500 

then

begin

SetPosition(0, MARKET,label:="個股尾盤平倉");

//print(date,time,"尾盤平倉",FilledAvgPrice);

end;

 

 

 

 

XQ小幫手 發文於   2021/07/05

Hello 無情卻慈悲,

 

小幫手測試過 Time > 131800 and Time < 132500 跟 time >=131800 and time <= 132500 都可以,只是第二個會出場的比較早。(先自行手動進場,再設定依庫存讓自動交易尾盤出場)

附上測試的自動交易中心匯出檔以及圖片供您參考。

 

如果要更詳細檢查的話需要麻煩您提供 自動交易中心匯出檔包含(勾選)交易腳本、回測報告、問題發生的時間點與商品(截圖也可以)以及XQ Log。

Log資料夾(預設路徑:C:\SysJust\XQLite\LOG)直接壓縮後提供即可,不需要特別整理。

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

感謝。

附加文件

無情卻慈悲 發文於   2021/07/14

你好,

我今日測試仍是一樣,尾盤時仍不會出場,提供log檔給您。

//*尾盤平倉(個股)

input:_hold(1,"1當沖,0不當沖");

if Position <> 0 and SymbolType = 2 //(2為股票、3為期貨)

https://drive.google.com/file/d/1pc0kNmmtjhCq3_E9lGYEEsYSO7TlcRW3/view?usp=sharing

 

and _hold = 1

and Time > 131800 and Time < 132500 

then

begin

SetPosition(0, MARKET,label:="個股尾盤平倉");

end;

XQ小幫手 發文於   2021/07/16

Hello 無情卻慈悲,

 

小幫手已將您提供的Log轉交給工程師。

但是工程師反映您的自動交易中心Log沒有內容。(參考附圖)

可以的話麻煩您在壓縮一次7/14日的Log讓工程師確認。

感謝。

 

由於您提到使用currenttime可以正常出場,小幫手建議您可以先改用currenttime來運行。

實際上currenttime在回測時也是會有資料的(等同於time),只有在預讀筆數時不會有資料。

您可以實際測試看看 print(date, time, currentime); 並跑回測就可以知道其運作方式。

回測也是可以使用currentime的。

附加文件

發表回覆
Close