你好,
我附檔有附上一個自動交易的回測腳本,
可否請小幫手幫我看一下序號53那一筆,
照腳本的話應是在21:00就應出場並下反向單了,但它卻一直到隔日早上0905才出場。
感謝您。
▼回測設定如下,五分K,有勾每日部位歸0。從2022/3/1到2022/3/20


你好,
我附檔有附上一個自動交易的回測腳本,
可否請小幫手幫我看一下序號53那一筆,
照腳本的話應是在21:00就應出場並下反向單了,但它卻一直到隔日早上0905才出場。
感謝您。
▼回測設定如下,五分K,有勾每日部位歸0。從2022/3/1到2022/3/20


附件在此。
補充,我今日3/21跑盤中模擬單,也發現「反向單」它不會自動下單,想請小幫忙幫我看一下以上的附檔是否有問題,謝
Hello 無情卻慈悲,
小幫手這邊沒有看到您附上的回測腳本。
不過猜測可能的原因是有複數的交易指令同時執行,導致您希望的反向指定沒有執行到。
細節可以參考 SetPosition 裡的說明。
最簡單的測試方法就是把反向單的指令移到其他交易指令前面,確保其是第一個執行到的。
而回測用的腳本也很簡單,應不會有您說的「有複數的交易指令同時執行」如下:
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才買進。

以上望能解答。
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指的應該是這個時間點。
6 評論