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