[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 593

 
Dimka-novitsek:
Lo siento, ¿qué delimitadores?


un punto y una coma. Bueno, los delimitadores de la lista son diferentes, coma y punto y coma.

Intente importar con los delimitadores correctos. O rehacer la configuración regional con los delimitadores correctos. Buena suerte

 
¡¡¡¡Gracias!!!! Sí, hay un punto ahí. ¿Y cómo se cambia la configuración regional a los delimitadores correctos?
 
¿En qué orden se debe instalar el software de Ganzilla? ¿O debo publicar en el hilo correspondiente?
 
Dimka-novitsek:
¡¡¡¡Gracias!!!! Sí, hay un punto ahí. ¿Y cómo se cambia la configuración regional a los delimitadores correctos?
¿Por qué tocar la configuración regional? Por eso son regionales, porque sólo se instalan una vez. Los ajustes están en EXCEL. También puedes echar un vistazo a la FAC. Hay uno de los últimos posts sobre estos separadores.
 

¡¡¡Gracias!!!

Perdona, ¿me puedes dar un enlace a uno de los últimos posts sobre estos delimitadores?

Busqué en Google, en Yandex - traté de aplicar el formato numérico a través del formato de número de casa, no pasó nada. ¡No sobrescribir manualmente cuatrocientos puntos en zapatye! Poderoso e inteligente que sobresale, ¡pero tonto!

¡Uf, lo he minado!

 
Dimka-novitsek:

¡¡¡Gracias!!!

Lo siento, ¿podrías darme un enlace a uno de los últimos posts sobre estos separadores?

https://www.mql5.com/ru/forum/131853/page5
 
¡¡¡Gracias!!!
 

tengo una simple pregunta, pero todavía no entiendo la esencia del cierre de órdenes múltiples)

Por favor, explíqueme por qué la primera variante del código funciona de la misma manera que la segunda (en la primera variante a través de select_by_pos las 4 operaciones abiertas se cerraron a través del índice 0, pero en la segunda, el 1 y el 2, el 3 y el 4)

Necesito algún manual útil o algo para ver cómo se cierran las órdenes para no perderlas, o un manual sobre cómo cerrarlas correctamente y cómo funciona select_by_pos) porque veo ejemplos truncados por todas partes y ningún ejemplo con su uso en la ayuda)

Puedo darte un buen video tutorial sobre programación en MQL4).

OPCIÓN 1 (en esta variante las 4 órdenes abiertas se cerraron durante la prueba, aunque las 4 órdenes se seleccionaron con índice 0 al cerrarse):

OrderSend(Symbol(),OP_BUY,1,Bid,5,NULL,NULL);
OrderSend(Symbol(),OP_BUY,1,Bid,5,NULL,NULL);
OrderSend(Symbol(),OP_BUY,1,Bid,5,NULL,NULL);

OrderSend(Symbol(),OP_BUY,1,Bid,5,NULL,NULL);

if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
{
OrderClose(OrderTicket(),OrderLots(),Bid,5);
}
if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
{
OrderClose(OrderTicket(),OrderLots(),Bid,5);
}
if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
{
OrderClose(OrderTicket(),OrderLots(),Bid,5);
}
if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
{
OrderClose(OrderTicket(),OrderLots(),Bid,5);

}

2ª OPCIÓN (aquí también se cerraron las 4 operaciones, pero los índices 1,2,3 y 4):

OrderSend(Symbol(),OP_BUY,1,Bid,5,NULL,NULL);
OrderSend(Symbol(),OP_BUY,1,Bid,5,NULL,NULL);
OrderSend(Symbol(),OP_BUY,1,Bid,5,NULL,NULL);

OrderSend(Symbol(),OP_BUY,1,Bid,5,NULL,NULL);

if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
{
OrderClose(OrderTicket(),OrderLots(),Bid,5);
}
if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
{
OrderClose(OrderTicket(),OrderLots(),Bid,5);
}
if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
{
OrderClose(OrderTicket(),OrderLots(),Bid,5);
}
if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
{
OrderClose(OrderTicket(),OrderLots(),Bid,5);

}


 

Buenas noches, pido ayuda con un Asesor Experto MACD multidivisa. El EA sigue los criterios de apertura de posiciones correctamente, pero el cierre "en condiciones" no funciona. Ciertamente he empezado a utilizar un trailing stop, pero el cierre correcto no me da tregua.

//+------------------------------------------------------------------+
string lSymbol;
int init ()
{ 
 lSymbol = Symbol();
 return (0);
}
int deinit()
{return(0);}
int start()
  {
   double MacdCurrent, MacdPrevious, SignalCurrent;
   double SignalPrevious, MaCurrent, MaPrevious;
   double bid, ask, point, digits;
   int cnt, ticket, total;
   
  total = SymbolOrdersTotal (lSymbol);
  
  if (total<1);
  {
    bid   = MarketInfo(lSymbol,MODE_BID);
    ask   = MarketInfo(lSymbol,MODE_ASK);
    point = MarketInfo(lSymbol,MODE_POINT);
    digits= MarketInfo(lSymbol,MODE_DIGITS);

Este es el aspecto de la parte principal

 for(cnt=0;cnt<total;cnt++)
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELL &&   // check for opened position 
         OrderSymbol()==lSymbol())  // check for symbol
        {
         if(OrderType()==OP_BUY)   // long position is opened
           {
            // should it be closed?
            if(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious &&
               MacdCurrent>(MACDCloseLevel*point))
                {
                 OrderClose(OrderTicket(),OrderLots(),bid,3,Violet); // close position
                 return(0); // exit
                }
            // check for trailing stop
            if(TrailingStop>0)  
              {                 
               if(bid-OrderOpenPrice()>point*TrailingStop)
                 {
                  if(OrderStopLoss()<bid-point*TrailingStop)
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),bid-point*TrailingStop,OrderTakeProfit(),0,Green);
                     return(0);
                    }
                 }
              }
           }
         else // go to short position
           {
            // should it be closed?
            if(MacdCurrent<0 && MacdCurrent>SignalCurrent &&
               MacdPrevious<SignalPrevious && MathAbs(MacdCurrent)>(MACDCloseLevel*point))
              {
               OrderClose(OrderTicket(),OrderLots(),ask,3,Violet); // close position
               return(0); // exit
              }
            // check for trailing stop
            if(TrailingStop>0)  
              {                 
               if((OrderOpenPrice()-ask)>(point*TrailingStop))
                 {
                  if((OrderStopLoss()>(ask+point*TrailingStop)) || (OrderStopLoss()==0))
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),ask+point*TrailingStop,OrderTakeProfit(),0,Red);
                     return(0);
                    }
                }
              }
           }
        }
     }
   return(0);
  }
  
   
  int SymbolOrdersTotal(string lSymbol)
{
   int Res=0;
   int total=OrdersTotal();
   for (int i=0;i<total;i++) 
   {
      if (OrderSelect(i, SELECT_BY_POS))
      {
         if (OrderSymbol()==lSymbol)
         {
            Res++;
         }
      }
   }
   return(Res);
}
// the end.

Y este es un bloque cercano. Por favor, ayúdenme a encontrar el error.

 
Vinin:

¿Existe el directorio?


Sí, ambos en la carpeta Expert... y en la carpeta del probador.

pero la captura de pantalla sigue sin funcionar.