Preguntas de los principiantes MQL4 MT4 MetaTrader 4 - página 23

 
scomoroh:
Sí, gracias, todo arreglado, sin errores. Se ralentiza, sí, mucho. ¿Aconsejarías qué dirección tomar para optimizarlo o habrá que reescribirlo todo?

Se crean y borran demasiados objetos en cada tick, debería limitarse de alguna manera, por ejemplo, no se borran todos los objetos, sino sólo los dibujados en las últimas 1-2 barras.

Yo, por ejemplo, en un caso similar, en lugar deObjectsDeleteAll() en start() usé dicha función:

void deletelast()
{
   for(int i=ObjectsTotal()-1;i>=0;i--)
   {
      string name=ObjectName(i);
      if(StringFind(name,"Shadows.",0)>-1)
      {
         datetime crtm=(datetime)ObjectGetInteger(0,name,OBJPROP_CREATETIME);
         if(crtm>=iTime(Symbol(),0,1))
         if(!ObjectDelete(name)) Print("ObjectDelete error# ",_LastError);
      }
   }
}
 

¿Podríais decirme si es posible gestionar el permiso de negociación de este EA desde el mismo?

¿es decir, utilizar la variable MQL_TRADE_ALLOWED?

Por ejemplo, si el diferencial es grande, entonces prohíbe el comercio (pero no para el asesor experto)

Sólo que no sé cómo configurar esta variable. La asignación directa de 1 o 0 no funciona.
 
harbor:

¿Podríais decirme si es posible gestionar el permiso de negociación de este EA desde el mismo?

¿es decir, utilizar la variable MQL_TRADE_ALLOWED?

Por ejemplo, si el spread es grande, entonces prohíbe el comercio (pero no para el EA)

Sólo que no sé cómo configurar esta variable. No puedo ponerlo directamente a 1 o 0.

Este estado

https://www.mql5.com/ru/docs/runtime/tradepermission

Документация по MQL5: Программы MQL5 / Разрешение на торговлю
Документация по MQL5: Программы MQL5 / Разрешение на торговлю
  • www.mql5.com
Программы MQL5 / Разрешение на торговлю - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Pero es posible controlarlo.

Sólo hay que hacer un algoritmo del programa.

En cualquier punto del algoritmo y bajo cualquier condición, puede salir del programa con el comando

return(0);
 
Hola! Soy nuevo en este difícil negocio y me enfrento constantemente a nuevos obstáculos. Estoy tratando de escribir un EA, pero no puedo resolver el problema con el marco de tiempo del indicador que mi EA utiliza para entrar. La esencia del problema es la siguiente: De acuerdo con las condiciones, necesito que en el marco de tiempo de 15 minutos en el indicador de la línea de señal estocástica estaba por debajo del nivel de 20. Exactamente a los 15 minutos. ¡TF! De hecho, resulta que la línea de señal cruza el nivel 20 en otros marcos de tiempo (1; 5; 30 min.) y mi Asesor Experto funciona falsamente. Necesito filtrar todos los plazos, y dejar sólo 15 min. Ese asesor no tendría en cuenta los cruces en otros marcos temporales. Agradecería cualquier ayuda
 
TimBerg:
Hola! Soy nuevo en este difícil negocio y me enfrento constantemente a nuevos obstáculos. Estoy tratando de escribir un EA, pero no puedo resolver el problema con el marco de tiempo del indicador que mi EA utiliza para entrar. La esencia del problema es la siguiente: De acuerdo con las condiciones, necesito que en el marco de tiempo de 15 minutos en el indicador de la línea de señal estocástica estaba por debajo del nivel de 20. Exactamente a los 15 minutos. ¡TF! De hecho, resulta que la línea de señal cruza el nivel 20 en otros marcos de tiempo (1; 5; 30 min.) y mi Asesor Experto funciona falsamente. Necesito filtrar todos los marcos temporales y dejar sólo el de 15 minutos. Que EA no ha considerado los cruces en otros TFs. Le agradecería su ayuda.
Mostrar un fragmento de código sobre cómo leer la señal del indicador en su EA
 
Renat Akhtyamov:
Muéstrame un fragmento de código sobre cómo lees la señal del indicador en tu Asesor Experto
No lo recuerdo de memoria, te lo enseñaré cuando llegue a casa
 
Renat Akhtyamov:

Pero es posible controlarlo.

Sólo hay que hacer un algoritmo del programa.

En cualquier punto del algoritmo y bajo cualquier condición, puede salir del programa con el comando

return(0);

entonces el programa dejará de ejecutarse, pero necesito que continúe.

Supongo que tendría que poner un montón de condiciones.

 
harbor:

entonces el programa dejará de ejecutarse, pero necesito que continúe

Supongo que tendré que hacer un montón de condiciones.

¿Qué podemos hacer si el diferencial ha subido? Si tienes que continuar, ¿qué tiene que ver la difusión?

(c)entonces prohíbe el comercio (pero no detiene el EA)= Si prohíbe el comercio, ¿cómo va a seguir funcionando? ¿Qué sentido tiene?

 
harbor:

entonces el programa dejará de ejecutarse, pero necesito que continúe

Supongo que tendré que hacer un montón de condiciones.

Así es, es un programa).