Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 1125

 
Evgeniy Oshurkevich:
Ya lo tengo, y en esto gracias, antes de cualquier orden he prescrito la función de manejo de errores en todas partes, pero ahora estoy atascado en un bucle y cómo frenar la EA, si habrá errores sólo por mi error, y donde exactamente para prescribir. Es decir, he intentado abrir un pedido, pero se ha producido un error, ¿cómo conseguirlo? Por ejemplo, OrderSend(....); ha realizado una transacción, ¿cómo puedo obtener información sobre si ha funcionado correctamente?

¿Puedes abrir la ayuda de la función y ver lo que devuelve? ¿Y _LastError?

En concreto, OrderSend devuelve un ticket de pedido o -1. Adivina en qué caso será -1 por tu cuenta ;)

 
Vitalie Postolache:

¿Puedes abrir la ayuda de la función y ver lo que devuelve? ¿Y _LastError?

En concreto, OrderSend devuelve un ticket de pedido o -1. Adivina en qué caso será -1 tú mismo ;)

Llevo 10 minutos leyendo sobre el tema :)
 
Evgeniy Oshurkevich:
Llevo 10 minutos leyendo sobre esto :)
Aquí como ejemplo es bastante adecuado
 
Vitaly Muzichenko:
Aquí como ejemplo es bastante adecuado

Y ya he empezado a resolver mis códigos de error, gracias :) Y casi he terminado con mi EA sobre cómo frenarlo)

¡En este ejemplo, no puedo encontrar el valor de"Slippage" está en el OrderSend, puede que no sea tan importante u obligatorio, me pregunto!

 
Evgeniy Oshurkevich:

Y ya he empezado a resolver mis códigos de error, gracias :) Y casi he terminado con mi EA sobre cómo frenarlo)

¡En este ejemplo, no puedo encontrar el valor de"Slippage" está en OrderSend, puede que no sea tan significativo u obligatorio, me pregunto!

Y esto es para coger el código 135 o 129 y aumentar el valor de deslizamiento para el siguiente intento. O, si el aumento del deslizamiento no resulta atractivo, simplemente cuente un número determinado de segundos hasta el siguiente intento. Además, vigila la dispersión, si la dispersión aumenta en este momento, espera a que disminuya y vuelve a intentarlo. También, es deseable no usar Sleep(), ciertamente simplifica la codificación y no trae mucho daño, cuando hiberna por medio segundo o un segundo, pero si el Asesor Experto es un Pipsier rápido, para el cual cada milisegundo es importante, o una pausa en decenas de segundos es necesaria, es mejor no usar el sueño, durante el sueño el Asesor Experto está paralizado y no puede sólo operar, sino también monitorear el ambiente de comercio o realizar otros cálculos, no responde a las acciones del usuario, etc.

Puede fijar la hora actual, hacer la cuenta atrás del número de segundos (o milisegundos) necesarios y actuar.

 
Evgeniy Oshurkevich:

Y ya he empezado a resolver mis códigos de error, gracias :) Y casi he terminado con mi EA sobre cómo frenarlo)

¡En este ejemplo, no puedo encontrar el valor de"Slippage" está en OrderSend, puede que no sea tan significativo u obligatorio, me pregunto!

Hoy en díael deslizamiento no es tan relevante como solía ser, normalmente se utiliza en cuentas con un spread fijo, pero hay unas pocas de esas cuentas que quedan en la naturaleza y hay 5-7 personas operando en ellas. Si el spread es flotante, no haySlippage, es mejor monitorear el spread, y si es muy amplio, entonces abstenerse de entrar, pero de nuevo, todo depende de la estrategia, que tan crítico es un spread grande.
 
Vitaly Muzichenko:
Hoy en díael deslizamiento no es tan relevante como solía ser y se suele utilizar en cuentas con spreads fijos, pero sólo hay unas pocas cuentas de este tipo y sólo 5-7 personas operan en ellas. Si el spread es flotante, no haySlippage, es mejor monitorear el spread en sí, y si es demasiado amplio, entonces abstenerse de entrar, pero de nuevo, todo depende de la estrategia, lo crítico que es un spread grande.

Mentira...

En los ECNs muy populares el deslizamiento en las noticias es descomunal. A veces cientos de pepitas (5ozn). O simplemente siguen atormentando los pedidos durante un minuto entero, diciendo "nuevo precio", "sin precio", etc.

 
Vitalie Postolache:

Esto es para capturar el código 135 o 129 y aumentar el valor de deslizamiento para el siguiente intento. O, si el aumento del deslizamiento no resulta atractivo, simplemente cuente un número determinado de segundos hasta el siguiente intento. Además, vigila la dispersión, si la dispersión aumenta en este momento, espera a que disminuya y vuelve a intentarlo. Además, es deseable no utilizar Sleep(), esto, por supuesto, simplifica la escritura de código y no causa ningún daño especial, cuando se hiberna durante medio segundo o un segundo, pero si el Asesor Experto es un Pipsier rápido, para el que cada milisegundo es importante, o se requiere una pausa de decenas de segundos, es mejor no utilizar el sueño, durante el sueño el Asesor Experto se paraliza y no sólo puede operar, sino también supervisar el entorno de comercio o realizar otros cálculos, no responde a las acciones del usuario, etc.

Es posible fijar la hora actual, hacer una cuenta atrás del número de segundos (o milisegundos) necesarios y luego actuar.

Evgeniy Oshurkevich:

Ya he empezado a buscar los códigos de error, gracias :) Y ya casi he terminado de frenar mi Expert Advisor)

¡En este ejemplo, no puedo encontrar el valor de"Slippage" está en el OrderSend, puede que no sea tan significativo u obligatorio, me pregunto!

Durante la hibernación del comando de sueño, el EA está efectivamente paralizado. Incluso en el caso de un terminal, es necesario proporcionar el trabajo de veinte hilos diferentes, es decir, dejar que cada uno de ellos ocupe el tiempo de la CPU. Por lo menos para mostrar algo en la pantalla, por no hablar de la tarea crucial para el pipser de milisegundos de aceptar ticks entrantes. En realidad hay decenas de otros servicios del sistema operativo que también quieren trabajar, es decir, ocupar el procesador con sus propias necesidades. Si el comando Sleep no lo hace, el programador de hilos del sistema operativo lo hará a la fuerza, pero según sus propias consideraciones a quién hay que darle tiempo. También puedes confiar en él y cargar el procesador casi al 100% todo el tiempo con sólo este asesor. Pero no le conviene a nadie. Si el programador no planifica la asignación de recursos del procesador, en la mayoría de los casos, el enfoque implementado en MQL donde el Asesor Experto recibe la CPU en la recepción de un símbolo y después del procesamiento de esta llegada, el Asesor Experto "paraliza" y no toma la CPU hasta el siguiente tick.

El parámetro Slippage en OrderSend (no confundir con el slippage real en caso de modo de ejecución de órdenes "Market execution", por mercado) tiene sentido establecerlo sólo en el modo "Instant execution", ejecución inmediata, cuando la orden se ejecuta al precio declarado o se rechaza, es decir, se rechaza. La desviación máxima permitida del precio de ejecución con respecto al precio indicado en la orden puede establecerse como no nula. En el modo "Ejecución de mercado", este parámetro no significa nada, en este caso el precio de ejecución es fijado por el centro de negociación, la desviación del precio indicado en la orden no está limitada de ninguna manera.

 
Vitalie Postolache:

Mentira...

En los ECNs muy populares el deslizamiento en las noticias es descomunal. A veces cientos de pepitas (5ozn). O simplemente siguen atormentando los pedidos durante un minuto entero, diciendo "nuevo precio", "sin precio", etc.

Las cuentas ECN no le ayudan aldeslizamiento por lo menos 100 pips, hay ejecución en el mercado y sólo puede deslizar y no dar un precio, y esto es un poco diferentes cosas, y diferentes errores.
 

Есть условие для открытия ордера BUY. Открывается ордер, как сделать переход к SELL условию после закрытия BUY ордера?




if(High[1]-Close[1]>=NormalizeDouble(xbs1*_Point,_Digits))
   {
    int b_tik=OrderSend(_Symbol,OP_BUY,Lots,Ask,Slip,Low[2]-sl,High[1]+ tp,"",Magic,0,clrBlue)==true; //открытие ордера
      
       GlobalVariableSet("B_order",0); // Больше не ищем вход Buy

       //-----?????
       GlobalVariableSet("S_order",1); // Переходим к поиску Sell
       return;
   }