選股回測問題

  •   622 
  • 最後發表   red  2021 一月 10
red 發文於   2020/12/15

小幫手您好 如附圖,

想詢問一下,選股中心,在寫好的選股策略下,按右健加入策略回測,策略腳本進場用C>0,出場用除權息前一周出場。

為什麼查看 "選股回測下的進場" 與 "加入策略回測的進場" 會不一致(我用C>0理論上是相同的進場條件),

腳本如下:

input: type(1,"0空手 1進場 2出場");

variable: mkp(0), Out_way(0);

condition99= C>0; 

if mkp=0 and condition99 then begin 

        mkp=1;

 end;  

// 除權息前一周出場

value98 = Getfield("除權息日期");

if (mkp=1 and date >= Dateadd(value98,"D",-7) and date < value98) then  begin 

          MKP=0;

          Out_way=4;   

end;   

//========================進出場訊號========================

if type = 1 and mkp[1]=0 and mkp=1 then  begin

        ret=1 ;

end;

if type=2 and mkp[1]=1 and mkp=0 and Out_way=4 then begin

       ret=1;

       retmsg = "除權息前一周出場";

end;  

 

附圖1: 原本選股進場以創意為例(進場次數相當多)

附圖2: 加入策略腳本後的創意進場數大幅減少(除權息不至於影響,是進場不知道為什麼很多改進的地方都沒動作)

 

附加文件

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

red 您好

初步看起來覺得會是出場條件的不同所導致

因為選股功能只支援以"%" 或是持有期間為出場條件

而雷達可以按照您設定的條件做進出場

您可以先從這方面去檢查看看

-------

但詳細原因需要請您提供 

1.選股與雷達的兩份回測報告 回測報告(*BTReport)

2.策略雷達匯出檔案(*.DSRX)匯出時記得勾選包含警示腳本

小幫手才能幫您看看原因 感謝

red 發文於   2020/12/16

檔案如下,我在選股中設定回測 停利8% 停損8%。將選股加入雷達的回測,也是寫一樣的金出場機制。但執行出來的結果完全不一樣。

我檢查選股的回測是沒有問題的,雷達的回測卻跟選股完全不一樣,不知道問題出在哪裡?

附加文件

XQ小幫手 發文於   2020/12/16

red 您好

主要是兩個回測的進場時間不太相同

舉個例子 今天12/16

選股當期進場的話 就會是12/16

但是雷達是盤中執行 而 選股是盤後資料

所以雷達會是隔一天12/17 才進場

----------

第二點,

我有看到您勾選 "最大同時進場次數" 這個也會同樣影響到持有的商品

導致報酬率不同

red 發文於   2020/12/17

小幫手你好,
第一點,這個進場時間差異我有發現,想詢問有辦法在警示腳本中做修改(用日期函數?)嗎? 讓警示腳本觸發的訊號能跟選股那邊是在同一天?

第二點,我觀察如上面所說,交易次數打幅減少,但他不是進場後一直到最後一天才出場,所以我最大進場都選1次,理論上不會影響到訊號觸發,如我一開始所提的問題,很多訊號就自然不見了,這方面有辦法 找原因 跟 修正 嗎?

以上方腳本(進場:5ma金叉20ma。出場:+-8%停利損)台泥為例,選股腳本回測訊號都在。選股加入策略回測一樣的條件,但訊號會消失。

附圖一 選股加入回測的結果訊號消失

附圖二為原本應該要有的進場訊號

附圖三5MA金叉20MA

附加文件

XQ小幫手 發文於   2020/12/23

red 您好

第一點 可以用進場時間來克服  當期進場 or 下期進場

第二點 小幫手測試了一下兩者交易數量是會相同的

您可以試著撰寫一個簡單的腳本  if close>0 then ret=1;  <----選股

ret=1;  <-------策略

去嘗試看看 可以發現,兩者交易數字會是相同的

我覺得最主要的原因是您上方的腳本 

因為該腳本看您的撰寫方式是只適用雷達 

所以需要請您檢視一下策略雷達的設定與構成 感謝

附加文件

shuwiang 發文於   2020/12/23

我遇到類似的狀況,由於進場邏輯為盤後指標,所以希望有雷達回測時「當期開盤」進場的回測選項,不然日頻雷達回測都差一根K,開盤與收盤的差

XQ小幫手 發文於   2020/12/24

shuwiang 您好

這邊必須要說明一下 

我們會設計當期收盤or 下期開盤 

主要原因是這樣比較符合實際交易的合理性

我假設12/23 尾盤盤後資料選出台積電 

然後我用12/23 開盤價格買進  這個在現實生活中不太可能發生吧?

就像是今天台積電盤中已經漲到510元了 我要用開盤500元買一張 這是不可能買到的

shuwiang 發文於   2020/12/24

假設12/23盤後選出台積電,12/24開盤雷達要買進,然後進場價是開盤價,請問雷達回測時,要選哪一個?

現在進場價格,只有[下期開盤價],[當期收盤價]

===================================

還是設計上就是,要User把選股與雷達分成兩個?[選股]使用value1=外資買賣超,然後[雷達]使用value1=外資買賣超[1];然後[雷達][執行商品]選擇[選股]來監控?這種狀況,回測時,進場價格要選哪一個(沒有當期開盤的進場價)

若[雷達]使用value1=外資買賣超; value1>XX ret=1應該是無法盤中執行?我是一直測試不成功

若可以那就比較直覺~畢竟沒有人選股與雷達要用不同的程式,不知是沒搞清楚還是有其他方式執行,還請解惑

pure4321 發文於   2020/12/24

實務操作,如果日頻率,都會在次日開盤後,是否續強續弱,才會決定進出場

但是【回測】進出場價格無此功能,建議新增這個選項,

如果做多,

【次日開盤價漲跌幅】> A%才會進場,< B%才會出場。 

XQ小幫手 發文於   2020/12/25

shuwiang 您好

如果您是利用選股串雷達回測的,那就不會有

"假設12/23盤後選出台積電,12/24開盤雷達要買進,然後進場價是開盤價"

這個選項

因為您只能在雷達中做設定

舉個例子給您聽 

我們分成兩種情況 假設選股策略A

if GetField("外資買賣超","D")<0 and date= 20200724 then ret=1;

我只在2020724 挑中這檔股票

並且我們來觀看 2376技嘉  

當期收盤進場 他會依照0724 進場  下期也就是7/27  (隔了六日沒開盤)

以上應該很好理解 

顯示更多回應 發表回覆
Close