Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 430

 
igrok333:

escribió este código.

murmura el meta-editor.



¿Por qué se aparea?


#propiedad estricta

¿Está su pr inicializado?

 
igrok333:

escribió este código.

murmura el meta-editor.
¿Por qué se aparea?


#propiedad estricta

Allí está claramente escrito que se puede utilizar una variable sin valor en la línea 553. Intenta escribir bool pr=false; Esto engañará al compilador pero será mejor que lo compruebes bien. Después de todo, si el tipo de orden es una orden pendiente, seguirá teniendo pr sin valor...

 
Roman Sharanov:

la función OnTick()?

La pregunta fue abordada en el artículo sobre el lenguaje mql4, por lo que inmediatamente me fijé en Time[0].

Tras un examen más detallado, queda claro que se trata de una matriz definida por el usuario.

Y aquí hay un comentario de la documentación:

Nota

La función utiliza una llamada sincrónica, lo que significa que la función espera la ejecución de todos los comandos que se colocaron en la cola del gráfico antes de ser llamada, por lo que esta función puede consumir mucho tiempo. Debe tener esto en cuenta si trabaja con un gran número de objetos en el gráfico.

Dado que un objeto en una coordenada de precio puede tener varios valores, es necesario especificar el número de línea. Esta función sólo puede aplicarse a los siguientes objetos:

  • Línea de tendencia (OBJ_TREND)
  • Línea de tendencia por ángulo (OBJ_TRENDBYANGLE)
  • Línea de Gann (OBJ_GANNLINE)
  • Canal equidistante (OBJ_CHANNEL) - 2 líneas
  • Canal de regresión lineal (OBJ_REGRESSION) - 3 líneas
  • Canal de desviación estándar (OBJ_STDDEVCHANNEL) - 3 líneas
  • Línea con flecha (OBJ_ARROWED_LINE)


 
Artyom Trishkin:

¿Se ha inicializado su pr ?

¿Tiene que ser inicializado? Pensé que era suficiente con declararlo.
Pensaba que se inicializaba por cero cuando se declaraba.
 
STARIJ:

Dice claramente que en la línea 553 es posible utilizar una variable que no tiene valor. Intenta escribir bool pr=false; Esto engañará al compilador, pero es mejor comprobar todo correctamente. Después de todo, si el tipo de orden es una orden pendiente, seguirá teniendo pr sin valor...

gracias por recordarme los pedidos pendientes)



¿Es esta la forma correcta de hacerlo?

 void zakritj_vse_sdelki()
 {
 bool pr;
 for (int i=OrdersTotal()-1; i>=0; i--)       
   {                                        
   if(OrderSelect(i,SELECT_BY_POS)==true)
      {  
         pr=false; 

         if (OrderType()==OP_BUY)    pr=OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(),MODE_BID), 30 );                              
         if (OrderType()==OP_SELL)   pr=OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(),MODE_ASK), 30 );
         
         if (pr==false) Print("закрытие ордера ", OrderSymbol() ," завершилось с ошибкой #",GetLastError());
         if (pr==true) Print("ордер ", OrderSymbol() , " ЗАКРЫТ");
       }
    }
  }  
 
igrok333:

gracias por recordarme lo de las pausas)
¿es esta la forma correcta de hacerlo?

if (pr==false) es equivalente a if (!pr)
if (pr==true) es equivalente a if (pr)

Uso Alerta en lugar de Imprimir - debería aparecer inmediatamente sin abrir el diario. Y no hay información adicional

 
Вместо
if (OrderType()==OP_BUY)    pr=OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(),MODE_BID), 30 );
if (OrderType()==OP_SELL)   pr=OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(),MODE_ASK), 30 );
короче
if (OrderType()==OP_BUY)    pr=OrderClose(OrderTicket(), OrderLots(), Bid, 30 );
if (OrderType()==OP_SELL)   pr=OrderClose(OrderTicket(), OrderLots(), Ask, 30 );
или просто
pr=OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 30 );


 
STARIJ:

if (pr==false) es equivalente a if (!pr)
si (pr==true) es equivalente a si (pr)

Utilizo la Alerta en lugar de la Impresión: aparece instantáneamente en la pantalla sin necesidad de abrir el diario. Y no hay información adicional

En realidad estoy hablando de colocar pr en el código))
 
Дед пенсионер:
¿podemos escribir OrderClosePrice() así?

Obtenemos OrderClosePrice() después de cerrar la transacción.
 
igrok333:
¿Es posible escribir OrderClosePrice() así?

Recibimos OrderClosePrice() después de cerrar la operación.

Puedes hacerlo. Pero ten cuidado. Para una posición abierta, devuelve el precio de cierre. Correspondientemente: para comprar - oferta, para vender - demanda

Razón de la queja: