Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 383

 
Vitalie Postolache:

Si no es externo - hay PositionClose

También puede abrir una posición con el mismo volumen en la dirección opuesta, lo que dará lugar a un cierre.

¿no hay tal función?
 
Tapochun:

Establecemos dos variables locales en la función OnTick de tipo bool: buyExist = false y sellExist = false.

Cuando llega un nuevo tick, se comprueba si hay alguna orden que pertenezca a este EA. Si hay una orden de venta, sellExist = true y lo mismo con la orden de compra. Y luego se comprueba si buyExist = true - no se abre una orden de compra. Lo mismo ocurre con la venta. Eso es todo.

¿Para qué necesitamos variables innecesarias si vamos a comprobar de todos modos si hay puestos vacantes?

Hemos comprobado si hay posiciones de compra - no hay compras abiertas, hemos abierto una. ¿Por qué necesitamos variables?

 
Artyom Trishkin:

¿Por qué necesitamos variables adicionales si de todos modos estamos comprobando las posiciones abiertas?

Comprobamos la compra - no hay compra abierta - abrimos una, comprobamos la venta - no hay venta abierta - abrimos una. ¿Por qué necesitamos variables?

Podemos hacerlo así. Simplemente lo presenté en mi mente como una función de comprobación separada donde las banderas se pasan por referencia. En este caso, mi variante sólo realiza una función: comprobar los pedidos y no comprobar+abrir. Sería más fácil ampliar el programa. En resumen: una función, una acción.
 
Artyom Trishkin:

¿Por qué necesitamos variables adicionales si de todos modos estamos comprobando las posiciones abiertas?

Comprobamos la compra - no hay compra abierta - abrimos una, comprobamos la venta - no hay venta abierta - abrimos una. ¿Por qué necesitamos variables?

Pensé que sería similar a OrderTotal.
 
le0nid2014:
Pensé que sería algo como OrderTotal, pero aquí hay que hacer el rebote y escribir la función para reconocer los pedidos?
¿Cómo se puede hacer sin fuerza bruta? Puede tener muchas órdenes de muchos Asesores Expertos para muchos símbolos a la vez. Usted quiere que su Asesor Experto procese sólo sus propias órdenes, ¿no es así?
 
Tapochun:
Podrías hacerlo. Lo imaginé en mi cabeza como una función de comprobación separada, donde las banderas se pasan por referencia. En este caso, mi variante, realiza una sola función - comprobar las órdenes, no comprobar+abrir. Sería más fácil ampliar el programa. En resumen: una función, una acción.

Bueno, la comprobación es una llamada a una función que devuelve una bandera:

if(!Function_check_open_position(symbol, OP_BUY,magic)) function_open_position(symbol,OP_BUY,Lots,stop_loss,take_profit,magic,comment);
if(!Function_check_open_position(symbol,OP_SELL,magic)) Function_open_position(símbolo,OP_SELL,Lotes,stop_loss,take_profit,magic,comentario);

 
le0nid2014:
Pensé que sería algo así como OrderTotal.
Por supuesto, debemos buscar una orden de mercado por símbolo, tipo y mago, y devolver el resultado de la búsqueda: verdadero - sí, falso - no.
 
new-rena:
¿no hay tal función?
Sí, mi error cuando dije "no inludes", esa función está sólo en el inluder Trade.mqh.
 
Tapochun:
¿Cómo puede hacerlo sin esforzarse demasiado? Puede tener un montón de órdenes de un montón de Asesores Expertos en un montón de símbolos al mismo tiempo. Y usted quiere que su EA procese sólo sus órdenes, ¿no es así?

es una adición inicial al robot principal . el robot principal siempre tiene dos órdenes abiertas en ambas direcciones (el robot principal las recoge, pero el propio robot principal no puede arrancar . Cuando el robot principal termina una de las direcciones la cierra) y entonces este EA debe abrir de nuevo una orden en la dirección del mercado donde no hay orden.

sólo tenemos que añadirle las condiciones de apertura de la orden


extern double Lots = 1.00;

extern int MagicNumb = 698541; //Magic


int inicio ()

{


if(OrdersTotal() == 0 && ********** )

OrderSend("USDCHF",OP_BUY,Lots,Ask,0,0,0, "5891",MagicNumb,0,Red);


if (OrdersTotal() == 0 && ***********)

OrderSend("USDCHF",OP_SELL,Lots,Bid,0,0,0, "58892",MagicNumb,0,Red);


}

 
le0nid2014:
es una adición inicial al robot principal . el robot principal siempre tiene dos órdenes abiertas en ambas direcciones (el robot principal las recoge, pero el propio robot principal no puede arrancar . Cuando el robot principal termina una de las direcciones la cierra) y entonces este EA debe abrir de nuevo una orden en la dirección del mercado en la que no hay ninguna orden.
Los dos EAs deben tener los mismos asistentes. Deberían lanzarse en gráficos diferentes para un mismo símbolo. En general, por supuesto, es más fácil mejorar el EA principal que construir otro.
Razón de la queja: