回測和實盤交易結果不同

  •   1.2K 
  • 最後發表   龍槍  5 週前
龍槍 發文於   2021/10/19

Hi 小幫手您好

最近利用撰寫好的交易腳本進行實盤交易時發現實盤交易的賣出時機點,跟回測的時間點不同。

回測的所賣出的時間點是獲利的,但實盤卻是比較早的時候並且是虧損的,因此實盤希望得到的效果跟回測的時候不一樣

想請問這是為甚麼?若要讓實盤和回測賣出的時間點一致或是接近,腳本該怎麼處理?

 

謝謝!!

排序方式: 標準 | 最新
XQ小幫手 發文於   2021/12/21

Hello shinetony,

 

小幫手這邊測試,沒有使用策略雷達,在自動交易中心即時的狀態下日頻率逐筆洗架或1分鐘頻率逐筆洗價都可以正常print出資訊。(參考附圖)

需要麻煩您提供相關的 策略雷達和自動交易中心的匯出檔勾選(包含)腳本 以及 XQ Log 來檢驗。

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

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

感謝。

 

附加文件

shinetony 發文於   2021/12/16

Hi, 小幫手,

    使用你提供的腳本後發現一個 bug , 當單獨使用你的腳本在自動交易即時交易的時候, 抓到的值都是 0, 但是如果同時在策略雷達執行同樣的腳本時, 就可以在自動交易抓到值了, 難怪我一直不停地測試各種方式都無法在即時自動交易的時候抓到大單及特大單的值, 希望你們趕快改掉這一個 bug

XQ小幫手 發文於   2021/12/13

Hello shinetony,

 

當您在即時的狀況下,只要使用

value1 = GetField("買進特大單量","D") + GetField("買進大單量","D");

value2 = GetField("賣出特大單量","D") + GetField("賣出大單量","D");

就可以,不需要使用 intrabarpersist。

GetField("買進特大單量","D") 就是當日的累積量。

而在回測日頻率逐筆洗價的話,需注意每日重置資訊的部分。

附上警示腳本供您參考。

附加文件

shinetony 發文於   2021/12/10

Hi, 小幫手

我目前用這樣的寫法, 回測可以抓到資料執行交易, 但是在即時交易抓到的都是0 導致都沒有交易

var: intrabarpersist BBuy(0); 

var: intrabarpersist BSell(0); 

var: BSum(0);

if getinfo("IsRealTime") = 1 then begin

BBuy  = GetField("買進特大單量","D") + GetField("買進大單量","D");

BSell = GetField("賣出特大單量","D") + GetField("賣出大單量","D");

end else begin

BBuy  = BBuy  + GetField("買進特大單量","1") + GetField("買進大單量","1");

BSell = BSell + GetField("賣出特大單量","1") + GetField("賣出大單量","1");

end;

BSum  = BBuy - BSell;

你有沒有建議的寫法可以在日頻率即時交易逐筆洗價及回測時都可以抓到 當日累積的買進/賣出 特大單量及大單量呢?

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

Hello shinetony,

 

小幫手這邊使用GetField("買進特大單量","D") + GetField("買進大單量","D")可以正常輸出數字。(參考附圖)

需麻煩您提供相關的 策略雷達/交易中心匯出檔勾選(包含)腳本、測試的相關訊息 以及 XQ Log 來檢驗。

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

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

感謝。

 

另外,value1 = value1 +GetField("買進特大單量","1") + GetField("買進大單量","1") 並不會每次洗價都加一次。

細節您可以參考 IntrabarPersist 裡面的說明。

附加文件

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

Hello pure4321,

 

小幫手這邊用比較短的時間測試是正常的。(參考附圖)

需麻煩您詳細告知您是怎麼測的,並提供相關的腳本以及XQ Log來檢驗。

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

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

感謝。

 

附加文件

shinetony 發文於   2021/12/09

請問一下日頻率即時交易逐筆洗價, 要怎麼取得即時當日累計的特大單及大單量 , 我用  GetField("買進特大單量","D") + GetField("買進大單量","D") 取到的值都是 0, 如果用value1 = value1 +GetField("買進特大單量","1") + GetField("買進大單量","1") ,會不會每個 tick 來都加一次, 而重複累加呢? 還是我要取得即時當日累計的特大單及大單量也只能使用分鐘頻率非逐筆洗價呢?

pure4321 發文於   2021/12/08

在日頻率逐筆回測

GetField("Volume","D")[1] 是取得前一日的成交量

average(GetField("Volume", "D")[1], 20)為何不是前20日的成交量平均量,

請問如何做到呢?辛苦您了

XQ小幫手 發文於   2021/11/24

Hello pure4321,

 

在日頻率逐筆回測的時候 GetField("Volume","D") 會取得模擬當下那個1分鐘Bar的當日累積量。

GetField("Volume","D")[1] 則是取得前一日的成交量。

 

如果您使用1分鐘頻率來回測的話,GetField("Volume","D") 會取得模擬當下那個1分鐘Bar的當日累積量。

GetField("Volume","D")[1] 是取得前一日的成交量。

需注意的是,如果您用變數存取的話,如 value1 = GetField("Volume","D"),value1會取得模擬當下那個1分鐘Bar的當日累積量。

但 value1[1] 會取得前1分鐘頻率的當日累積量。(在1分鐘頻率下)

 

簡單來說:

Getfield("Volume", "D")[1] 會取得 GetField 指定頻率的前一根Bar資訊。

value1 = Getfield("Volume", "D");

value1[1] 則會取得您當下商品使用頻率的前一根Bar資訊。

 

關於回測的設定,您可以參考XS教學裡面的 策略雷達回測相關說明 以及 自動交易回測相關說明

 

6457.TW 小幫手測試是可以回測,但是print出來的資訊都是0有誤。

會再和工程師確認問題為何。

感謝。

pure4321 發文於   2021/11/22

6457.TW紘康等少部分幾檔,上述問題日頻率回測不行,

又,GetField("Volume","D"),日頻率回測是得到該分對應日量,

則,GetField("Volume","D")[1],日頻率回測是得到上一分對應日量?還是上一天日量?

是否能做一個回測完整教學?

Show More Posts 發表回覆
Close