![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
ese código no hace que cada operación que abre mi EA expire 12 horas desde el momento en que se abre...
El tiempo deexpiración de la orden funciona sólo en órdenes pendientes. Si OrderSend() es OP_BUY u OP_SELL, necesita cronometrar su orden dentro del código. Aquí hay un ejemplo simple.
int OrderTime;
OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,Ask+TakeProfit*Point,"timetest",16384,0,Green)
OrderTime=TimeCurrent();
int total = OrdersTotal();
for(int cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if((OrderType() <= OP_SELL) && (OrderSymbol() == Symbol()) )
{
if(OrderType()==OP_BUY && TimeCurrent()-OrderTime>(12*60)*60)
{
OrderClose(OrderTicket(),LotsOptimized(),Bid,3,Violet);
}
}
}Wackena
el código no funciona bien
He utilizado esto para enviar por correo electrónico el estado de mi cuenta cada hora a mí. sin embargo, después de compilar y cargado. envió que el correo electrónico perfectamente la hora siguiente en el minuto # 59 como se supone que, a continuación, nunca envió otro de nuevo. lo que estoy haciendo mal? se ve perfecto?
¡¡no lo necesito al minuto #59 solo lo necesito cada hora!!![](https://c.mql5.com/forextsd/smiles/cry_smile.png)
bool mail;
int inicio()
{
if (Minute()>=59 && !mail){
SendMail("Account Status","Account Balance is="+DoubleToStr(AccountBalance(),2)+"_Account Equity is="+DoubleToStr(AccountEquity(),2)+
"_El beneficio de la cuenta es="+DoubleToStr(AccountProfit(),2)+"_El margen de la cuenta es="+DoubleToStr(AccountMargin(),2)+
"_El margen libre de la cuenta es="+DoubleToStr(AccountFreeMargin(),2));
mail=true;
}
tal vez sólo hay que poner mail = false en algún momento o simplemente eliminar esta prueba en la variable mail porque por supuesto el código actual enviará sólo 1 correo.
¿que prueba en la variable mail?.. no lo entiendo por favor explique..
que tal si justo después de mail=true pongo
if (minute()<=58 && !mail)
mail= false;
¿crees que puede funcionar?
creo que esta mal codificado
Creo que puedes poner
if (minute()<=58 && mail) // cuidado no !mail sino mail
mail= false;
y eso debería ser pero fuera de tu primer if , así que no después de mail = true; sino después de }
Probablemente hay mejores formas de codificar eso pero eso debería funcionar
voy a probar
Gracias, lo intentaré... te lo diré en dos horas.
genial funciona.... o al menos lo parece![](https://c.mql5.com/forextsd/smiles/shades_smile.png)
Necesito ayuda con esta parte del código
¿alguien puede decirme cómo escribir esto correctamente? estoy tratando de separar las operaciones de compra y venta abiertas individualmente...
es decir: si open bid > 2.
si ask abierto >2
Tengo el resto, pero no puedo codificar esa parte correctamente
Sé que es sencillo pero me estoy tirando de los pelos.
¿alguien?
¿alguien? wow tal vez esta fue una mala pregunta
if(Open[0] > 2){ //abre la oferta
//su código
}
if(Open[0]+(Ask-Bid) > 2){ //abrir ask
//su código
}
dependiendo de su broker, el backtesting de la oferta abierta puede no funcionar