MQL4 Cerrar todas las posiciones
MQL4 Cerrar todas las posiciones
Buenas noches, aqui ando liado puliendo un EA. No consigo cerrar todas las posiciones automaticamente con este for,
for(int i=0;i<total;i++)
OrderSelect(i, SELECT_BY_POS);
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
}
Lo que pretendo es dejar el panel limpio, se trata de un EA ciclico, cuando termina el ciclo, se considera que tiene que comenzar otro nuevo, por eso que quiero cerrar todo sin contemplaciones. Solo consigo cerrar una posicion con ese codigo,
Saludos
for(int i=0;i<total;i++)
OrderSelect(i, SELECT_BY_POS);
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
}
Lo que pretendo es dejar el panel limpio, se trata de un EA ciclico, cuando termina el ciclo, se considera que tiene que comenzar otro nuevo, por eso que quiero cerrar todo sin contemplaciones. Solo consigo cerrar una posicion con ese codigo,
Saludos
Re: MQL4 Cerrar todas las posiciones
Cambia "total" por OrdersTotal() y añade otra linea para cerrar las sell.
En bruto sería:
Tambien es aconsejable repetirlo varias veces para asegurarse, por si el broker es lento y se aturulla. Si eso fuera una función de nombre closeall, algo así como if(ciclo_talycual){closeall();closeall();closeall();}
En bruto sería:
Código: Seleccionar todo
for(int i=0;i<OrdersTotal();i++){
OrderSelect(i, SELECT_BY_POS);
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);}
Re: MQL4 Cerrar todas las posiciones
Y en el codigo que has puesto falta la "{" despues del for, así solo cerraría una.
Re: MQL4 Cerrar todas las posiciones
Gracias fer137, creo que la "{" va a tener la culpa, después del for no se la he abierto, me he liado con la del if anterior, suele ser recomendable marcarlas pero se me paso por completo. No sabia que se cerraban por una parte los buy y por otra los sell..
Lo estoy testeando ahora con la modificación, el EA lo programe hace tiempo, bastante escaso la verdad, le estoy implementando una gestión monetaria, teniendo en cuenta temas que tratáis por aquí, a ver cuanto puede llegar a mejorar, por que da demasiadas señales y si no lo controlas te lleva a la ruina, en fin el pan de cada día, ejej
Saludos
Lo estoy testeando ahora con la modificación, el EA lo programe hace tiempo, bastante escaso la verdad, le estoy implementando una gestión monetaria, teniendo en cuenta temas que tratáis por aquí, a ver cuanto puede llegar a mejorar, por que da demasiadas señales y si no lo controlas te lleva a la ruina, en fin el pan de cada día, ejej
Saludos
Re: MQL4 Cerrar todas las posiciones
Te dejo el Void que utilizo yo. Copialo al final del programa, y luego con llamar a "CierraTodas()" ya está.
De la forma que lo estábais haciendo, al cerrar de 0 a Total, cierras la cero y la que antes era 1 ahora pasa a ser 0, y tú estarías cerrando la 1 ( que sería la dos...) es decir, cuando cierras una orden todas las superiores corren un puesto hacia abajo. Por ello creo que la forma correcta es hacer el recorrido de OrdersTotal()-1 hasta 0.
Corregidme si me equivoco.
Saludos!
Código: Seleccionar todo
void CierraTodas()
{
int total = OrdersTotal();
for(int i=total-1;i>=0;i--)
{
OrderSelect(i, SELECT_BY_POS);
int type = OrderType();
bool result = false;
switch(type)
{
//Close opened long positions
case OP_BUY : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5, Red );
break;
//Close opened short positions
case OP_SELL : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 5, Red );
break;
//Close pending orders
case OP_BUYLIMIT :
case OP_BUYSTOP :
case OP_SELLLIMIT :
case OP_SELLSTOP : result = OrderDelete( OrderTicket() );
}
if(result == false)
{
Alert("Order " , OrderTicket() , " failed to close. Error:" , GetLastError() );
Sleep(3000);
}
}
}
Corregidme si me equivoco.
Saludos!

"Mercaderes e industriales no deben ser admitidos a la ciudadanía; porque su género de vida es abyecto y contrario a la virtud."
Aristóteles.
Aristóteles.
Re: MQL4 Cerrar todas las posiciones
Creo que tienes razón. Alguna vez observé que dejaba algunas sin cerrar y le hacía varias pasadas, ...y yo echando la culpa a los brokers 
El codigo de antes quedaría:

El codigo de antes quedaría:
Código: Seleccionar todo
for(int i=OrdersTotal()-1;i>=0;i--){
OrderSelect(i, SELECT_BY_POS);
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);}
Re: MQL4 Cerrar todas las posiciones
Gracias a los dos, al final he implantado el codigo de bolsa1, funciona perfecto, muy recomendable.
La historia es que estoy testeando el EA, y estoy obteniendo mejores resultados de los que esperaba.
Aun tengo que mejorar muchos aspectos, os subiria un test de varios meses, pero el problema es que cuando entra en un hedge no sabe salir de el, se queda plano.
Reglas:
Cuando se inicia un nuevo ciclo se aceptan las señales de una relevancia ("1.5"), y a partir de ahí cada señal debe ser mas relevante que la anterior, y cada ciclo puede contener 10 posiciones maximas. Como regla le obligo a haber entrado en un drawdown mayor a 1% para comenzar a cerrar ordenes, y el cierre se efectua cuando el porcentaje de beneficio sea mayor al drawdown anterior. Con estas simples reglas, un sistema de ruina absoluta, esta empezando a ser controlado.
Resultados marzo:
La historia es que estoy testeando el EA, y estoy obteniendo mejores resultados de los que esperaba.
Aun tengo que mejorar muchos aspectos, os subiria un test de varios meses, pero el problema es que cuando entra en un hedge no sabe salir de el, se queda plano.
Reglas:
Cuando se inicia un nuevo ciclo se aceptan las señales de una relevancia ("1.5"), y a partir de ahí cada señal debe ser mas relevante que la anterior, y cada ciclo puede contener 10 posiciones maximas. Como regla le obligo a haber entrado en un drawdown mayor a 1% para comenzar a cerrar ordenes, y el cierre se efectua cuando el porcentaje de beneficio sea mayor al drawdown anterior. Con estas simples reglas, un sistema de ruina absoluta, esta empezando a ser controlado.
Resultados marzo:
- Adjuntos
-
- ComparaVelas Test.pdf
- (33.33 KiB) Descargado 155 veces
Si te ha gustado este hilo del Foro, ¡compártelo en redes!