Pregunta sobre el indicador - página 5

 
Oh, una última pregunta

¿Es más típico contar hacia adelante o hacia atrás cuando se construyen indicadores que pueden ser utilizados en los EAs?

¿Crea uno más problemas que el otro o es sólo una cuestión de preferencia y diseño?

Por favor, asesórese

Gracias

 
De vez en cuando echa un vistazo a este artículo: https: //www.mql5.com/en/articles/1456 puede ser un poco desalentador pero sigue con él, poco a poco, una vez que lo entiendas habrás aprendido sobre Indicadores, EAs y sus diferencias.
 
Agent86:
Ah una última pregunta

¿Es más típico contar hacia adelante o hacia atrás cuando se construyen indicadores que pueden ser utilizados en EA's

¿Crea uno más problemas que el otro o es sólo una cuestión de preferencia y diseño?

Típicamente muchos de los Indicadores que he visto cuentan i++, en mi humilde opinión esto es incorrecto... un gráfico se construye de la izquierda a la derecha, las velas viejas están a la izquierda las nuevas a la derecha. Cuando un indicador procesa las barras antiguas de un gráfico (para poder empezar a procesar la(s) barra(s) más actual(es)), ¿no debería hacerlo de una manera representativa de la forma en que funcionará en los datos en vivo?

Los indicadores técnicos no son lo mío, he tenido que familiarizarme con ellos por necesidad, pero mi experiencia con ellos es pequeña, también agradecería otras respuestas de gente más experimentada.

 

Por lo general, en lo que a mí respecta, durante el comercio real, los conjuntos enteros de precios de barras lejanas en el pasado son bastante irrelevantes. Sólo tal vez ese puñado de recientes, en cualquier marco dado.

En este sentido, prefiero 'transferir' la lógica del indicador, si son lo suficientemente buenos, a alguna función o lib donde el EA puede utilizar directamente, en lugar de llamar a iCustom y leer los buffers, etc. Esto puede ser problemático, no lo olvides.

Así que, para mí un buen indicador es aquel que es capaz de permitirme hacer precisamente eso.

 
Creo que voy a experimentar un poco con cada uno, pero me parece que preferiría incrementar hacia adelante desde 0 sin embargo, ¿cómo se incrementan los indicadores estándar?

Si quisiera utilizar iFractals para algo útil en un EA parece que la señal se produce de forma natural; y si quisiera referirse en el tiempo a un iFractal anterior, entonces i++ el cambio a un iFractal anterior

Pero cuando veo los EA de la gente y aparecen indicadores en los gráficos. ¿Están utilizando indicadores iCustom e indicadores que han añadido o es esto típicamente puesto en el propio EA y cuando se abre el EA se produce automáticamente?

Estoy tratando de resolverlo todo

 
RaptorUK:
De vez en cuando echa un vistazo a este artículo: https: //www.mql5.com/en/articles/1456 puede ser un poco desalentador pero sigue con él, poco a poco, una vez que lo entiendas habrás aprendido sobre Indicadores, EAs y sus diferencias.
Lo haré gracias.

No quiero seguir luchando pero prefiero aprender todo lo que hay sobre MQL4 para poder codificar mis propias ideas y también contribuir a la base de código un poco.

Voy a seguir leyendo gracias de nuevo
 
Hola

¿Puede alguien confirmar si estoy considerando este código correctamente?

¿Mi declaración de impresión se refiere al iFractal anterior?

//maybe something like this to count back to the previous iFractal for reference
//needs work     
    for(i=0; val1==val3; i++)
      {
      val1=iFractals(NULL, 0, MODE_UPPER,i);
      val3=iFractals(NULL, 0, MODE_UPPER,0);
      if (val1 > 0)
         {
         Print (val1, " = val1");
         }
        }
Es lo único que se me ocurre con mis limitados conocimientos hasta ahora.

De todos modos, ¿hay algo malo en este método para volver al iFractal anterior si es que eso es lo que he creado aquí?

Parece correcto en teoría por lo que puedo decir?

Por favor, asesórese

Gracias

 

Cuando obtienes un iFractal el valor es > 0, ¿sí?

Así que, por ejemplo, si quieres saber dónde estaban los últimos iFractales SUPERIOR y INFERIOR sólo tienes que hacer algo así....

val1 = 0; val2 = 0; i = 0;

while( val1==0 && val2==0)
   {
   if (iFractals(NULL, 0, MODE_UPPER,i) > 0 && val1==0) val1 = i;
   if (iFractals(NULL, 0, MODE_LOWER,i) > 0 && val2==0) val2 = i;
   i++;
   }
Print("Last UPPER Fractal at ", val1, " Last LOWER Fractal at ", val2);
 
for(i=0; val1==val3; i++) <--- val1==val3??? This is indeed, "tricky"
       {
      val1=iFractals(NULL, 0, MODE_UPPER,i);
      val3=iFractals(NULL, 0, MODE_UPPER,0);
      if (val1 > 0)
         {
         Print (val1, " = val1");
         }
        }

Honestamente, es la primera vez que veo esto, para la condición de terminación del bucle. Es difícil...

 

A mí me parece genial... Todo lo que tienes que hacer es probarlo dentro del back-tester. Así es como lo haría yo.

void start(){
   double val1=0,val3=0;
   for(int i=0; i<=3; i++){
      val1=iFractals(NULL, 0, MODE_UPPER,i);
      val3=iFractals(NULL, 0, MODE_UPPER,0);
      if(val1>val3){
        Print("Value_1="+val1+" TimeOf_Fractal="+TimeToStr(TimeCurrent()));
        break;
      }
   }
}

No recuerdo cómo se forman los Fractales. Creo que se forman en la tercera barra. Y considera las dos barras anteriores y posteriores.

Guarde el código de arriba como un EA y ejecute una prueba corta. Puede adjuntar el indicador algráfico de la prueba retrospectiva para confirmarlo.

Esto es lo que obtuve:

2011.10.06 06:38:49     2011.01.02 23:00  De_Bugger EURUSD,M1: Value_1=1.33710000 TimeOf_Fractal=2011.01.02 23:00
Razón de la queja: