REFX函數的疑惑,請通達信工程師幫助解答 [通達信]
-
咨詢內容:
想寫一個指標,顯示當前bar到最后一個bar的成交金額累積值,代碼如下:
CB:=CURRBARSCOUNT;
SUMAMO:REFX(SUM(AMO,CB),CB-1),NODRAW;
結果不正確,顯示的是最后一個Bar的金額,經過反復測試發現問題在于SUM(AMO,CB)中的CB變量被當成常量1,無論用干什么方法都是如此,如果直接寫成常量5、6之類的,結果是正常的。
因此總結下來就是在REFX函數中,對CURRBARSCOUNT變量的引用似乎有問題,請通達信工程師解答,以幫助我完成這個指標。
萬分感謝!
-
通達信技術部:
CB:=CURRBARSCOUNT;
SUM(AMO,CB);{直接這樣兒寫就好了啊 你的refx(參數1,CB-1) 將目標K線 一直指向的當前交易日的K線 所以取的是 當前交易日的SUM(AMO,CB)也就是SUM(AMO,1)也就是最后交易日的AMO}
“SUM(AMO,CB)中的CB變量被當成常量1”不在于CB一直是1 而是refx的運行原理是 在于先固定k先 然后取指定的k線的SUM(AMO,CB) 這個整體
REFX(SUM(AMO,CB),CB-1) 這個函數的運行 機制是這樣兒的
直接上面的寫法 不要refx函數吧
-
通達信客服:
首先謝謝版主的回答。關于具體問題,我的需求是計算向后(未來)若干天的成交金額,所以sum(AMO,CB)不滿足我的需求。
不過版主的解釋已經證實了我的猜想,REF和REFX等函數中CURRBARSCOUNT都和一般概念上立的不一致,即使我在前面賦值給變量,進行簡單運算,甚至在其它指標中輸出,都不能在REFX函數中使用到,真正的當前K線的CURRBARSCOUNT。
個人建議通達信研發部門,能在公式系統中提供一種方法,滿足用戶的這種需求——即預先記錄好當前K線的CURRBARSCOUNT,然后在REF系列函數中使用。
-
網友交流:
續上:進一步的猜測,通達信公式系統中目前CURRBARSCOUNT之類的變量賦值都是傳引用,所以導致這種現象。如果提供一種特定賦值方式,實現的時候為傳值的模式,大概可以解決這個問題。
-
網友交流:
呼吁通達信增加循環語句吧,否則許多類似的問題無解。
不過你這個具體問題倒可以變通:
X:=amo/10000;
S:=sum(X,0);
SumAmo:const(s)-ref(s,1);注意,amo值有時太大,有效數字位數可能保證不了。
有思路,想編寫各種指標公式,程序化交易模型,選股公式,預警公式的朋友
可聯系技術人員 QQ: 1145508240 進行 有償 編寫!(不貴!點擊查看價格!)
相關文章
-
沒有相關內容