回測時有時候未照腳本進出場

  •   217 
  • 最後發表   無情卻慈悲  2022 三月 30
無情卻慈悲 發文於   2022/03/20

你好,

 

我附檔有附上一個自動交易的回測腳本,

可否請小幫手幫我看一下序號53那一筆,

照腳本的話應是在21:00就應出場並下反向單了,但它卻一直到隔日早上0905才出場。

感謝您。

▼回測設定如下,五分K,有勾每日部位歸0。從2022/3/1到2022/3/20

 

 

 

 

 

 

排序方式: 標準 | 最新
無情卻慈悲 發文於   2022/03/20

 附件在此。

無情卻慈悲 發文於   2022/03/21

補充,我今日3/21跑盤中模擬單,也發現「反向單」它不會自動下單,想請小幫忙幫我看一下以上的附檔是否有問題,謝

XQ小幫手 發文於   2022/03/25

Hello 無情卻慈悲,

 

小幫手這邊沒有看到您附上的回測腳本。

不過猜測可能的原因是有複數的交易指令同時執行,導致您希望的反向指定沒有執行到。

細節可以參考 SetPosition 裡的說明。

最簡單的測試方法就是把反向單的指令移到其他交易指令前面,確保其是第一個執行到的。

無情卻慈悲 發文於   2022/03/25

你好,我把回測的檔案附上來了,之前的沒附成功,抱歉。

附加文件

無情卻慈悲 發文於   2022/03/25

而回測用的腳本也很簡單,應不會有您說的「有複數的交易指令同時執行」如下:

var:_RSI(0);
_RSI = RSI(Close,60);

var:_Avgp(0);
_Avgp =  average(close,60);



//→→多單進場1:
if  position <= 0 
and trueAll(_RSI > 50,2)
//and _RSI > 50
//and close cross Over _Avgp
then begin
    SetPosition(1, MARKET,label:="多單進場1");
    Print(Date,Time,"多單進場1","成本",FilledAvgPrice,"部位",position);
end;




//→→空單進場1:
if  position >= 0 
and trueAll(_RSI < 50,2)
//and _RSI < 50
//and close cross Under _Avgp
then begin
    SetPosition(-1, MARKET,label:="空單進場1");
    Print(Date,Time,"空單進場1","成本",FilledAvgPrice,"部位",position);

end;

 

然後我今日重回測,又發現3個問題,

問題1:

我勾3/1到3/20回測,它連2/25也會去測?

問題2:

更新XQ版本後,原本所測出許多筆會自動留倉到隔日(如同上面發問的序號53) ,竟都不會再發生了,很明顯是XQ的回測有問題嗎嗎?

問題3:

 有勾每日部位歸0,但仍會有被留倉的筆數,如下圖 的序號53,3/9 0435賣出,它收盤沒有歸0,隔日0850才買進。

 

以上望能解答。

 

XQ小幫手 發文於   2022/03/30

Hello 無情卻慈悲,

 

首先,您使用60期的RSI,需要大量的資料讀取筆數,100筆是不夠的。

您可以參考內建的RSI選股腳本,會需要 長度 * 9 的筆數,所以您可以改設為540以上RSI才會算出正確的數值。

小幫手這邊設600,進出場就符合您說的21:00下反向單,21:05出場。

 

1.這部分小幫手會請工程師檢驗看是甚麼原因。

 

2.小幫手退版到 7.07.01 回測跟7.08.01的版本回測是相同的,如果可以的話麻煩您提供之前回測的回測報告。(參考附圖)

小幫手也會詢問相關人士可能是甚麼原因。

 

3.大台期貨日夜盤換日是在 15:00 的時候,您可以將 GetFieldDate("Date") 畫在 FITXN*1.TF 上就看的出來。

回測中的每日部位歸0指的應該是這個時間點。

附加文件

發表回覆
Close