求助~回測 print出符合條件,但是沒下單...

  •   104 
  • 最後發表   尼莫  2024 二月 16
尼莫 發文於   2024/02/01

小幫手你好!

我的交易腳本如附檔,現遇到問題是:2375 在2023/11/24、11/28各有符合條件,但是11/27、11/29卻沒有任何下單動作,在符合條件的日期有 print 出,數值條件都符合....怎麼都看不出問題在哪,想請小幫手幫忙找錯誤~先謝謝啦!!

聽網友說用的通訊是SeedNet跟TTN也有差, 哪個通訊才比較可靠呢?

 

附加文件

排序方式: 標準 | 最新
XS小編 發文於   2024/02/02

Hello 尼莫,

 

要麻煩您提供回測的設定 (截圖或回測報告皆可),這樣小編才有辦法測試。

由於您沒有印出time,小編推測您可能是使用在日頻率(強制逐筆洗價),建議您可以一併印出currenttime (逐筆洗價的1分鐘Bar時間)以及 getfield("Volume", "1") (對應的1分鐘成交量)。

若洗價該根1分鐘Bar沒有成交量的話也不會下單。

尼莫 發文於   2024/02/02

小編你好

簡化腳本已經附上,問題仍然存在,你是否可以修改,試試你認為可能的方法? 謝謝!

 

附加文件

XS小編 發文於   2024/02/05

Hello 尼莫,

 

回測的情況下,在當根Bar沒有成交量的時候,以及在當日最後一根1分鐘Bar的時候,系統不會交易。

以6246作範例說明,以截圖中回測的範圍來看,條件成立印出的資訊有4筆,其中在 20240122 與 20240130 有兩筆是在最後一根1分鐘Bar 132900 時符合,故不會交易。

另外20240130 090200 這個觸發在回測報告上是 091400 才進場,因為 090200 到 090400 之間沒有成交量,故不會成交。

附加文件

尼莫 發文於   2024/02/06

小幫手,我問的是2475,附的print檔也是2475,您可否針對有問題的做檢查呢? 感謝~

XS小編 發文於   2024/02/06

Hello 尼莫,

 

小編在回覆時所點開的網頁並沒有附上print檔案,且您的腳本執行上方設定的回測也不會print出該檔案。

截圖是用您的回測設定和腳本所印出的相關檔案 (小編只改了輸出位置)。

可以看到總共印出3筆,但前兩筆的currenttime為0,這應該是因為歷史資料筆數不夠資料讀取筆數使用,故壓縮到回測區間 (回測區間是11/20開始),該筆運算的為非逐筆日頻率資料,也不會交易。

上面提供的印出檔案也是要到12/01號currenttime才有數值,且在那以前都是非逐筆洗價 (資料讀取筆數)。

小編會詢問相關人員看為何此商品回測的資料異常的短。

附加文件

尼莫 發文於   2024/02/06

我發現我在交易中心設定交易開始日期為D日,資料讀取數100筆,頻率為日

跑完之後發現print檔顯示currenttime在D+9那天才開始有數值,在D~D+8這幾天currenttime=0,並且這期間符合條件的訊號都不會出現,試了不同的日期都是如此,請問這是哪裡的問題?

XS小編 發文於   2024/02/07

Hello 尼莫,

 

如果您是執行自動交易策略並設定策略部位計算起點的話,那麼currenttime應該不會為0,因為在即時執行的狀況下,包含資料讀取筆數到策略部位計算期間都會有數值,且是啟動策略當下的時間。

麻煩提供 自動交易中心匯出檔 以及 XQ Log 來確認。

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

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

感謝。

尼莫 發文於   2024/02/07

小編你好,

附檔請查收,再次說明我的問題主要是

(1)為何2375在11/27、11/29都為true,卻未進場,

(2) 在交易中心設定交易開始日期為D日,資料讀取數100筆,頻率為日

跑完之後發現print檔顯示currenttime在D+9那天才開始有數值,在D~D+8這幾天currenttime=0,並且這期間符合條件的訊號都不會出現,試了不同的日期都是如此,以上謝謝!!

附加文件

XS小編 發文於   2024/02/16

Hello 尼莫,

 

1. currenttime = 0 代表腳本正在資料讀取筆數運算,在資料讀取筆數運算時不會進出場。

所以就算您有print出來也不會有交易。

 

2. 因為您腳本中計算時有 highest(close,30) 和 highest(volume,30) 等函數計算。

這代表腳本最初要運算時,需要至少30筆往前的資料。

在沒有另外設定的情況下,資料引用筆數預設為20筆 (少了10筆),故需要壓縮回測範圍。

而這會導致回測範圍被壓縮,造成 D+8天的currenttime為0 (還在資料讀取筆數期間) 的原因。

若不希望發生此狀況,可以使用 setbackbar 來設定資料引用筆數。

如果您將腳本的筆數設定改為

setbackBar(31);

SetTotalBar(100);

 

的話,2375就會在 11/27 時進場。

 

關於資料讀取筆數與資料引用筆數,您可以參考 資料讀取範圍與腳本執行的關係 裡的說明。

 

尼莫 發文於   2024/02/16

感謝小編! 問題已解決 !!

發表回覆
Close