[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. No puedo ir a ningún sitio sin ti - 4. - página 544

 
paladin80:

Decidí hurgar un poco en tu código...


Le agradezco mucho que haya analizado mi código. Gracias por tomarse el tiempo de hacerlo.

Estoy empezando a aprender a programar, por lo que estos comentarios son muy importantes y me serán útiles en el futuro.

Ahora vamos al grano:

if (OrdersTotal()>0)
{  for (int i=OrdersTotal()-1; i>=0; i--)
   {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {   if(OrderSymbol() != Symb) continue;
          if(OrderMagicNumber() != 777) continue;
          return;
      }
   }
}

Realmente, la búsqueda completa de órdenes se realiza de esta forma, y el análisis posterior se realiza utilizando las órdenes abiertas (todo está claro aquí)

Symb=  Symbol();
...
Min_Lot= MarketInfo(Symbol(),MODE_MINLOT);
...
Steep=   MarketInfo(Symbol(),MODE_LOTSTEP);

Esta parte del código también se ha modificado, pero los participantes en el foro escriben que el entorno del mercado no siempre está disponible para la función init().

¿Es posible que algunas variables no estén definidas o que me haya equivocado en algo?

No entiendo la lógica de este post - (explico mi opinión sobre este operador)

while(true)
...

Tengo un bloque de gestión de errores.

if (Fun_Error(GetLastError())==1)      // Обработка ошибок
continue;                              // Повторная попытка

Si el error es manejable, vuelve a intentar comprobar las condiciones y abrir la orden.

Y el operador while funciona cuando su valor es verdadero, es decir, resulta que no acepta false.

Gracias chicos por vuestra ayuda.

 
silhouette:

¡Por favor, ayuda!


Lea aquí:https://www.mql5.com/ru/articles/1357 Es simple y sencillo

 
r772ra:


Lea aquí:https://www.mql5.com/ru/articles/1357 Es simple y sencillo

Gracias.
 
Buenos días por favor ayuda, no puedo ajustar mi Asesor Experto (órdenes de apertura y cierre no funcionan como se esperaba (por el cruce de estocástico cada vez), abierto en estocástico muy rara vez y no puedo entender por qué ((((), también todas las órdenes se cierran sólo en stoploss o takeprofit (número de ticket de error, también no puede entender donde el error). gracias por cualquier respuesta:
Archivos adjuntos:
 
Vinin:
No olvide que el entorno del mercado no siempre está disponible en la función init()
Francamente, esta noticia me ha intrigado mucho. He intentado imaginar en qué condiciones el entorno de mercado puede no estar disponible: tal vez un fallo de conexión en el momento de habilitar el EA o si el EA se lanza en sábado o domingo. Yo no he notado esos problemas con el mío. Por un lado, dicen que es posible hacer un bucle en init() para encontrar un valor, pero he aprendido que init() está limitado en el tiempo. Tal vez al principio de start() en la aparición de una nueva barra (al menos en M1) para encontrar los valores del entorno del mercado, es mejor que en cada tick.
 
Pacman:


Le agradezco mucho que haya analizado mi código. Gracias por tomarse su tiempo para hacerlo.

...

Y la sentencia while funciona cuando su valor es verdadero, es decir, resulta que no toma falso.

En el while debes colocar una condición que pueda tomar al menos dos valores, por ejemplo, flag (verdadero o falso). Si el código debe contener una constante (true) en lugar de una condición, el while es inútil. Quite el while (verdadero) y los paréntesis y obtendrá el mismo resultado.
 
Pregunta para los entendidos. En la ayuda de OrderSend(), el deslizamiento es de 3. ¿Es para cotizaciones de 4 dígitos, por ejemplo? Para las cotizaciones de 5 dígitos, ¿podemos dejar 3 o necesitamos 30?
 
paladin80:
Pregunta para los asesores expertos. El OrderSend() en lugar del deslizamiento es 3. ¿Es por ejemplo para las cotizaciones de 4 dígitos? Para las cotizaciones de 5 dígitos, ¿puedo dejar 3 o necesito 30?

Para los de 5 dígitos necesitas 30.

Inserto una construcción de este tipo en init() de cada EA, luego no hay diferencia para DT de 4 o 5 dígitos, lo recomiendo:

  if (Digits==3 || Digits==5){myPoint=Point*10; slpg=slpg*10;}
  else myPoint=Point; 
 
¿quién sabe si se puede aumentar la velocidad de la prueba?
 

Buenas tardes. Pueden aconsejarme: la tarea consiste en dibujar líneas verticales cada minuto. Cómo vincular el dibujo no sólo a los minutos, sino al precio de apertura del minuto. La dificultad estriba en que el precio de apertura del minuto debe identificarse en tiempo no estándar, es decir, no en un minuto. He escrito un fragmento de código, pero no entiendo cómo introducir el precio de apertura del minuto, si la variable inducida se establecerá en un tiempo no estándar

new_Minute=TimeMinute(Time[i]) != TimeMinute(Time[i+1]); // new_Minute

Ind_Buffer_0[i]=0

if(new_Minute && Period()<30 ) Ind_Buffer_0[i]=max;

...y luego el dibujo estándar mediante objetos.

Quizá alguien pueda decirme qué se puede hacer, si es que se puede hacer algo.