Cualquier pregunta de un PROFI a un SUPER PROFI - 1. - página 40

 
olyakish:

¿puede darme un ejemplo de qué número ha fijado

¿20 o 0,00020?


¡Por supuesto que 20! Siempre se fija en puntos:

   int      slippage,            // проскальзывание

¡Pero eso no es suficiente para un diferencial de 5 dígitos! Como ya se ha aconsejado anteriormente, es razonable que haya más margen, o mejor aún, que se duplique el margen.

 
borilunad:

¡Por supuesto, 20! Siempre en puntos:

¡Pero eso no es suficiente para un diferencial de 5 dígitos! Como se aconseja más arriba, lo más sensato es una mayor dispersión, o mejor aún, duplicar la dispersión.

Gracias, soy consciente de ello. Has respondido a una pregunta que no iba dirigida a ti.

 
olyakish:

Gracias, soy consciente de ello. Has respondido a una pregunta que no iba dirigida a ti.


Lo siento, no sabía que estabas haciendo un examen. ;)
 

¿Existe un modo en el terminal en el que se registran las caídas?

Me refiero a los cuelgues silenciosos, cuando el terminal se cierra sin error.

Quiero encontrar la razón por la que el terminal a veces se bloquea durante la optimización. La estrategia utiliza dll. Todo el código está envuelto en try - catch, con su propio logging, pero no muestra ningún error, sin embargo el terminal se cuelga a veces en la genética masiva. El sistema en general es indetectable, puede estrellarse en 100 iteraciones, o puede sobrevivir en 10.000, con un conjunto y un rango de parámetros absolutamente idénticos.

El administrador de tareas no muestra ninguna fuga de memoria (entiendo que no es la mejor herramienta para estos fines, pero aun así).

 
TomKein:

¿Existe un modo en el terminal en el que se registran las caídas?

Me refiero a los cuelgues silenciosos, cuando el terminal se cierra sin error.

Quiero encontrar la razón por la que el terminal a veces se bloquea durante la optimización. La estrategia utiliza dll. Todo el código está envuelto en try - catch, con su propio logging, pero no muestra ningún error, sin embargo el terminal se cuelga a veces en la genética masiva. El sistema en general es indetectable, puede estrellarse en 100 iteraciones, o puede sobrevivir en 10.000, con un conjunto y un rango de parámetros absolutamente idénticos.

El administrador de tareas no muestra ninguna fuga de memoria (entiendo que no es la mejor herramienta para estos fines, pero aun así).

En mi opinión, la dll del probador no funciona, por lo que no ralentiza el proceso.
 

¿Por qué escribir algo de lo que no tienes ni idea?

 
TomKein:

¿El terminal tiene un modo en el que registra las caídas?

Si el terminal te avisa del fallo, puedes volcarlo manualmente y luego usarlo para resolverlo.

Si el terminal se cierra sin la ventana de notificación de fallo, tienes que hacer el volcado por ti mismo. Tengo un proyecto llamado breakpad de chrome, no es muy difícil de conectar con casi cualquier proyecto y escribe los volcados de forma fiable. En una ocasión depuré un dll para la terminal de esa manera.

 

¿Hay alguna manera de obtener el nombre de la variable como una cadena?

int varTakeProfit = 1;
Print( VarName( varTakeProfit ), " = ", varTakeProfit ); // varTakeProfit = 1

string VarName( int Var )
{
   ???
}
 
#define  VarName(x) #x


int varTakeProfit = 1;
Print( VarName( varTakeProfit ), " = ", varTakeProfit ); //  varTakeProfit = 1

 
Andrey Khatimlianskii:

¿Hay alguna manera de obtener el nombre de la variable como una cadena?

No existe tal cosa en MQL. Si surge una tarea de este tipo, hago lo siguiente:

struct ValueAndName
{
   double   fValue;                     // Значение переменной
   string   sName;                      // Имя переменной

   ValueAndName(double _fValue, string _sName)
   {
      SetData(_fValue, _sName);
   }

   void SetData(double _fValue, string _sName)
   {
      fValue = _fValue;
      sName = _sName;
   }
};

VarAndName g_stVarTakeProfit(12.0, "VarTakeProfit");
VarAndName g_stVarStopLoss(20.0, "VarStopLoss");

void OnStart()
{
  Print("Значение переменной ", g_stVarTakeProfit.sName, " равно: ", g_stVarTakeProfit.fValue);
  Print("Значение переменной ", g_stVarStopLoss.sName, " равно: ", g_stVarStopLoss.fValue);
}