Características del lenguaje mql5, sutilezas y técnicas - página 175

 

Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading

Características del lenguaje mql5, sutilezas y trucos

fxsaber, 2017.11.30 09:48

Memo

Acción/tipo de programa Cambio de TF o símbolo Cambio de cuenta
Indicador Ejecutar OnDeinit y OnInit, los cambios globales del objeto de clase (reinicio completo). No ocurre nada, excepto que prev_calculado se pone a cero.
EA Ejecuta OnDeinit y OnInit, el objeto de clase global no cambia. Al ejecutar OnDeinit y OnInit, el objeto de clase global cambia (recarga completa).

¿Pueden decirme cómo evitar el reinicio completo del EA cuando se vuelve a registrar (por ejemplo, manualmente)?

No entiendo por qué todo se reinicia al volver a registrar. ¿Es esto un defecto?

 
fxsaber:

Funciona, pero puedes sugerir la macro correcta.

Si a usted no le importa mucho la calidad de sus artesanías, a mí me importa aún menos.

 
Vict:

Si a usted no le importa mucho la calidad de sus artesanías, a mí me importa aún menos.

Aquí es donde se escribe sobre las características de MQL5.

 
fxsaber:

Aquí escriben sobre las características de MQL5.

¿Quién dice que es una característica y no un LU? ¿Hay alguna información en los documentos? En la mayoría de los casos es necesario dar libertad al compilador para que haga todo tipo de optimizaciones. Cuál será el resultado en diferentes casos en el código real - no lo sé, depende del humor del optimizador. Puede que también ejecute este código en cruces y obtenga algunos resultados, ¿debería entonces decirse "mira qué peculiaridad"?

Puedo ejecutar este código en cruces y obtener algunos resultados, y luego me dirán: "mira, ¿cuál es la peculiaridad?

 
Vict:

¿Quién dice que es una característica y no un LU? ¿Hay información en los muelles?

Aquí es donde se escribe sobre cosas que no están en los muelles. Si no, no tiene sentido el hilo.

 
fxsaber:

Aquí es donde se escribe sobre cosas que no están en los muelles. Si no, no tiene sentido el hilo.

Tendría sentido si hubiera comentarios de los desarrolladores, pero por lo demás...

Así que, sí, está escrito en muelles: orden de ejecución, - por lo tanto, todo parece ser legal. Pero de todos modos, dado que en los pluses es realmente feroz ub, me gustaría asegurarme de que la referencia realmente significa exactamente elorden de ejecución y no la asociatividad de los operadores.

 
fxsaber:

¿Puedes decirme cómo evitar un reinicio completo del EA cuando se vuelve a registrar (por ejemplo, manualmente)?

No entiendo por qué todo se reinicia al volver a registrar. ¿Es esto un defecto?

Tuve la tarea de omitir algunos cálculos al volver a registrarme, y de borrar el Asesor Experto al cambiar la cuenta. Se resolvió en un lugar.

Esto es lo que parece cuando simplemente queremos eliminar el Asesor Experto en el cambio de cuenta.

string GetGlobalNameAccount( void )
{
  return(::MQLInfoString(MQL_PROGRAM_NAME) + (string)::ChartID() + "_Account");
}

void SaveAccount( void )
{  
  if (!::GlobalVariableSet(GetGlobalNameAccount(), CurrentAccount))
    ::Alert("GlobalVariableSet - ERROR!");
  
  return;
}

int LoadAccount( void )
{
  int Res = 0;
  
  const string Name = GetGlobalNameAccount();
    
  if (::GlobalVariableCheck(Name))
  {
    Res = (int)::GlobalVariableGet(Name);
    
    ::GlobalVariableDel(Name);      
  }
  
  return(Res);
}

const int CurrentAccount = (int)AccountInfoInteger(ACCOUNT_LOGIN);
int PrevAccount = 0;

int OnInit( void )
{
  PrevAccount = LoadAccount();
  
  bool Res = !PrevAccount || (PrevAccount == CurrentAccount);
  
  if (Res)
  {
    // .....
  }
  else
    Alert("Account is changed! " + (string)PrevAccount + " -> " + (string)CurrentAccount);
    
  return(Res ? INIT_SUCCEEDED : INIT_FAILED);
}

void OnDeinit( const int Reason )
{
  if (Reason == REASON_ACCOUNT)
    SaveAccount();
}


La tarea más sencilla en MQL5 me hace bailar la subversión.

 
Vladimir Simakov:

Tendría sentido si hubiera comentarios de los desarrolladores, pero por lo demás...

Así que, sí, los documentos dicen: orden de ejecución, - por lo tanto, todo parece ser legal. Pero de todos modos, dado que en los pluses es realmente feroz ub, me gustaría asegurarme de que la ayuda realmente se refiere exactamente ala orden de ejecución y no ala asociatividad de los operadores.

Por favor, no ensucie esta rama. Este hilo es sobre las características de MQL5, no de C++

 
Artyom Trishkin:

Por favor, no ensucie esta rama. Este hilo trata de las peculiaridades de MQL5, no de C++

Es extraño, uno escribe en UB y el otro se hace eco de él a ciegas. ¿Está bien que en la Ayuda de ACM.

Nota: La precedencia de las operaciones en MQL5 corresponde a la precedencia С++ y difiere de la prioridad dada en MQL4.

Y lo que se llama "orden de ejecución" en la tabla se llama en realidad "asociatividad" y no tiene efecto sobre el orden de evaluación, que en el caso general no está definido.

Bueno, no importa, es una tarea ingrata, aquí todo el mundo es un puto experto, así que no me meto.

 
Vict:
Atención: La prioridad de las operaciones en MQL5 corresponde a la С++y difiere de la prioridad dada en MQL4.

Lo más probable es que esto sólo se aplique al modo no estricto.

Cientos de personas han estado escribiendo cosas multiplataforma aquí durante años.
Razón de la queja: