[¡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 534

 
Alex007:
Como me han echado de otro hilo, voy a intentar preguntarlo aquí, porque no he encontrado una pregunta similar:

Opero mi Asesor Experto en MT4. Todo estaba bien antes de este post. Hoy he decidido desactivar el EA, he pulsado el botón del EA en mi barra de herramientas y en lugar de un smiley ha aparecido una cruz en mi gráfico. Y de repente después de eso se abrió un trato. Uno, dos... más y más. Abrí la configuración del asesor experto y activé OnlyBuy en la ventana correspondiente (el EA sigue desactivado). El trato se hizo de nuevo, ¡y fue una venta inversa! Luego vuelvo a abrir la configuración y desactivo su capacidad de operar (sin marcar). Esto tampoco funciona. El Asesor Experto vive su propia vida. Me pongo en contacto con el servicio de asistencia y recibo la siguiente respuesta: " Lo más probable es que se trate de un problema con su Asesor Experto. Por favor, borre su terminal e instale uno nuevo desde nuestro sitio sin instalar ningún otro EA.
Estimados asesores expertos, ¿podrían decirnos su opinión sobre este tema, especialmente sobre la parte resaltada? Especialmente me gusta la redacción clara "lo más probable" . ¿Cómo puede ser y cuál es el problema?
No se puede saber qué está mal sin revisar el código. Lo primero que se me ocurre es que deinit() tiene una condición para abrir una operación después de que se cierre el programa. ¿De dónde has sacado semejante EA?
 
Lo siento, ¡no hay milagros! No me he dado cuenta de cómo se han abierto dos MT. En uno de ellos, yo comerciaba, y en el otro, la paz. También es una mala suerte para los viejos tiempos - parece que soy bueno con los ordenadores, y aquí hay algo como esto ....
 
VladislavVG:

Nota - en MKL4 las prioridades son ligeramente diferentes a las de C, léase comunes. Por lo tanto, es mejor poner paréntesis.

Gracias. Ahora entiendo el porqué de los paréntesis.

Esta es una vieja historia. Terminé el robot con una canción de mi propia composición. Espero que funcione. Y de repente '\ fin_del_programa' - paréntesis izquierdo desequilibrado C:\TeleTRADE\experts\variantprogram.mq4 (365, 1)

Como siempre, he mirado entre los soportes y he parcheado. Parece que no veo nada. ¿Qué puede ser de nuevo?

int Profit=0;                                
    for (i=0; i<OrdersHistoryTotal(); i++)
   {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true)
   {
    if(OrderSymbol()!= Symbol()) continue;
    if(OrderType()>=2)continue;
    Profit+=OrderProfit();     }}
    
 
 
 if(Profit>AccountBalance()){  
   for(i=0;i<=OrdersTotal();i++){
   if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true)
 { if(OrderSymbol(!= Symbol()) continue;
   if (OrderMagicNumber() != 450) continue;
   if(OrderType()==OP_SELL) 
  OrderClose(OrderTicket(),OrderLots(),Ask,6,Red);
   if(OrderType()==OP_BUY)
  OrderClose(OrderTicket(),OrderLots(),Bid,6,Red);}}} 
//----
   return(0);
  }
//+------------------------------------------------------------------+

//------- :  Коды ошибок
string ErrorDescript(int error_code){string error_string;switch(error_code){
      //---- Коды ошибок, возвращаемые торговым сервером:
      case 0:   error_string="Нет ошибок";                               
 

¡Uf! ¡! Creo que me he quitado el paréntesis de encima.

 
Dimka-novitsek:

¡Gracias! Ahora entiendo el porqué de los paréntesis.

...

Amigos, ¿podéis decirme si esto está permitido o me he perdido algo?

if(OrderType()>=2)continue;
 
paladin80:

Amigos, ¿podéis decirme si esto está permitido o me he perdido algo?


¿Por qué no?

Otra cosa es que en cualquier próxima build los códigos de COMPRA y VENTA pueden cambiar y el código dejará de funcionar bruscamente

 
ilunga:

Por qué no, es una int

Otra cuestión es que en cualquier próxima build los códigos de COMPRA y VENTA pueden cambiar y el código dejará de funcionar bruscamente

Sí, es lógico. Así está mejor:

if(OrderType()=OP_BUY || OrderType()=OP_SELL) continue;
Dimych, si el compilador muestra un lugar donde falta un paréntesis, no significa que ese sea el lugar donde hay que buscar. A veces, si un paréntesis está mal colocado (o falta) al principio del código, el error aparecerá al final. Así que puede buscarlo en el comentario /* ... */.
 
paladin80:

Sí, eso tiene sentido. Es mejor así, entonces:

Dimy, si el compilador muestra un lugar en el que echa de menos un paréntesis, no significa que debamos buscar allí. A veces, si un paréntesis está mal colocado (o falta) al principio del código, el error aparecerá al final. Así que búsquelo comentando el código /* ... */.

Pero no así-) "=" no es una condición, sino una operación de asignación.

Entonces debería ser así:

if(OrderType()!=OP_BUY && OrderType()!=OP_SELL) continue;

o incluso mejor así (para no tener que usarlo dos veces)

int type = OrderType(); 
if(type!=OP_BUY && type!=OP_SELL) continue;
 
ilunga:

No así-) "=" no es una condición, sino una operación de asignación.

Entonces haz lo siguiente:

O mejor aún, así (para no tener que ir dos veces).

El tuyo es mejor, ¡se me olvidó ponerlo!) Probablemente debería ser "||" en lugar de "&&".
 
Dimka-novitsek:

Gracias. Ahora entiendo el porqué de los paréntesis.

Esta es una vieja historia. Terminé el robot con una canción de mi propia composición. Espero que funcione. Y de repente '\ fin_del_programa' - paréntesis izquierdo desequilibrado C:\TeleTRADE\experts\variantprogram.mq4 (365, 1)

Como siempre, he mirado entre los paréntesis, lo siento. Parece que no veo nada. ¿Qué puede ser de nuevo?


 if(Profit>AccountBalance()){  
   for(i=0;i<=OrdersTotal();i++){
   if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true)
 { if(OrderSymbol() != Symbol()) continue; // тут не хватает скобки
   if (OrderMagicNumber() != 450) continue;
   if(OrderType()==OP_SELL) 
  OrderClose(OrderTicket(),OrderLots(),Ask,6,Red);
   if(OrderType()==OP_BUY)
  OrderClose(OrderTicket(),OrderLots(),Bid,6,Red);}}} 
//----
   return(0);
  }
Como la mayoría de los corredores trabajan con cotizaciones de 5 dígitos, un deslizamiento de 6 pips no es suficiente