Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 35

 
alxm:
La documentación dice que no hay que esforzarse.
Bien, entonces.
 
alxm:
La documentación dice que no es necesario molestarse.

Pero la frase"Para los objetos que contienen cadenas y matrices dinámicas, se llama a ZeroMemory() para cada miembro" es un poco ambigua. O bien la propia función ZeroMemory realiza esta puesta a cero, o bien el programador debe realizar la llamada él mismo para cada miembro que contenga un array dinámico.

...aunque. Los casos de inaplicabilidad están claramente especificados.

 
Yedelkin:
Pero la frase"Para los objetos que contienen cadenas y matrices dinámicas, se llama a ZeroMemory() para cada miembro" es ambigua. Esta puesta a cero la realiza la propia función ZeroMemory o el propio programador debe poner a cero cada matriz dinámica.
¿Y la frase"para matrices de objetos complejos se llama a ZeroMemory() para cada elemento" debe entenderse como una llamada a poner a cero cada elemento por separado también?
 
alxm:
¿Y la frase"Para arrays de objetos complejos se llama a ZeroMemory() para cada elemento" debe entenderse también como una llamada a cero de cada elemento por separado?
Bueno, y como último recurso se puede comprobar fácilmente. :)
 
alxm:
¿Y la frase"Para arrays de objetos complejos se llama a ZeroMemory() para cada elemento" debe entenderse también como una llamada a cero de cada elemento por separado?
Pues sí, compara el significado del verbo ruso "producido" con el significado del verbo ruso "ocurre" :) Respuesta: no, no debería.
 
Yedelkin:
Sí, compara el significado del verbo ruso "producido" con el significado del verbo ruso "ocurre" :) La respuesta es no, no debería.
Estoy de acuerdo. La documentación debe redactarse de forma que no se piense en una doble interpretación.
 

¡Buenas tardes! Supongamos que cierro parte de una posición abriendo una posición inversa. ¿Qué stop loss y profit debo fijar? ¿Probablemente será el que he puesto, y no el que tenía? No, no puede ser, voy a abrir una operación inversa para reducir la posición y el beneficio y la pérdida son los mismos que en la anterior. En definitiva, me he confundido. Por favor, ayúdenme a aclararlo.

Además, la estructura tiene un error

 MqlTradeRequest request={0};
      MqlTradeResult result={0};

      request.action= TRADE_ACTION_DEAL;
      request.magic =MagicNumber;
      request.symbol=symb;
      request.price=BID
      request.deviation=30* Point(symb);
      request.volume=Lot;
      request.sl=s;
      request.tp=t;
      request.type=type;
      OrderSend(request,result);  

'desviación' - algún operador esperado htghtgfhthf.mq5 103 15 operador calculado.... Bien, calculado.

'Punto' - recuento de parámetros erróneo htghtgfhthf.mq5 103 30

Creo que todo es correcto... En resumen, por favor, dime qué poner en él, por lo que no juraría?

 
Dimka-novitsek: Además, la estructura está maldita con

Esto es lo que dice:

Point(symb);

No se proporcionan argumentos para esta función.

Véase también la descripción del campo de desviación. No es necesario asignarle valores dobles.

 

Esta es la situación. Quiero establecer el lote para la posición opuesta, para ello averiguo el lote de la operación, que participó en esta posición combinada, y establezco la posición opuesta, es decir, me gustaría tratar de establecer. Este lote lo reconozco con la función HistoryDealGetDouble( TicetTojSdelki,DEAL_VOLUME).

De todos modos, aquí está la función y su llamada

    if ( HistoryDealGetInteger( TicetTojSdelki,DEAL_TYPE)== DEAL_TYPE_BUY){
     OrderSendSELL( Symbol(),"OP_SELL",  HistoryDealGetDouble( TicetTojSdelki,DEAL_VOLUME), 10,10, 300,  300, " com " , 600, 600,0)
  ;}
  
  
                                                          }
 
   
   }
   
   
   
   
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+     
 ulong OrderSendSELL(string symb, string OP_POZA, double Lot, double BIDd,int slip, double  s,  double  t, string com, int MagicNumber, datetime expiration,color c){
  
         ENUM_ORDER_TYPE   type;
         if(OP_POZA=="OP_SELL"){type=ORDER_TYPE_SELL;}
        double BID =BID( symb);
          if(OP_POZA=="OP_BUY"){type=ORDER_TYPE_BUY;}
            BID =ASK( symb);
          

      MqlTradeRequest request={0};
      MqlTradeResult result={0};

      request.action= TRADE_ACTION_DEAL;
      request.magic =MagicNumber;
      request.symbol=symb;
      request.price=BID
     
      request.volume=Lot;
      request.sl=s;
      request.tp=t;
      request.type=type;
      OrderSend(request,result);    
      
        return (result.   deal );       }
 
 //+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double BID(string symbol) 
  {
   MqlTick last_tick;
   SymbolInfoTick(symbol,last_tick);
   double BID=last_tick.bid;
   return(BID);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double ASK(string symbol) 
  {

   MqlTick last_tick;
   SymbolInfoTick(symbol,last_tick);
   double ASK=last_tick.ask;
   return(ASK);  
  }

'Volumen' - algún operador esperado htghtgfhthf.mq5 104 15

'Lote' - la expresión no tiene efecto htghtgfhthf.mq5 104 22

Es la propia estructura la que se regaña. Dowble variable... Lote es igual a lote... No lo entiendo.

 
¡¡¡Gracias!!!
Razón de la queja: