REFX函數(shù)的疑惑,請(qǐng)通達(dá)信工程師幫助解答
作者:通達(dá)信 來(lái)源:cxh99.com 發(fā)布時(shí)間:2013年10月17日
-
咨詢內(nèi)容:
想寫一個(gè)指標(biāo),顯示當(dāng)前bar到最后一個(gè)bar的成交金額累積值,代碼如下:
CB:=CURRBARSCOUNT;
SUMAMO:REFX(SUM(AMO,CB),CB-1),NODRAW;
結(jié)果不正確,顯示的是最后一個(gè)Bar的金額,經(jīng)過(guò)反復(fù)測(cè)試發(fā)現(xiàn)問(wèn)題在于SUM(AMO,CB)中的CB變量被當(dāng)成常量1,無(wú)論用干什么方法都是如此,如果直接寫成常量5、6之類的,結(jié)果是正常的。
因此總結(jié)下來(lái)就是在REFX函數(shù)中,對(duì)CURRBARSCOUNT變量的引用似乎有問(wèn)題,請(qǐng)通達(dá)信工程師解答,以幫助我完成這個(gè)指標(biāo)。
萬(wàn)分感謝!
-
通達(dá)信技術(shù)部:
CB:=CURRBARSCOUNT;
SUM(AMO,CB);
{直接這樣兒寫就好了啊 你的refx(參數(shù)1,CB-1) 將目標(biāo)K線 一直指向的當(dāng)前交易日的K線 所以取的是 當(dāng)前交易日的SUM(AMO,CB)也就是SUM(AMO,1)也就是最后交易日的AMO}
“SUM(AMO,CB)中的CB變量被當(dāng)成常量1”不在于CB一直是1 而是refx的運(yùn)行原理是 在于先固定k先 然后取指定的k線的SUM(AMO,CB) 這個(gè)整體
REFX(SUM(AMO,CB),CB-1) 這個(gè)函數(shù)的運(yùn)行 機(jī)制是這樣兒的
直接上面的寫法 不要refx函數(shù)吧
-
通達(dá)信客服:
首先謝謝版主的回答。關(guān)于具體問(wèn)題,我的需求是計(jì)算向后(未來(lái))若干天的成交金額,所以sum(AMO,CB)不滿足我的需求。
不過(guò)版主的解釋已經(jīng)證實(shí)了我的猜想,REF和REFX等函數(shù)中CURRBARSCOUNT都和一般概念上立的不一致,即使我在前面賦值給變量,進(jìn)行簡(jiǎn)單運(yùn)算,甚至在其它指標(biāo)中輸出,都不能在REFX函數(shù)中使用到,真正的當(dāng)前K線的CURRBARSCOUNT。
個(gè)人建議通達(dá)信研發(fā)部門,能在公式系統(tǒng)中提供一種方法,滿足用戶的這種需求——即預(yù)先記錄好當(dāng)前K線的CURRBARSCOUNT,然后在REF系列函數(shù)中使用。
-
網(wǎng)友交流:
續(xù)上:進(jìn)一步的猜測(cè),通達(dá)信公式系統(tǒng)中目前CURRBARSCOUNT之類的變量賦值都是傳引用,所以導(dǎo)致這種現(xiàn)象。如果提供一種特定賦值方式,實(shí)現(xiàn)的時(shí)候?yàn)閭髦档哪J剑蟾趴梢越鉀Q這個(gè)問(wèn)題。
-
網(wǎng)友交流:
呼吁通達(dá)信增加循環(huán)語(yǔ)句吧,否則許多類似的問(wèn)題無(wú)解。
不過(guò)你這個(gè)具體問(wèn)題倒可以變通:
X:=amo/10000;
S:=sum(X,0);
SumAmo:const(s)-ref(s,1);
注意,amo值有時(shí)太大,有效數(shù)字位數(shù)可能保證不了。