做精細化歷史測評時發現的幾個問題
作者:金字塔 來源:cxh99.com 發布時間:2021年09月01日
-
咨詢內容:
我的精細化歷史測評的幾個參數設定:
前高位置:=peakbars(1,8,1);
前高價:=ref(close,前高位置);
QianGaoDate:=ref(date+19000000,前高位置);
精細化歷史測評時間段:2020年4月15日-10月15日,測試品種247只股,按固定間隔60秒回測
測評結果看日志發現有如下幾個問題,前三個和
peakbars相關,第4個是關于回測時的買入邏輯
:
1、剛開始產生符合判斷條件的交易的第一天內發生peakbars取到的peakbars有問題,
案例:柏楚電子,6月30日判斷突破前高,但前高價
的賦值是
-1.#QO -1.#R%,
QianGaoDate的值是-1,不知道系統是取到哪天的值作為前高了,截圖如下:
此主題相關圖片如下:wx20201024-233032@2x.png
2、取到了前高的值,但基于前高日期查到的前高價和實際當日的收盤價不一致。案例:天邑股份,6月30日突破5月21日的前高,前高價為27.067。但5月21日實際的收盤價是27.28。截圖如下:
此主題相關圖片如下:wx20201024-233402@2x.png
3、如果將
QianGaoDate命名為中文“前高日期”,
前高日期
:=ref(date+19000000,前高位置); msgout(1,numtostr(
前高日期,0)
會導致無法輸出,經過幾次驗證發現,如果將中文的“
前高日期
”改為字母類型的名稱,比如
QianGaoDate,就不會出問題
4、做精細化歷史測評前我已經補充了日線、1分鐘線、5分鐘線等主要數據,買入條件是一旦突破前高,則以前高價、5日均線價格掛單買入。根據回測明細發現,以
天邑股份為例,6月30日
當股價突破前高價時,當前價格已經高于5日均線26.482且之后也一直沒有回踩5日均線位置,但由于當日開盤時曾經跌破過5日均線,所以回測結果顯示5日均線價26.482的掛單也成交了。這在現實情況下是不可能發生的。按說我已經補充了1分鐘和5分鐘的數據,即便不依靠分筆數據,系統也應該可以判斷出不可能在5日均線價成交才對。天邑股份6月30日的分時圖截圖如下:
此主題相關圖片如下:圖片15a.png
?
?來源: www.kzuj.com.cn
-
金字塔客服:
完全的文字描述我們是無法幫助到你的,請將可以呈現問題的公式代碼一并貼出,并最好詳細闡述使用過程。部分的價格不同,建議看一下是否是復權問題產生的
?
-
用戶回復:
經過我排查發現出現前高價
的賦值=
-1.#QO -1.#R%這種詭異情況的原因是由于在我設定的回測時間段內的當前時間往前到回測起始時間peakbars(1,8,1)沒有找到符合條件的峰值。
例如以
柏楚電子為例
,我設定的精細化歷史評測時間段是2020年4月15日至2020年10月25日,當前時間在2020年6月30日
在6月30日檢查peakbars(1,8,1), 由于在4月15日至6月30日這段時間內沒有找到符合8%條件的峰值,導致peakbars(1,8,1)輸出了
-1.#QO -1.#R%,繼而導致我引用
ref(close,
peakbars(1,8,1)
)輸出了
-1.#QO -1.#R%
程序的這種邏輯我認為是有漏洞的,雖然我指定了回測時間段是2020年4月30日開始,但是在計算peakbars指標時,
只要我本地下載的歷史數據足夠,
應該以當前時間往前找出符合條件的峰值位置,哪怕這個峰值位置是在4月30日之前。否則就會導致發生這樣的錯誤
[此貼子已經被作者于2020/10/29 12:11:38編輯過]
?
-
網友回復:
回測是按時間段去判斷的,在這個時間段之前就算有數據也不會去參與計算,所以?peakbars 返回的就是一個空值
?
-
網友回復:
這樣的規則設定不符合實際情況啊,我設置從4月15號開始回測,意味著從4月15號開始就需要開始尋找買點。而判斷是否4月15號有沒有買點,是要基于4月15號之前若干天的歷史數據做判斷的。如果僅因為設置了從4月15號開始回測,就把4月15號之前的指標輸出置空,那等于我實際的有效回測時間就不是從4月15號開始了