LastOpenPrice(OP_SELL) para el precio de apertura de la última venta.
double LastOpenPrice(int OrderType)
{
double OpenPrice;
for ( int pos = OrdersTotal()- 1 ; pos >= 0 ; pos--)
if ( OrderSelect (pos, SELECT_BY_POS) // Only my orders w/
&& OrderMagicNumber() == magic.number // my magic number // <------- what Magic Number do you use when you place a trade ? it must match ! !
&& OrderSymbol() == Symbol() // and my pair. // magic.number should be a Globally defined variable that has your Magic Numer
&& OrderType() == OrderType )
{
OpenPrice = OrderOpenprice();
break;
}
return (OpenPrice); // <------- this returns the Order Open Price NOT the ticket
}
double LastClosePrice()
{
double ClosePrice;
for ( int pos = OrdersHistoryTotal()- 1 ; pos >= 0 ; pos--)
if ( OrderSelect (pos, SELECT_BY_POS, MODE_HISTORY) // Only my CLOSED orders
&& OrderMagicNumber() == magic.number // my magic number // <------- what Magic Number do you use when you place a trade ? it must match ! !
&& OrderSymbol() == Symbol() // and my pair. // magic.number should be a Globally defined variable that has your Magic Numer
&& OrderType() < OP_BUYLIMIT )
{
ClosePrice = OrderCloseprice();
break;
}
return (ClosePrice); // <------- this returns the Order Open Price NOT the ticket
}
creo que te falta algo si tiene más de 1 orden en el mismo par (y la misma magia) por lo tanto creo que es mejor así
double LastOpenPrice(intOrderType)
{
double OpenPrice;
datetime lastOpen; // First line addedfor ( int pos = OrdersTotal()- 1 ; pos >= 0 ; pos--)
if ( OrderSelect (pos, SELECT_BY_POS) // Only my orders w/
&& OrderMagicNumber() == magic.number // my magic number // <------- what Magic Number do you use when you place a trade ? it must match ! !
&& OrderSymbol() == Symbol() // and my pair. // magic.number should be a Globally defined variable that has your Magic Numer
&& OrderType() == OrderType
&& OrderOpenTime() > lastOpen) // Second line added
{
OpenPrice = OrderOpenprice();
break;
}
return (OpenPrice); // <------- this returns the Order Open Price NOT the ticket
}
Si se hace una cuenta atrás, la primera orden que coincida con el Número y el Símbolo Mágicos será la última que se haga para el EA y el Símbolo en cuestión, ¿no?
creo que te falta algo si tiene más de 1 orden en el mismo par (y la misma magia) por lo tanto creo que es mejor así
su opinión
chicos,
muchas gracias,
dejame decirte porque quiero usar LastOpenPrice(OP_BUY) y LastOpenPrice(OP_SELL) porque quiero usarlos en algunas condiciones como
if ( LastOpenPrice(OP_BUY) -LastOpenPrice(OP_SELL)) > 0.0090 // por esa razón necesito mantener la última orden abierta para la compra y la última orden abierta para la venta, así que necesito una última orden separada una para la compra y otra para la venta.
-----
para el doble LastClosePrice() // puedo usar if ( OrderType() == OP_BUY || OP_SELL) en lugar de *** OrderType() < OP_BUYLIMIT*** para obtener el último cierre sea de compra o de venta.
----
para la función número 4:
4- función para obtener y mantener el precio de cierre anterior a la última orden de cierre de compra o venta. // quiero obtener la orden cerrada antes de la última orden cerrada de compra o venta.
Para iniciar sesión y usar el sitio web MQL5.com es necesario permitir el uso de Сookies.
Por favor, active este ajuste en su navegador, de lo contrario, no podrá iniciar sesión.
Ha iniciado sesión. La autenticación de dos factores se ha desactivado. Vuelva a configurarla y escanee un nuevo código QR, o continúe con la autenticación de dos factores desactivada.
Entonces, ¿por qué devuelve el número de billete? Lee el código que estás copiando y pegando, entiéndelo, aprende....
lo he utilizado para hacer lo siguiente
if(OrderSelect(LastOpenTicketForBuy(), SELECT_BY_POS)==true)
{ orden de compra= OrderOpenPrice();}
entonces si ( (( orden de compra+ orden de venta)/2))<MarketInfo("EURUSD",MODE_BID) )
cerrar la posición
if(OrderSelect(LastOpenTicketForBuy(), SELECT_BY_POS)==true)
un pequeño cambio con su permiso
Estimado qjol
Muchas gracias por su ayuda real. pero todavía no estoy seguro de si va a funcionar o no (creo que mis funciones un poco diffecult). vamos a ver
primera función :
función para obtener y mantener el precio de apertura de la ultima orden para la compra solamente
2- función para obtener y mantener el precio de apertura de la última orden de venta3- función para obtener y mantener el precio de cierre de la última orden, ya sea de compra o de venta4- función para obtener y mantener el precio de cierre anterior a la última orden de cierre de compra o de venta.Bien, prueba esto...
Hará 1 y 2...
LastOpenPrice(OP_BUY) para el precio de apertura de la última compra.
LastOpenPrice(OP_SELL) para el precio de apertura de la última venta.
Y esto...
por 3...
raptor
creo que te falta algo si tiene más de 1 orden en el mismo par (y la misma magia) por lo tanto creo que es mejor así
tu opinion
raptor
creo que te falta algo si tiene más de 1 orden en el mismo par (y la misma magia) por lo tanto creo que es mejor así
su opinión
chicos,
muchas gracias,
dejame decirte porque quiero usar LastOpenPrice(OP_BUY) y LastOpenPrice(OP_SELL) porque quiero usarlos en algunas condiciones como
if ( LastOpenPrice(OP_BUY) -LastOpenPrice(OP_SELL)) > 0.0090 // por esa razón necesito mantener la última orden abierta para la compra y la última orden abierta para la venta, así que necesito una última orden separada una para la compra y otra para la venta.
-----
para el doble LastClosePrice() // puedo usar if ( OrderType() == OP_BUY || OP_SELL) en lugar de *** OrderType() < OP_BUYLIMIT*** para obtener el último cierre sea de compra o de venta.
----
para la función número 4:
4- función para obtener y mantener el precio de cierre anterior a la última orden de cierre de compra o venta. // quiero obtener la orden cerrada antes de la última orden cerrada de compra o venta .
gracias