Preguntas sobre el MQL4 - página 8

 
Le pediste que destruyera todos los pedidos cinco minutos antes de que cerrara el bar, así que los anotará todos. Sólo hay que ajustar la hora correctamente. Y utilizar otras piezas de código para cerrar órdenes innecesarias. ¿O quiere que le escriban todo el programa?

Me preguntaba sobre la primera parte... cómo eliminar la segunda orden después de que se haya activado.
Mi borrado se produce antes de que se active, pero el algoritmo de borrado se basa en la comprobación de las órdenes ABIERTAS
Por ejemplo, se han establecido dos órdenes pendientes. Uno se dispara, es decir,
OrderType()==OP_SELL o OrderType()==OP_SELL
La línea correspondiente se imprime en el registro
Y en los resultados de las pruebas
borrar viene antes de comprar o vender
y esto causa confusión en la numeración de las órdenes

. Y pregunté si podía cerrar al final del día sin usar Curtime() ya que la actualización depende de los ticks entrantes y si no están, el EA no cerrará a la hora que necesito
Ahora entiendo que no se puede ya que el EA no funciona sin ticks
 
Cuelga el script y no le importará si hay garrapatas.
 
Puedes eliminar el segundo así:
   for(cnt=0;cnt<OrdersTotal();cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderType()<=OP_SELL && // comprobar posición abierta OrderSymbol()==Symbol()) // comprobar símbolo { for(i=0;i<OrdersTotal();i++) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if(OrderType()>OP_SELL && // check for opened position OrderSymbol()==Symbol()) // check for symbol { OrderDelete(OrderTicket()); } }


¿Y el tiempo...? ¿De verdad hay que ser tan preciso? Ponlo en 2 minutos, no sueles tener el vientre lleno a esa hora.

 
Para Roger
Gracias ahora... Con unos pequeños retoques ha funcionado como debería, aunque sigo sin entender por qué no me ha funcionado (es todo transparente al máximo)
Acerca de la depresión... Lo que pasa es que a veces no son dos sino cinco o más minutos (dependiendo de la cruz)

Para Rosh
No comparta el guión si tiene ciertamente?
 
int Coord[8]; Coord[8]=1;


El compilador no muestra errores. ¿Se supone que debe ser así?

 
Sí, así es como debería ser.
GetLastError generará un error cuando se ejecute. el compilador no comprueba los valores de las expresiones (la constante 8 es un caso especial de expresión)
 
Slawa,
muchas gracias, ahora vigilaré la dimensionalidad de los arrays con más cuidado...)

Otra pregunta sencilla.
En caso de que el tamaño del lote supere claramente la cantidad de fondos disponibles, al abrir "de la mano"...
- ¿se realiza la primera comprobación en el servidor?
- Si no es así, ¿por qué el panel de apertura de pedidos se queda colgado durante varios segundos?
- si es así, es correcto, ¿quizás esta comprobación debería hacerse primero en el terminal?
 
Para Roger<br / translate="no"> Gracias ahora... Con unos pequeños retoques ha funcionado como debería aunque sigo sin entender por qué no me ha funcionado (todo es transparente hasta el extremo)
Acerca de la depresión... Lo que pasa es que a veces no son dos sino cinco o más minutos (dependiendo de la cruz)

Para Rosh
¿Puede compartir el guión, si lo tiene?


Me acabo de dar cuenta, o tal vez lo he olvidado. ¿Qué guión es el que funciona independientemente de las garrapatas?
Si es así, deberíamos escribir algo así:

while (true) { startFromExpert(); Sleep(as long as necessary); }



La función startFromExpert() se obtiene simplemente cambiando el nombre de la función start() del EA, lo copiamos todo y lo pegamos en nuestro script, y no olvidemos utilizar todos los parámetros del EA.
Esta es una de las opciones.

 
En MQL 3 había una función:
TotalProfit - beneficio total no realizado en todas las posiciones abiertas.
No encuentro cómo implementarlo en MQL 4, por favor, aconséjame cómo hacerlo.
 
Yo también empezaré a jurar pronto. ¿No quieres leer la ayuda?
double AccountProfit( ) <br / translate="no">

Devuelve el valor del beneficio de la cuenta corriente.

Ejemplo

Print("Beneficio ", AccountProfit());