求高手解答一個匪夷所思的公式計算問題!
作者:通達信 來源:cxh99.com 發布時間:2016年05月24日
-
咨詢內容:
思路:當前MACD為負值,(即當前光標所處位置為MACD為綠柱子的區域)我想求出上一次MACD為負值時區間內的最低價,即求PQD的值。
表達式如下:
{N1定義為最近一次MACD柱子下穿0軸的位置}
N1:=BARSLAST(CROSS(0,MACD));
{N2定義為最近一次MACD柱子上穿0軸的位置}
N2:BARSLAST(CROSS(MACD,0));
{N3定義為前一次MACD柱子下穿0軸的位置}
N3:REF(N1,N1+1)+N1+1;
{計算前低價格PQD}
M23:N3-N2;
PQD:REF(LLV(L,M23),N2+1);
問題:上述公式驗證時發現PQD的取值不正確。
驗證過程如下:以深圳指數(04)日線為例,將光標移至20150306,按道理此時的PQD的計算結果應該為20150119日的最低值 10634.62。可是取到的卻是20150206的10715.43。
為進一步驗證細節,將計算PQD所需要的各個參數加以輸出。此時M23(將光標移至20150306)輸出為25,沒有問題。將公示中的M23用常數25替代的話,則PQD的取值是正確的10634.62 但是直接用這樣表達PQD:REF(LLV(L,M23),N2+1);結算結果就不正確呢??
請高手賜教!!
-
通達信技術部:
N1:=BARSLAST(CROSS(0,MACD.MACD));{N1定義為最近一次MACD柱子下穿0軸的位置}
N2:=BARSLAST(CROSS(MACD.MACD,0));{N2定義為最近一次MACD柱子上穿0軸的位置}
N3:=REF(N1,N1+1)+N1+1;{N3定義為前一次MACD柱子下穿0軸的位置}
M23:=N3-N2;
PQD:REF(LLV(L,M23),N2+1);{計算前低價格PQD};
說明:引用指標,取值默認為第一個值。所以你上面的公式默認取的是MACD中的DIF.要取MACD的值,得這樣寫"MACD.MACD”。
-
通達信客服:
謝謝回復~~
我漏了一點,我的公式定義的頂部就有以下幾行代碼,應該是這樣的。
DIFF:=EMA(CLOSE,12) - EMA(CLOSE,26);
DEA:=EMA(DIFF,9);
MACD:=2*(DIFF-DEA);
N1:=BARSLAST(CROSS(0,MACD.MACD));{N1定義為最近一次MACD柱子下穿0軸的位置}
N2:=BARSLAST(CROSS(MACD.MACD,0));{N2定義為最近一次MACD柱子上穿0軸的位置}
N3:=REF(N1,N1+1)+N1+1;{N3定義為前一次MACD柱子下穿0軸的位置}
M23:=N3-N2;
PQD:REF(LLV(L,M23),N2+1);{計算前低價格PQD};
現在的主要問題還是主貼里的問題,我將N1 N2 N3 M23的計算結果都輸出檢測了,這些計算都是正確的。可是
PQD:REF(LLV(L,M23),N2+1)這個計算結果不對
這一句我要表達的意思是 從光標處作為當前,求N2+1日之前的M23日這個區間內L的最低值。
-
網友交流:
為什么我的排版發出來就不換行了呢
-
網友交流:
你下載完整的數據在試試,我這里顯示的是正確的:
DIFF:=EMA(CLOSE,12) - EMA(CLOSE,26);
DEA:=EMA(DIFF,9);
MACD:=2*(DIFF-DEA);
N1:=BARSLAST(CROSS(0,MACD));{N1定義為最近一次MACD柱子下穿0軸的位置}
N2:=BARSLAST(CROSS(MACD,0));{N2定義為最近一次MACD柱子上穿0軸的位置}
N3:=REF(N1,N1+1)+N1+1;{N3定義為前一次MACD柱子下穿0軸的位置}
M23:=N3-N2;
PQD:REF(LLV(L,M23),N2);{計算前低價格PQD};
此主題相關圖片如下a1.png: