Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Ian,
Comprueba el experto en Straddle&Trail. Puedes encontrarlo aquí https://www.mql5.com/en/forum/general
Hola a todos,
Quiero cerrar todas mis órdenes al mismo tiempo pero no puedo.
He probado este código pero no ha funcionado:
''''''''''''''''''''''''''''''''''''''''
total = OrdersTotal();
for(i=0;i < total;i++)
{
if(OrderSelect(i, SELECT_BY_POS)==true)
{
OrderClose(OrderTicket(),OrderLots(),Ask,80,CLR_NONE);
OrderClose(OrderTicket(),OrderLots(),Bid,80,CLR_NONE);
}
}
''''''''''''''''''''''''''''''''''''''''
¿Puede alguien ayudarme?
Estaría muy agradecido si me pueden ayudar
Mehdi,
Pon este código (procedimiento) fuera de la sección start() y cuando se cumpla la condición de cerrar todas las operaciones, simplemente llama al procedimiento así:
int start()
{ // su código aquí .....
Si (su condición aquí) ShutDownAllTrades();
}
void ShutDownAllTrades
{ int Reintento;
While (OrdersTotal()>0)
{ for (int cnt=OrdersTotal()-1;cnt>=0;cnt--)
{ OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if (OrderType()==OP_BUY)
{ Retry=0; while (Retry<5 && !IsTradeAllowed()) { Retry++; Sleep(1000); }
RefreshRates();
OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Yellow);
Sleep(1000);
}
else if (OrderType()==OP_SELL)
{ Retry=0; while (Retry<5 && !IsTradeAllowed()) { Retry++; Sleep(1000); }
RefreshRates();
OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Yellow);
Sleep(1000);
}
else
{ Retry=0; while (Retry<5 && !IsTradeAllowed()) { Retry++; Sleep(1000); }
OrderDelete(OrderTicket());
Sleep(1000);
}
}
}
}
HTH
Yannis
Estimado Yannis,
Gracias por tu ayuda.
Le deseo lo mejor.
Mehdi,
Ponga este código (procedimiento) fuera de la sección start() y cuando se cumpla la condición de cerrar todas las operaciones, sólo llame al procedimiento así
int start()
{ // su código aquí .....
Si (su condición aquí) ShutDownAllTrades();
}
void ShutDownAllTrades
{ int Reintento;
While (OrdersTotal()>0)
{ for (int cnt=OrdersTotal()-1;cnt>=0;cnt--)
{ OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if (OrderType()==OP_BUY)
{ Retry=0; while (Retry<5 && !IsTradeAllowed()) { Retry++; Sleep(1000); }
RefreshRates();
OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Yellow);
Sleep(1000);
}
else if (OrderType()==OP_SELL)
{ Retry=0; while (Retry<5 && !IsTradeAllowed()) { Retry++; Sleep(1000); }
RefreshRates();
OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Yellow);
Sleep(1000);
}
else
{ Retry=0; while (Retry<5 && !IsTradeAllowed()) { Retry++; Sleep(1000); }
OrderDelete(OrderTicket());
Sleep(1000);
}
}
}
}
HTH
YannisEstimado Yannis,
He añadido su procedimiento entre " int deinit() { } " (fuera de inicio) como usted dijo, pero hay un problema a través de la compilación después de void ShutDownAllTrades { : '{' coma o punto y coma esperado .
Espero su respuesta.
Muchas gracias
Oops, lo siento.
Lo que falta es el () después de void ShutDownAllTrades()
Ten cuidado también con la variable llamada 'Slippage' en la función orderclose.
Es posible que tengas que reemplazarla por la que utilizas cuando haces tus órdenes.
Yannis
Oops, lo siento.
Lo que falta es el () después de void ShutDownAllTrades()
Tenga cuidado también con la variable llamada 'Slippage' en la función orderclose.
Es posible que tengas que reemplazarla por la que utilizas cuando haces tus órdenes.
Yannis¡Funciona muy bien !
Gracias de nuevo
Estoy usando el indicador MTF CCI en el hilo de indicadores Multi Time Frame, es una línea amarilla de paso, ver imagen adjunta.
Cuando la línea está por encima del nivel 100 (sobrecompra) - el precio bajará y cuando está por debajo de -100 (sobreventa) - el precio subirá.
El único problema es que no siempre se actualiza, tengo que hacerlo manualmente haciendo clic con el botón derecho del ratón en el gráfico y seleccionando "Actualizar".
Una pregunta a los programadores: ¿Existe alguna función en MQ4 para hacer ese tipo de refresco automáticamente en cada tick?
Agradecería un consejo.
euro pean
Pruebe esto:
void ObjectsRedraw()
Redibuja todos los objetos del gráfico
Ejemplo
ObjectsRedraw();
Es posible que tenga que utilizar primero ObjectCreate.
Pruebe esto:
void ObjectsRedraw()
Redibuja todos los objetos del gráfico
Ejemplo
ObjectsRedraw();
Es posible que tenga que utilizar primero ObjectCreate.Gracias por responder.
Por lo que sé, ObjectsRedraw() refresca los objetos que acaban de ser "creados" y "establecidos".
Necesito refrescar un indicador que no está en la lista de objetos, por lo que ObjectsRedraw() no funciona.
¿O puede ser que sepas cómo hacer referencia a un indicador existente?