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

 
artem86:

¿Pueden ayudarme, por favor? Cómo cerrar 5 órdenes pendientes con la misma magia cuando se alcanza un determinado precio.

Gracias de antemano.


if (OrdersTotal()>0)
{  for (int i=OrdersTotal()-1; i>=0; i--)
   {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
      {  if(OrderMagicNumber()==magic_number)
         {  if (OrderClose(OrderTicket(),LOT,price,3)==true)
            {  Print("Error = ",GetLastError()); return(0);
}  }  }  }  }
Si todas estas órdenes se abrieron para vender entonces el precio=Pregunta, si para comprar entonces el precio=Oferta.
 
paladin80:
Si la orden se abrió para vender entonces el precio=Pregunta, si para comprar entonces el precio=Oferta.


Error, deberías

if (OrdersTotal()>0)
{  for (int i=OrdersTotal()-1; i>=0; i--)
   {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
      {  if(OrderMagicNumber()==magic_number)
         {  if (OrderDelete(OrderTicket())==true)
              {  
              Print("Error = ",GetLastError()); return(0);
              } 
         } 
      }  
   }  
}
 
r772ra:


Error, tienes que

Mierda, no me di cuenta de que tenía que haber cerrado las órdenes pendientes, estaba pensando en cerrar posiciones.
 

Chicos - decidme, en el probador, y luego al operar en la cuenta comercial, incluso manualmente, resulta que es posible NO NORMALIZAR el volumen de la posición abierta, mientras que se abrirá por el volumen requerido. Por ejemplo, si abro una orden con 0,1210 lotes, el terminal abrirá con 0,12, es decir, la parte fraccionaria "extra" se descarta por defecto.

Por favor, avisen si se trata de otra "actualización" del terminal o si era posible originalmente.

He utilizado este método de normalización de volumen antes, pero me he saltado este punto en una de mis operaciones y las órdenes se siguen abriendo y la pestaña de Asesores Expertos me da antes de abrir una posición el volumen preliminar a abrir, en concreto, 0,121 lotes - estoy probando esto en una cuenta demo.

Función de normalización del lote:

//+------------------------------------------------------------------+
//| Нормализация лота                                                |
//+------------------------------------------------------------------+

double NormalizeLots(double lot)
{
   double lotStep = MarketInfo(Symbol(), MODE_LOTSTEP);
   double lots = NormalizeDouble(lot / lotStep, 0) * lotStep;   
   lots = MathMax(lots, MarketInfo(Symbol(), MODE_MINLOT));
   lots = MathMin(lots, MarketInfo(Symbol(), MODE_MAXLOT));   
   return (lots);
}

Llamada desde el inicio de EA:

// ---------НОРМАЛИЗУЕМ НОВЫЕ РАСЧЕТНЫЕ ЛОТЫ И ОТКРЫВАЕМ ОЧЕРЕДНУЮ ПОЗИЦИЮ...            
                    Lots_New = NormalizeLots(Lots_New);
                    if (lastType == OP_SELL) WmOrderSend(Symbol(), OP_BUY, Lots_New, Ask, 0, 0, "итерация" , MagicNumber);
                    if (lastType == OP_BUY)  WmOrderSend(Symbol(), OP_SELL,Lots_New, Bid, 0, 0, "итерация" , MagicNumber);

Quien esté al tanto de ello, que comente, por favor...

P.D. Comprobado de nuevo - aparentemente hay una situación que cuando intenta abrir un volumen de 0,1466 - abre 0,14, es decir, rechaza todo a la derecha del segundo signo después del punto decimal.

Si se hace una normalización, parece que se abrirá un lote de 0,15, es decir, con redondeo.

Tendré que comprobarlo...

P.P.S. De todos modos: quién sabe - comente, por favor...

 

Ignora el maldito.

 
AYUDA...POR FAVOR...Estoy ejecutando el Asesor Experto en una cuenta demo y en una cuenta real, dice: se iniciará con el próximo tick...El tick llega pero no se inicia aunque la opción "permitir que el EA opere" está marcada, el EA está habilitado, no hay errores en el registro, Internet funciona y otros EAs también funcionan.Este asesor funciona bien en el tester.Si ayuda: el EA dejó de funcionar después de que añadí la función de filtro de este artículo en él
 
sellena:
Si ayuda:El EA dejó de encenderse después de que le añadí la función de filtro de este artículo

Si te sirve de ayuda, habla con uno de los empleados de aquí.
 
sergeev:

Si te sirve de ayuda, habla con uno de los trabajadores de aquí.
Alex, echa un vistazo a mi pregunta si tienes tiempo... Gracias.
 
Roman.:
Alex, echa un vistazo a mi pregunta si tienes tiempo... Gracias.

Te puedo decir una cosa: ya me puse en contacto con el servicio (en otra ocasión) y me dijeron: " confiar en los valores predeterminados es perjudicial, utiliza tus propios filtros y tratamientos si quieres estar seguro". Así que depende de ti...
 
Roman.:
Alex, echa un vistazo a mi pregunta si tienes tiempo... Gracias.

El FAQ lo dice bien. No se puede confiar en los "valores por defecto". Porque recuerdo que el error 131 (lote erróneo) aparecía a menudo, si no se hacía una normalización antes de enviar un pedido.
Tal vez ahora los MMO hayan hecho su propia comprobación de lotes por defecto en los servidores al enviar una orden para su ejecución.

Por lo tanto, siempre debe hacer su propia normalización de precios y lotes antes de enviar.

Esto es para ti las reglas de la buena codificación y la promesa de menos problemas en el futuro.