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

 

Buenas tardes.

Por favor, ¿puede decirme cómo modificar esta función para eliminar el error (el tamaño de las variables locales es demasiado grande (más de 512kb))?

double DTWDistance(double &s[], double &t[])
{
   int slenght = ArraySize(s);
   int tlenght = ArraySize(t);
   double dtw[1000][1000];
   int i, j;

   dtw[0, 0] = 0.0;
   for (j = 1; j <= tlenght; j++)
   {
      dtw[0, j] = 1000000.0;
   }
  
   for (i = 1; i <= slenght; i++)
   {
      dtw[i, 0] = 1000000.0;
   }

   for (i = 1; i <= slenght; i++)
   {
      for (j = 1; j <= tlenght; j++)
      {
         dtw[i, j] = Distance(s[i], t[j]) + MathMin(dtw[i - 1, j], MathMin(dtw[i, j - 1], dtw[i - 1, j - 1]));
      }
   }

   return (dtw[slenght, tlenght]);
}
 
Craft:

Buenas tardes.

Por favor, ¿puede decirme cómo modificar esta función para eliminar el error (el tamaño de las variables locales es demasiado grande (más de 512kb))?

double DTWDistance(double &s[], double &t[])
{
....
   return (dtw[slenght, tlenght]);
}
Para rehacerla, es necesario saber qué resuelve su función y para qué tareas se utiliza
 
Vitaly Muzichenko:
Para rehacerla, hay que saber qué resuelve la función y para qué tareas se utiliza.
Buenos días, Vitaliy.

He intentado averiguar cómo solucionarlo, así que he adjuntado un simple fragmento de código del indicador WmiFor30 por ejemplo. ¿Puede utilizar este ejemplo para mostrarme cómo solucionar este error?

Archivos adjuntos:
WmiFor30.mq4  25 kb
 
Craft:
Buenos días, Vitaly.

Desde cierta compilación de MT4 he comenzado a recibir un error durante la compilación (el tamaño de las variables locales es demasiado grande (más de 512kb)) de diferentes códigos, traté de entender cómo lidiar con ello y por ejemplo pegué lo que pensé que era un simple fragmento de código del indicador WmiFor30. ¿Puede utilizar este ejemplo para mostrarme cómo solucionar este error?

No sé cuál es el principio de esto, pruébalo, verás el arreglo
Archivos adjuntos:
WmiFor30.mq4  25 kb
 
Vitaly Muzichenko:
No sé qué tiene, pruébalo, verás cómo funciona.
Gracias, es interesante.
 

Pregunta gráfica:

Hay un diseño como este

for(long currChart = ChartFirst();currChart != -1; currChart=ChartNext(currChart)) {
 if(currChart == график тестера) continue; // Что сюда написать?
  ObjectSetInteger(currChart,"Sync",OBJPROP_BGCOLOR,clrGreen);
}

¿Cómo puedo saber que el gráfico no es el principal sino que está abierto en modo tester y saltarlo?

 
Hola!
Hoy es domingo:
TimeCurrent()=1478300399, que corresponde a 2016.11.04 22:59 - viernes
DayOfWeek()=5, que es bastante natural ))

Pregunta: Por favor, dígame cómo determinar programáticamente en init(); que ahora, cuando un EA se adjunta a un gráfico, el día libre es el domingo ?
Sin referencia a TimeLocal():
 
Leo59:
¡Hola!
Hoy es domingo:
TimeCurrent()=1478300399, que corresponde a 2016.11.04 22:59 - viernes
DayOfWeek()=5, que es bastante natural ))

Pregunta: ¿Podría decirme cómo determinar programáticamente en init(); que ahora, en el momento de adjuntar el EA al gráfico, el día libre es el domingo?
Sin referencia a TimeLocal():
¿Ayudará?
 
Vitaly Muzichenko:
¿servirá de algo?
Gracias por el consejo. Pero, :

AccountInfoInteger(ACCOUNT_TRADE_ALLOWED) puede devolver false en los siguientes casos:

  • no hay conexión con el servidor de comercio. Se puede comprobar con TerminalInfoInteger(TERMINAL_CONNECTED));
  • la cuenta de operaciones se ha cambiado al modo de sólo lectura (se ha enviado al archivo);
  • el comercio en la cuenta ha sido prohibido en el lado del servidor de comercio;
  • la conexión a la cuenta de operaciones se ha realizado en modo inversor.

Aquí si sólo : el comercio está prohibido en el lado del servidor de comercio;

No es del todo correcto ))


Aunque, en principio, se puede probar el boolIsTradeAllowed();.

¡¡¡¡Muchas gracias Vitaly!!!!

 
Por desgracia, no funciona.

init();
if(IsTradeAllowed()) Print("Trade Allowed");
if(!IsTradeAllowed()) Print("El comercio NO está permitido");


Dice: "Comercio autorizado"

Tiene que haber otra manera. ¿Cómo lo hago?

Razón de la queja: