Hola, bolsa1.
Disculpa que tarde 8 años en responderte, pero es que he estado muy ocupado últimamente,
A mí lo de dividir el SMA[10](RSI[14]) sobre el SMA[30](RSI[14]), me pone los pelos de punta, porque ¿qué pasa si el denominador es cero o es muchísimo más pequeño que el numerador? Pues pasa que tendremos problemas porque el resultado será infinito o un número astronómicamente grande.
Así que yo modificaría el indicador de Ron Schelling, definiéndolo así, en código ProRealTime:
Código: Seleccionar todo
a = Average[10](RSI[14])
b = Average[30](RSI[14])
IF a = b THEN
RsiSchelling = 50
ELSE
RsiSchelling = 100 * a / (a + b)
ENDIF
Lo de la condición "a = b", es para no tener problemas con el caso de que a = 0 y b = 0, que nos haria dividir por cero si no preguntamos por esta condición. Y no pregunto por "a = 0 AND b = 0", porque preguntando por "a = b" gastamos menos CPU (ya que asignamos 50, sin hacer división, en un mayor número de casos) y la condición es más simple ("a = 0 AND b = 0" es una condición compuesta por 2 condiciones simples, y "a = b" es una condición simple).
Para los que no sepan de que artículo hablamos os dejo el enlace:
Ranking de divisas, por Ron Schelling, y traducido por X-Trader
Así que, tal como lo he codificado, el indicador jamás dará infinito o números astronómicos, sino que nos darà un número entre cero y 100.
Saludos.