Discusión sobre el artículo "Crear un Indicador Multidivisa Usando un Número de Buffers de Indicador Intermediarios"

 

Artículo publicado Crear un Indicador Multidivisa Usando un Número de Buffers de Indicador Intermediarios:

Últimamente se ha dado un aumento reciente en los análisis de conglomerados del mercado FOREX. MQL5 abre nuevas posibilidades para investigar las tendencias del movimiento de pares de divisas. Un elemento clave de MQL5 que lo diferencia de MQL4, es la posibilidad de usar una cantidad ilimitada de buffers de indicador. Este artículo describe un ejemplo de la creación de un indicador multidivisa.

Figura 6. Stochastis por los índices de divisas

Autor: Alexey Klenov

 

sería útil que dichos indicadores también ordenaran éste

en función de sus valores. Si existe tal función, por favor compártela, para no inventar una bicicleta.

 
Prival:

sería útil ordenar esto también en dichos indicadores

en función de sus valores. Si existe tal función, por favor compártela, para no inventar una bicicleta.

No hay ninguna función lista, pero creo que no será difícil de esbozar.

19.05.2010

Aquí se realiza

Archivos adjuntos:
 

Gracias.

Lo único que me gustaría señalar es que el método de sincronización no siempre funciona. He aquí un ejemplo. Agujero entre comillas durante 24 horas, pero todo está sincronizado (((.

Esto es muy malo. ¿Por qué es así que no puedo entender, y lo más importante, ¿qué hacer al respecto?

 
Prival:

Gracias, señor.

Lo único que me gustaría señalar es que el método de sincronización no siempre funciona. He aquí un ejemplo. Agujero entre comillas durante 24 horas, pero todo está sincronizado (((.

Esto es muy malo. ¿Por qué es así que no puedo entender, y lo más importante, ¿qué hacer al respecto?


El indicador utiliza 2 tipos de sincronización

1 por el número de barras (debe haber más barras en el gráfico que el historial requerido por defecto 500 barras) esta condición se cumple aparentemente.

2 por la hora de apertura de la barra cero en cada par de divisas - esta condición aparentemente también se cumple.

Creo que merece la pena añadir un tercer tipo de sincronización para comprobar la hora de apertura de cada barra en cada par por analogía con el segundo tipo de sincronización.

Como voy a estar un poco más libre - voy a hacer este tipo también.

 
olyakish:

....

Creo que vale la pena añadir un tercer tipo de sincronización para comprobar la hora de apertura de cada barra en cada par por analogía con el segundo tipo de sincronización.

En su imagen y similitud hice la función bool init_tf(...).

//+------------------------------------------------------------------+
//| Inicialización de los gráficos de los pares de divisas implicados.
//| y comprobación de sincronización de datos|
//+------------------------------------------------------------------+
//| en.|
//| mas[] es una matriz de nombres de los caracteres requeridos |
//| time_0 - hora actual del bar[0]|
//| count_Bars - número requerido de barras |
//+------------------------------------------------------------------+
bool init_tf(string &mas[], datetime time_0, int count_Bars) { 
   bool     rez=false;              // indicador de éxito
   int      copied=0,               // número de datos copiados
            counter=0,              // contador de errores
            tmp_bars=0;             // para comprobar el número de barras disponibles
   datetime tmp_time[1];            // array para comprobar el tiempo de barra
   
   f_comment("Hay una sincronización en curso".);
     
   for(int i=0; i<count_symbol; i++)  {
      //Print("i=",i," ",cuenta_símbolo," ",mas[i]);
      tmp_bars=Bars(mas[i],PERIOD_CURRENT);
      if(tmp_bars<count_Bars) { // comprobar el número de barras
         Print("i=",i," No hay suficientes bares (", mas[i],"-",fTimeFrameName(_Period),") MaxBars=",MaxBars," > Bars=",tmp_bars);
         counter++;
      }
      ResetLastError();
      copied = CopyTime(mas[i],PERIOD_CURRENT,0,1,tmp_time);
      if(copied < 1) { // error de copia
         Print("i=",i,"Error de copia (", mas[i],"-",fTimeFrameName(_Period),") №",_LastError," (",ErrorDescription(_LastError),")");
         counter++;
      }
      if(tmp_time[0]!=time_0) { // la hora no coincide
         Print("i=",i,"Sin sincronización horaria (", mas[i],"-",fTimeFrameName(_Period),") delta ="",(long)(time_0-tmp_time[0])/60," min");
         counter++;
      }
   }// fin for(int i=0; i<k; i++)
   
   if(counter==0) {  // todo va bien. no hay errores
      rez=true;
      f_comment("Todo. De acuerdo.");
   } 
   else f_comment("No hay sincronización".+(string)counter);

   ChartRedraw( );
   return(rez);
}

Seleccioné 12 pares que estarán en el campeonato. Hice un indicador RVI_ALL sólo con el fin de estudiar la sincronización. Lo puse en marcha. Resultado.

2010.05.30 16:55:26 RVI_ALL (EURUSD,M1) i= 10 Sin sincronización de tiempo ( GBPJPY - M1 ) delta = 1 min

2010.05.30 16:55:26 RVI_ALL (EURUSD,M1) i= 5 Sin sincronización horaria ( AUDUSD - M1 ) delta = 1 min

2010.05.30 16:55:26 RVI_ALL (EURUSD,M1) i= 1 Sin sincronización horaria ( GBPUSD - M1 ) delta = 1 min

Es domingo, no hay barras (última barra) en estos símbolos. El siguiente tick, sólo el lunes. Entonces me acordé de este artículo gráfico sin agujeros https://www.mql5.com/es/articles/1407.

Y habrá agujeros. Habrá. Debemos luchar contra ellos de alguna manera. En principio, se puede hacer lo mismo que se describe en el artículo. Pero tengo una pregunta.

El indicador se cuelga en un solo gráfico. Y si hay un intercambio de historia en este símbolo, puedo saber sobre él, prev_calculated se pondrá a cero.

Pero, ¿cómo sé que los otros símbolos tenían un intercambio de historia o los datos acaba de llegar con un gran retraso?

 
Prival:

Y habrá agujeros. Habrá agujeros. Hay que tratarlos de alguna manera. En principio, se puede hacer lo mismo que se describe en el artículo. Pero tengo una pregunta.

El indicador se cuelga en un solo gráfico. Y si hubo un intercambio de la historia en este símbolo, puedo averiguarlo, prev_calculated se pondrá a cero.

Pero, ¿cómo sé que los otros símbolos tenían un intercambio de historia o los datos sólo llegó con un gran retraso?


1 O bien no permitir que se dibuje el indicador si hay un agujero en el historial y sondear periódicamente el historial en el momento de "parchear" el agujero. (Un nuevo tick en el gráfico actual o un temporizador).

2.O dibujar el indicador sólo hasta el agujero, siempre que el agujero en el histórico esté lo suficientemente lejos.

y modificar ligeramente esta función

bool init_tf(string &mas[], datetime time_0, int count_Bars, int shift) 
и далее по тексту 
copied = CopyTime(mas[i],PERIOD_CURRENT,shift,1,tmp_time);


Luego llame a esta función en un bucle (de 0 a shiftbars).

En este caso

shift

será la posición de la barra en el instrumento actual y TF, que comprobamos para la sincronización con otros instrumentos.

 

No tengo forma de saber que hay un agujero en la historia.

https://www.mql5.com/ru/forum/1111/8747#comment_8747

La única salida es copiar la hora y hacer un bucle a través de todo el array, pero esto de nuevo puede ser un fastidio, es un círculo vicioso ( ((

Si los desarrolladores no cambian el concepto de https://www.mql5.com/es/articles/1407 para hacer gráficos sin agujeros, puede resultar que sea imposible sincronizarlo todo.

 
Prival:

No tengo forma de saber que hay un agujero en la historia.

https://www.mql5.com/ru/forum/1111/8747#comment_8747

La única salida es copiar la hora y hacer un bucle a través de todo el array, pero esto de nuevo puede ser un fastidio, es un círculo vicioso ( ((

Si los desarrolladores no cambian el concepto de https://www.mql5.com/es/articles/1407 para hacer gráficos sin agujeros, puede resultar que sea imposible sincronizarlo todo.

Utiliza la sincronización por buffers time[] y no habrá confusiones.

Basta con que una llamada a la cita vaya acompañada de una comprobación previa por tiempo, y entonces todo estará sincronizado.

Aunque estoy de acuerdo en que el camino no es fácil y puede haber muchos errores.

 

¡Hola!

Tengo dudas sobre la corrección de la fórmula del índice dólar, quizás sean falsas

¿Podría alguien explicarme con más detalle esta fórmula y cómo surgió?

 


"El índice dólar es un valor de tipo double calculado mediante una fórmula que amablemente me ha proporcionado Neutron".

¿Por qué citar fórmulas y hacer referencia al nombre de otra persona? ¿Tiene siete ojos en la cabeza? Resulta que primero hay que leer el artículo y luego preguntar a los autores de las fórmulas? Si él es el autor, entonces que dé el enlace de donde las saca.