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

 
Desead:


El deinit se llama cuando borro el robot del gráfico - no puedo seguir esta condición de ninguna otra manera..... , probablemente sea más fácil escribir un script separado que borre todos los pendientes.

Por cierto, otra reflexión sobre este tema:

Parece que he resuelto el problema de la eliminación de los pedidos. He calculado el número de órdenes "necesarias" (a eliminar) en una función separada, he llamado a esta función y luego alwhilecon una condición (Total>0), luego el ciclo de eliminación for(int i=Total-1;i<=0l; i--), de nuevo calculando el número de "necesarias", contador de intentos de eliminación con una salida del while cuando se alcanza el nivel dado. De esta manera se borra todo.

Aquí puede producirse un bucle infinito en caso de que una de las órdenes desaparezca después del momento del recuento por cualquier motivo.


El recuento de pedidos se realiza cada vez después del bucle for para borrar un pedido, el contador itera mientras con la salida del bucle porbreak, cuando el contador alcanza el valor que se establece en la variable externa, se puede añadir el manejo de errores antes de la salida y la salida del resultado con
Alerta(...)
o
Imprimir( ...)
Y como alguien me aconsejó añadir un cheque para la resolución del comercio. Así que no hay manera de hacer un bucle aquí.


 
Dimka-novitsek:

¡¡¡Buenos días!!! No se puede encontrar una solución bonita a la situación. Esta es una configuración de orden típica. Pero si le doy cero a mi robot en los parámetros, es decir, sin stops ni takeprofits, nada funcionará.

También podemos poner un if e introducir una orden con ceros por segunda vez, pero es un poco engorroso.

Todo es maduro - ¡¡¡a nivel de arte!!! ;)

Y, en serio, aprende a pensar en lo que acabas de escribir. En los valores cero de STOPPs según su fórmula stoploss y take profit son iguales al precio de apertura de una orden, lo cual es IMPOSIBLE. ¿Tienes alguna otra solución (puedes usar tu cerebro? :))?

 
Dimka-novitsek:

¡¡¡Buenos días!!! No puedo encontrar una solución agradable a la situación. Esta es una configuración de orden típica. Pero si le doy cero a mi robot en los parámetros, es decir, sin stops ni takeprofits, nada funcionará.

También podemos poner un if e introducir una orden con ceros por segunda vez, pero es un poco engorroso.



if (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits); else TP=0;
if (stoploss!=0) SL = NormalizeDouble(Ask - stoploss*Point,Digits); else SL=0; 
 
rigonich:


...te equivocas (no le has dado una oportunidad al hombre): si un hombre no estimula su materia gris, se pasará toda la vida "en el porche". "¡Dame una pista, por Dios!". :)))
 
BeerGod:

De este modo, selecciona los pedidos según los parámetros indicados.

Por ejemplo, https://www.mql5.com/ru/forum/131859/page3#434221

Función NúmeroDePosiciones().

Esta función devuelve el número de posiciones abiertas en este momento. Una selección más precisa de las posiciones a contar se especifica mediante parámetros externos:

  • sy - Nombre del instrumento de mercado. Si se establece este parámetro, la función sólo tendrá en cuenta las posiciones del instrumento especificado. El valor por defecto "" significa cualquier instrumento de mercado. NULL significa el instrumento actual.
  • op - Operación comercial, tipo de posición. Valores válidos: OP_BUY, OP_SELL o -1. El valor por defecto de -1 significa cualquier posición.
  • mn - Identificador de posición, MagicNumber. El valor por defecto de -1 significa cualquier identificador.


miró

Función ModifyOrder(). https://forum.mql4.com/ru/38949#434195

hay 3 parámetros que deben ser introducidos. Dos los adiviné, el tercero no.

¿qué es UseSound en la siguiente línea?

----------------------------------------------------

if (UseSound) PlaySound("alert.wav"); break;

 
lottamer:


Yo habría dejado que funcionara: tengo una posición y una herramienta.

¡Pero no funciona!

Dice que hay un error en el código

a esto.

---------------------------

int inicio()

{

//----

si OrdersTotal()>0

PlaySound ("alert.wav");

//----

return(0);

}

-----------------------------

¡¡¡da 8 errores!!!


Poner la condición (la que sigue a if) entre paréntesis
 
TarasBY:

¡¡¡Lo tienes todo maduro - a nivel de arte!!! ;)

Y, en serio, aprende a pensar en lo que acabas de escribir. Si establecemos cero STOPPs según su fórmula, el stop loss y el take profit son iguales al precio de apertura de una orden, lo cual es INACEPTABLE. ¿Tienes alguna otra solución (puedes usar tu cerebro? :))?


:))) oops, ¿puedo aclarar también el siguiente punto en "paneuropeo"?

¿Cuál es la diferencia entre las funciones start y void?

 
TarasBY:

...te equivocas: si una persona no estimula su materia gris, se pasará toda la vida "en el porche". "¡Dame una pista, por Dios!". :)))


Probablemente tengas razón, pero es mi filosofía en la vida: si no es mucha molestia, ayuda a los demás y ellos te ayudarán cuando lo necesites. A los 55 años, es difícil cambiar de hábitos.

P.D. Así es también como yo aprendo.

 
lottamer:


:))) oops, ¿puedo aclarar también el siguiente punto en "pananámica"?

¿Cuál es la diferencia entre las funciones start y void?

¡¡¡¡Has dado un golpe a algo que nadie ha conseguido todavía: "APRETAR EL DEDO CON LAGRAN CABEZA A LA QUE SE AYUDA"!!!! :)))

la primera es una función y la segunda es el tipo de valor que devuelve.

P.D. Tenga paciencia y léalo.

 
¡¡¡¡Gracias!!!!