Ayuda a la codificación - página 362

 
triip:
Chicos necesito un poco de ayuda para codificar la relación RSI y SMA.

Como se ve en la imagen, hay señales (flechas arriba-abajo), pero algunas de ellas son señales falsas. Así que decidí eliminar las señales falsas con RSI14 y SMA20 en él.

La lógica detrás de esto es muy fácil, la flecha hacia arriba debe aparecer si RSI14 está por encima de SMA20. La flecha hacia abajo debe aparecer si el RSI está por debajo de la SMA20.

He marcado algunas flechas hacia arriba mal, porque el RSI es demasiado alto, pero esa parte la puedo codificar yo mismo.

He encontrado muchos códigos de cruces de RSI<MA, pero la mayoría de ellos van en largo/corto si aparece el cruce. Pero necesito un término donde el RSI esté POR ENCIMA o POR DEBAJO y entonces hacer algo.

Tanto he encontrado por ahora, Tengo que usar IRSI y matriz para que pero no puede poner ese código juntos yo.

triip

¿Has comprobado el publicado aquí : https://www.mql5.com/en/forum/general

 
mladen:
triip ¿Has comprobado el publicado aquí : https://www.mql5.com/en/forum/general

Sí, pero todo lo que encuentro es una señal de cruce. Necesito condiciones si el RSI está por encima/por debajo de la SMA.

Entiendo que en primer lugar tengo que declarar lo que significa POR ENCIMA y lo que significa POR DEBAJO, después de eso puedo usarlos en la sentencia IF.

 
mladen:
triip


¿Has comprobado el que se ha publicado aquí : https://www.mql5.com/en/forum/174476



Sí, pero todo lo que encuentro es una señal de cruce. Necesito condiciones si el RSI está por encima/por debajo de la SMA.


Entiendo que en primer lugar tengo que declarar lo que significa POR ENCIMA y lo que significa POR DEBAJO, después de eso puedo usarlos en la sentencia IF.

 
triip:
Sí, pero todo lo que encuentro es una señal de cruce. Necesito condiciones si RSI está por encima / debajo de SMA. Entiendo que en primer lugar tengo que declarar lo que significa POR ENCIMA y lo que significa POR DEBAJO, después de que puedo usarlos en la sentencia IF.

triip

Ni idea de lo que rsi estaban utilizando para obtener esas señales en su imagen, así que ... eso es todo lo que puedo decir. Sin el código no puede ayudar más

 
mladen:
triip No tengo ni idea de qué rsi estabas usando para obtener esas señales en tu imagen, así que ... eso es todo lo que puedo decir. Sin el código no puedo ayudar más

Lo siento, no mencioné que las señales de flecha no provienen de RSI. es otro código que utilizo. Pero vi que el RSI con SMA ayudará a evitar señales erróneas. Es por eso que me gusta editar el código de la señal para que sea capaz de identificar las condiciones de RSI también.

Lo que necesito es:

Las señales de flecha vienen, pero todas ellas no son verdaderas señales. Así que antes de la flecha viene entonces tiene que haber otro si comprobar lo que controla las condiciones RSI.

if (mi código actual && RSI está por encima/debajo de la SMA)

{ mostrar flecha

}

Necesito esa parte roja.

 
triip:
Lo siento, no mencioné que las señales de flecha no provienen del RSI. es otro código que uso. Pero vi que RSI con SMA ayudará a evitar señales erróneas. Es por eso que me gusta editar el código de la señal para que sea capaz de identificar las condiciones RSI también.

Lo que necesito es:

Las señales de las flechas vienen, pero todas ellas no son verdaderas señales. Así que si la flecha viene entonces tiene que haber otro si comprobar lo que controla las condiciones de RSI.

if (mi código actual && RSI está por encima/debajo de SMA)

{ mostrar flecha

}

Necesito esa parte roja.

triip

Tienes que hacer lo siguiente :

1. Guardar los valores de RSI en un buffer

2. Utilizar iMAOnArray() para calcular el SMA de esos valores de RSI

3. Compare el valor del RSI guardado y el valor del valor calculado por iMAOnArray() y esa es su condición

 
mladen:
triip

Tienes que hacer lo siguiente :

1. Guardar los valores de RSI en un buffer

2. Usar iMAOnArray() para calcular el SMA de esos valores de RSI

3. Compare el valor del RSI guardado y el valor del valor calculado por iMAOnArray() y esa es su condición

Entonces, ¿1 y 2 algo así?

1.

#property indicator_buffers 2

extern int rsi_p = 14;

extern int MA_Period=20;

extern int MA_Shift=0;

extern int MA_Method=0;

extern int NumberOfBarsToCalculate = 10000;

double Buffer0[];

double Buffer1[];

double Ma[];

double RSi[];

int init()

{

IndicatorBuffers(4);

SetIndexBuffer(0,Buffer0);

SetIndexBuffer(1,Buffer1);

SetIndexBuffer(2,Ma);

SetIndexBuffer(3,RSi);

return(0);

}

[/CODE]

2.

[CODE]int start() {

int shift;

double rsi = 0;

for(shift=NumberOfBarsToCalculate-1;shift>=0;shift--){

RSi[shift] = iRSI(NULL,0,rsi_p,PRICE_CLOSE,shift);

}

for(shift=NumberOfBarsToCalculate-1;shift>=0;shift--){

Ma[shift] = iMAOnArray(RSi,0,MA_Period,MA_Shift,MA_Method,shift);

Buffer0[shift] = RSi[shift];

Buffer1[shift] = Ma[shift];

}

return(0);

}

 
triip:
¿Entonces 1 y 2 algo así?

1.

#property indicator_buffers 2

extern int rsi_p = 14;

extern int MA_Period=20;

extern int MA_Shift=0;

extern int MA_Method=0;

extern int NumberOfBarsToCalculate = 10000;

double Buffer0[];

double Buffer1[];

double Ma[];

double RSi[];

int init()

{

IndicatorBuffers(4);

SetIndexBuffer(0,Buffer0);

SetIndexBuffer(1,Buffer1);

SetIndexBuffer(2,Ma);

SetIndexBuffer(3,RSi);

return(0);

}

[/CODE]

2.

[CODE]int start() {

int shift;

double rsi = 0;

for(shift=NumberOfBarsToCalculate-1;shift>=0;shift--){

RSi[shift] = iRSI(NULL,0,rsi_p,PRICE_CLOSE,shift);

}

for(shift=NumberOfBarsToCalculate-1;shift>=0;shift--){

Ma[shift] = iMAOnArray(RSi,0,MA_Period,MA_Shift,MA_Method,shift);

Buffer0[shift] = RSi[shift];

Buffer1[shift] = Ma[shift];

}

return(0);

}

Sí, también puedes hacerlo así

Y cuando lo necesites, simplemente compara RSi y MA buffer y siempre podrás ver su posición relativa

 
mladen:
Sí, también puedes hacerlo así Y cuando lo necesites, simplemente compara RSi y MA buffer y siempre podrás ver su posición relativa

Impresionante, muchas gracias mladen

 
mladen:
aprendiz de codificador Aquí hay un indicador que tiene un procedimiento de ordenación de este tipo (es la ordenación de matriz de 2 dimensiones): spearman_rank_correlation_nmc.mq4

mladen

¿Algún ejemplo de c/c++ que haga lo mismo?