Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 1259

 

Por la tarde.

Un par de preguntas sobre el probador en MT5:

1) En MT5, en el modo de prueba visual del Asesor Experto, todos los indicadores que se calculan a través de iCustom en el código del Asesor Experto se aplican al propio gráfico. ¿Cómo se puede desactivar/ajustar?

2) Tengo una sola prueba en el probador con el "modo visual con la visualización de los gráficos, los indicadores y el comercio" marcada, y luego tengo la misma prueba con la marca desactivada (sin visualización). En el primer caso, el gráfico de balance se dibuja con bastante normalidad, mientras que en el segundo caso es sólo una línea recta en algunas celdas. ¿Con qué puede estar relacionado?

 
satorifx:

Por la tarde.

Un par de preguntas sobre el probador en MT5:

1) En MT5, en el modo de prueba visual del Asesor Experto, todos los indicadores que se calculan a través de iCustom en el código del Asesor Experto se aplican al propio gráfico. ¿Se puede desactivar/ajustar de alguna manera?


1.TesterHideIndicators().

Документация по MQL5: Общие функции / TesterHideIndicators
Документация по MQL5: Общие функции / TesterHideIndicators
  • www.mql5.com
Задает режим показа/сокрытия индикаторов, которые используются в эксперте. Функция предназначена для управления видимостью используемых индикаторов только при тестировании. По умолчанию на графике визуального тестирования показываются все индикаторы, которые создаются в тестируемом эксперте.  Также эти индикаторы показываются на графике...
 
Cómo distinguir entre los eventos de eliminación de un objeto gráfico y el cambio de nombre de un objeto gráfico. En ambos casos se genera un evento de borrado. ¿Cómo puedo distinguir uno de otro?
 
leonerd:
Cómo distinguir entre los eventos de eliminación de un objeto gráfico y el cambio de nombre de un objeto gráfico. El evento de borrado se genera en ambos casos. ¿Cómo se distingue uno de otro?

No se puede. Renombrar es, borrar y crear uno nuevo. Por lo tanto, trate de atrapar la creación después de la eliminación.

 
Los comentarios no relacionados con este tema han sido trasladados a "Preguntas de los principiantes de MQL4 MT4 MetaTrader 4".
 

¿Puedes decirme qué escribir para obtener números aleatorios de 6 dígitos?

int Random() {
 int r=MathRand(); // 100000 -> 999999
  return(r);
 }
 
Vitaly Muzichenko:

¿Puedes decirme qué escribir para obtener números aleatorios de 6 dígitos?

He encontrado esta solución

int Random(int min,int max) {
   int v=0;
   MathSrand(GetTickCount());
   while(true) {
      v=MathRand()*2*MathRand();
      if(v>=min && v<=max)
         break;
     }
   return(v);
  }
 
Vitaly Muzichenko:

Encontré esta solución

Vitaly, esta no es la mejor solución.

En primer lugar, es mejor que uses un bucle do while en ese caso.

En segundo lugar, en mi opinión, es más seguro obtener un número mayor de 6 dígitos en la exponenciación que en la multiplicación. Pero en este caso es posible conseguir INF. Pero puedes limitar el valor de la potencia... En mi ejemplo, la potencia no es superior a 16.

/********************Script program start function*******************/
void OnStart()
 {
  double dr = 0,
         df = 0;
  srand(GetTickCount());
  do
   {
    dr = fabs(rand());
    df = fabs(rand());
   }
  while((dr == 1 || df == 1) && !IsStopped());
  double dp = pow(dr, fmod(df, 16));
  Print(DoubleToString(fmod(dp, 1000000), 8));
 }/*******************************************************************/

Y tomar el resto de la división y obtener un número de seis dígitos.

 
Alexey Viktorov:

Vitaly, esta no es la mejor opción.

En primer lugar, es mejor utilizar un bucle do while en ese caso.

En segundo lugar, en mi opinión, es más seguro obtener un número mayor de 6 cifras cuando se eleva a una potencia que cuando se multiplica. Pero en este caso es posible conseguir INF. Pero puedes limitar el valor de la potencia... En mi ejemplo, la potencia no es superior a 16.

Y toma el resto de la división obteniendo un número de seis dígitos.

Gracias, he sustituido la parte del código.

 
Vitaly Muzichenko:

Gracias, he sustituido una parte en el código.

¿Y cuál fue el resultado? No pretendo ser infalible...))