Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 43

 

Ayúdame a escribir una función que devuelva el valor máximo de ATR entre las barras visibles en la ventana. He buscado por todo internet y no he encontrado nada similar.

Gracias,

 
dr.Vasgenich :

Ayúdame a escribir una función que obtenga el valor máximo de ATR entre las barras visibles en la ventana. He buscado por todo internet y no he encontrado nada similar.

Gracias,

/

extern int p = 4; // Periodo ATR

//------

int inicio()

{

int i;

doble m;

while( i < WindowBarsPerChart() - p )

{

double a = iATR( NULL, 0, p, i );

si ( m < a )

{

m = a;

}

i++;

}

Alert( " El valor máximo de ATR en pips para el número visible de barras es ", m / Point ); //

/////

return(0);

}

 

Boeing747 Gracias. Debería haber escrito aquí enseguida.

Así, la variante final de la función en mi versión tiene el siguiente aspecto

double ATR_Max() {
int i;
doble m;
while( i < WindowBarsPerChart() - p ) {
double a = iATR( NULL, 0, p, i );
si ( m < a ) {
m = a;
}
i++;
}
Alert( " El valor máximo de ATR para el número visible de barras es - ", m );
return(m);
}

 
dr.Vasgenich :

Boeing747 Gracias. Debería haberlo escrito aquí enseguida.

Así, la variante final de la función en mi versión tiene el siguiente aspecto

double ATR_Max() {
int i;
doble m;
while( i < WindowBarsPerChart() - p ) {
double a = iATR( NULL, 0, p, i );
si ( m < a ) {
m = a;
}
i++;
}
Alert( " El valor máximo de ATR para el número visible de barras es - ", m );
return(m);
}

Debo haber cometido un error en while( i < WindowBarsChart() - p )

lo más probable es que la función iATR( NULL, 0, p, i ); calcule los valores de todas las barras del gráfico y pueda, o quizás deba

corregido a while( i < WindowBarsChart() ). Nunca he trabajado con iATR(); debería probarlo alguna vez.

En realidad, puede escribir su función sin utilizar la función iATR(), es decir, en su forma pura.

 
Boeing747 :

Debo haber cometido un error en while( i < WindowBarsChart() - p )

Lo más probable es que la función iATR( NULL, 0, p, i ); calcule los valores de todas las barras del gráfico.

corregido a while( i < WindowBarsChart() ). Nunca he trabajado con iATR(); debería probarlo alguna vez.

Básicamente, puedo escribir su función sin utilizar iATR(), es decir, en su forma pura.


También he pensado ahora que el periodo no tiene nada que ver. Probablemente sería mejor quitarlo.

¿No se puede hacer a través de una matriz? Recoger en un array los valores de todas las APR de la ventana y luego encontrar el máximo utilizando esta función - ArrayMaximum Me temo que mis conocimientos no son suficientes.




 
dr.Vasgenich :

Ahora he pensado que el periodo no tiene nada que ver. Probablemente sea mejor quitarlo.

¿No se puede hacer esto a través de un array? Recoger en un array los valores de todas las APR de la ventana y luego encontrar el máximo utilizando esta función - ArrayMaximum Me temo que mis conocimientos no son suficientes para esto.




Sí, se puede desplazar a través de iATR(); en el bucle para anotar matrices y, a continuación, utilizando ArrayMaximum para extraer el valor máximo de ATR. Pero todavía obtener mantequilla, ya que todavía es necesario utilizar el ciclo para anotar matrices como en la primera opción . pero en la primera versión del máximo se calculó en el proceso de desplazamiento del bucle que es mucho más económico que la opción ArrayMaximum. No hace falta que sepas mucho al respecto. Puedes obtener información detallada sobre el ArrayMaximum en un libro de texto o de consulta.
 
Boeing747 :
Sí es posible desplazar iATR(); en un bucle para puntuar arrays con él y luego usar ArrayMaximum para extraer el valor máximo de ATR. pero de todos modos resulta mante mante manteado especialmente usar un bucle para puntuar arrays como en la primera variante . pero en la primera variante el máximo se calculaba durante el desplazamiento de un bucle que mucho más económico que con una variante ArrayMaximum. No necesita ningún conocimiento especial. Puede encontrar descripciones detalladas sobre ArrayMaximum en un libro de texto o de referencia.

Gracias, intentaré comprobarlo mañana. Una pregunta más, ¿cómo puedo ahorrar recursos de comprobación en esta función, para que el valor máximo se calcule después de que aparezca una nueva barra y no con cada tick?
 
dr.Vasgenich :

Gracias, intentaré comprobar el funcionamiento mañana. Una pregunta más, ¿cómo puedo guardar los recursos del probador en esta función, para que el valor máximo se calcule después de que aparezca una nueva barra y no con cada tick?

Para empezar, puedes probar de esta manera

a nivel global declaran t

y sobre el bucle escribir

si ( t != Tiempo[0] )

{

t = Tiempo[0];

// bucle donde se calcula el ATRmax

}

de esta manera el cálculo en el bucle se hará una vez en la apertura de una nueva barra. quizás haya otras variantes más inteligentes...

 

Boeing747, dr.Vasgenich, chicos, ¿no podéis usar el botón "SRC" o estáis de acuerdo?

 
Zhunko :

Boeing747, dr.Vasgenich, chicos, ¿no podéis usar el botón "SRC" o estáis de acuerdo?

Sigo olvidando usar el botón "SRC". Debe ser un hábito. A los 60 años, es difícil cambiar de opinión. Intentaré usar tu botón mañana
Razón de la queja: