自動交易回測 不能在同一根k棒進場兩個策略

  •   180 
  • 最後發表   bigjohnsonlai  2023 三月 14
bigjohnsonlai 發文於   2023/02/27

我print出來後列在下方表格

本來應該預期的樣子:

我用c[1]去判斷是否符合策略,本來flag=3 ,barcount=30

符合策略1,於是barcount 31的時候要進場改變flag=6和position=99

然後又接著符合策略2也符合flag=6,於是barcount 31再度進場改變flag=31和position=2

 

可是我跑print出來看 他會在barcount31 把flag變成31,這個是對的

但是position他卻還是0 沒有任何改變

然後下一根bar 32的時候才會變99,甚至不會執行position=2

請問這個在自動交易的回測是有bug嗎

 

本來是flag=3,符合策略1以後,flag=6 position=99

flag=6且符合策略2,flag=31 position=2

結果甚至變成flag31 position=99這種無法理解的數值

 

 

 

排序方式: 標準 | 最新
XQ小幫手 發文於   2023/03/03

Hello bigjohnsonlai,

 

由於您沒有提供腳本和回測報告等相關資訊,所以小幫手只能用猜的。

 

setposition 是在當次腳本執行後才對position作調整。

所以在同次執行中print出來的position會是0。

要到下次執行時position的數值才會改變。

 

"符合策略1,於是barcount 31的時候要進場改變flag=6和position=99"

"他會在barcount31 把flag變成31"

 

小幫手不太清楚到底flag是要變成6還是變成31,是否是因為這邊有影響導致後面的邏輯不如您所想。

會建議您將相關數值印出來確認。

另外需注意若策略運作時有勾選逐筆洗價,那麼變數是否要用 IntrabarPersist 來宣告也是會影響執行的狀況。

 

如果要確認問題原因,麻煩您提供交易腳本匯出檔,並告知如何操作的,交易策略/回測的設定為何,使用的商品和發生的日期時間以及XQ Log讓小幫手確認。

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

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

感謝。

bigjohnsonlai 發文於   2023/03/12

小幫手感謝!

我再試試看怎麼整理

程式碼實在是太長又複雜

超過一千行

我還是試不行的話我再寫一個簡短版的請您幫忙

謝謝

XQ小幫手 發文於   2023/03/14

 Hello bigjohnsonlai,

 

小幫手會建議您可以先從短的策略開始撰寫,等到確認沒問題時再一個個組合起來會比較輕鬆。

另外交易函數 (ex. setposition) 有些細節最好是完整看過才會比較清楚系統是如何運作。

除了小幫手上面說的position是在當次腳本執行結束才改變外,還有一點比較需要注意的:

當同次執行中有複數個 setposition 被執行到時,除了第一個以外的setposition將會被忽略。

發表回覆
Close