positionprofit在Enum_Data_RolloverRealPrice下的問題
作者:開拓者 TB 來源:cxh99.com 發(fā)布時(shí)間:2020年11月19日
-
咨詢內(nèi)容:
新版.3 ,888合約在復(fù)權(quán)后,POSITIONPROFTI有誤,請測試,代碼如下
Events
??OnInit()
? ? {
? ???SubscribeBar("IC888.CFFEX","5m",20190101,0,Enum_Data_RolloverBackWard);
? ???//AddDataFlag(Enum_Data_RolloverRealPrice);//加上自動映射為真實(shí)價(jià)則positionproft值正確,否則持倉盈虧只要是多單都是虧隕。空單相反。
? ? }
??OnReady()
? ?{
? ?
? ?}
? ?
? ?OnBar(ArrayRef<Integer> indexs)
? ? {
? ???If(Time==0.0930)
? ?? ? Buy(1,Open);
? ???If(Time==0.1330)
? ?? ? Sell(0,Open);
? ???Commentary("PositionProfit= "+Text(PositionProfit));???來源:CXH99.COM
-
TB技術(shù)人員:
首先非常感謝您提出的問題!
我仔細(xì)分析了一下您提出的問題,有些還是很有道理的,有些則恐怕還是原有設(shè)計(jì)更為合理。
1、如果不設(shè)置映射到真實(shí)價(jià)格,測試結(jié)果多單都是虧損的。這個(gè)我找了一下原因是因?yàn)镮C888的換月跳空總體是向下的,這樣RollOver這個(gè)系數(shù)就是大于1的,那么真實(shí)價(jià)格一般是比后復(fù)權(quán)的價(jià)格低的,而測試報(bào)告中EntryPrice取的是復(fù)權(quán)價(jià)格,浮動盈虧的結(jié)算價(jià)卻是按真實(shí)價(jià)格,所以導(dǎo)致都是虧損。這一點(diǎn),我覺得我們的設(shè)計(jì)是有點(diǎn)問題的,兩者應(yīng)該一致,這個(gè)問題我會向公司產(chǎn)品部反饋。
2、但如果設(shè)置了映射到真實(shí)價(jià)格,則EntryPrice、ExitPrice這些函數(shù)取到的是真實(shí)價(jià)格的值,浮動盈虧的計(jì)算也是按照真實(shí)價(jià)格來計(jì)算,我覺得設(shè)計(jì)是沒有問題的。您提到的計(jì)算交易手?jǐn)?shù)的問題,恰恰就是要用真實(shí)價(jià)格來計(jì)算才可能正確,否則算出來的交易手?jǐn)?shù)就錯(cuò)了。而圖表上的價(jià)格還是用復(fù)權(quán)價(jià)格,這樣可以保證策略交易信號不會因?yàn)閺?fù)權(quán)而產(chǎn)生變化,這個(gè)我覺得也是可以。只是有些策略如果同時(shí)用到價(jià)格數(shù)據(jù)和EntryPrice這些交易數(shù)據(jù)時(shí),可能會有些問題,這個(gè)可能要對策略做一些修改。
3、所以,您提到的提供函數(shù)來判斷目前的復(fù)權(quán)和映射真實(shí)價(jià)格的狀態(tài)還是很有必要的。我們系統(tǒng)現(xiàn)在提供了一個(gè)HasRollOver函數(shù),但從使用結(jié)果來看,它反映的是當(dāng)前BAR是否進(jìn)行了除權(quán),這個(gè)和您的要求和我的想法確實(shí)是有差距的。這個(gè)問題我也會反饋給公司。
謝謝您的支持!
?
-
TB客服:
TB老曹,看看我的問題如何解答,1.1.1.3版自動換月有問題
?
-
網(wǎng)友回復(fù):
tblaocai 發(fā)表于 2019-9-16 11:59
首先非常感謝您提出的問題!
我仔細(xì)分析了一下您提出的問題,有些還是很有道理的,有些則恐怕還是原有設(shè)計(jì) ...
我概括一下,對于設(shè)置了復(fù)權(quán)和Enum_Data_RolloverRealPrice的情況,TB目前的方案是直接用realprice下單,測試報(bào)告也是以真實(shí)價(jià)來計(jì)算,這樣是比較準(zhǔn)確,但有一個(gè)問題便是公式的open,close等取的是復(fù)權(quán)后的價(jià)格,而entryprice這些取的又是真實(shí)價(jià),取值不是按一個(gè)標(biāo)準(zhǔn),那么這樣寫公式就需要用戶每次取close價(jià)時(shí)要轉(zhuǎn)換成真實(shí)價(jià),那就意為著之前寫的自定義函數(shù)都得修改,那這可是全部TB使用者都要改自己的函數(shù)啊。所以為了程序簡練,最好統(tǒng)一起來,辦法1.要么entryprice與close都默認(rèn)轉(zhuǎn)為真實(shí)價(jià),不需要通過乘除rollover來轉(zhuǎn)換,只是K線圖上顯示的是復(fù)權(quán)價(jià)。辦法2.要么entryprice與close都是復(fù)權(quán)價(jià),只在下單與報(bào)告中體現(xiàn)為真實(shí)價(jià),這個(gè)辦有一個(gè)問題要注意,就是下單時(shí)計(jì)算手?jǐn)?shù)要以真實(shí)價(jià)來算,兩個(gè)方法應(yīng)該能達(dá)同一個(gè)效果。當(dāng)然如果以后確定就是按1.3版目前這個(gè)方案的話我就只好老實(shí)改代碼了。