RSI bug

  •   105 
  • 最後發表   AllenC  2020 六月 12
AllenC 發文於   2020/06/07

RSI 函式後面使用[] 選擇第幾根 bar時,若[] 內的值是 nthhighestbar 函式計算出來的,會與實際資料不同

例如標的為 2020/6/7 智易

N = nthhighestbar(1,Volume,10) // N為6,bar 日期為5/28

帶入 rsi(close,6)[N]; //計算出來的RSI6值不為5/28 RSI6的 57.51

若是直接輸入 6 :

rsi(close,6)[6]; //計算出來的RSI6值為5/28 RSI6的 57.51

 

以下為整個測試程式碼

//------------------------------

input:Rsi_Length(6,"Rsi天期"),N(6,"大量相對位置");

value1 = rsi(close,Rsi_Length)[nthhighestbar(1,Volume,10)];

value2 = nthhighestbar(1,Volume,10);

value3 = rsi(close,Rsi_Length)[N];

 

outputfield1(value1,"RSI[nthhighestbar]");

outputfield2(value3,"RSI[N]");

outputfield3(value2,"大量相對位置");

 

ret = 1;

附加文件

XQ小幫手 發文於   2020/06/12

Hi AllenC

在RSI的設計原理上(請參考RSI的函數),其實他是需要去比較前一盤的值,然後在判斷是否成長或是衰弱

因此又解釋為"買賣盤強弱指標",我們會需要參考前一次的值來計算RSI(也就是函數腳本內的sumup與sumdown)。

但如果您使用了nthhighestbar,就會導致[]內的值並不是一個固定常數,

而是一個從0開始累計的數字(今天是6,昨天是5,前天是4....依此類推)。

導致sumup與sumdown在這段期間內都不會改變,RSI則是依照sumup與sumdown的變動計算而成

因此在這段期間內,你會發現0-6的數值都是一樣的,值到下一次數值變成0,sumup與sumdown改變,RSI的值才會改變。

--------------------------------

因為是RSI的前人邏輯問題衝突,我們會再提醒使用者,[ ] 僅能使用固定值

以上說明,謝謝您的詢問。

發表回覆
Close