Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 249

 
Sepulca:

Tal vez eso sea mejor.

Sólo intercambia lugares. Hora()>AbrirHH más a menudo que la hora y los minutos.
 
artmedia70:
Sólo intercambiar lugares. Aun así, Hour()>OpenHH más a menudo que la hora y los minutos.


¿Crees que esto aumentará la velocidad del EA? Me pregunto, tal vez... Francamente, nunca he pensado en el orden de las condiciones en IF...)
 
Sepulca:

¿Crees que esto aumentará la velocidad del EA? Interesante, tal vez... Sinceramente, nunca he pensado en el orden de establecimiento de las condiciones en IF...)
Bueno... No estoy hablando de un gran aumento, pero aún así... hasta que se libere el terminal actualizado con el nuevo MQL4, se leen todas las condiciones lógicas hasta el final, aunque la primera sea falsa
 
Sepulca:


Todo parece correcto, debería funcionar. Probé tu código en el mío - funciona con minutos. Pero sólo de 14:25 a 14:59, de 15:25 a 15:59, etc.


Gracias por la pronta respuesta, pero, por desgracia, algo no funciona... El código sólo funciona así, tanto en el cuerpo del script como en el cuerpo del EA. Por tiempo y funcionalidad - todo está bien. Los pedidos se realizan sólo con reloj.
int start()
{
int OpenHH=14,OpenMM=25;
bool Trade=true;
//----
if (Trade) // Разрешение на торговлю.
if (TimeHour(TimeCurrent()) >= OpenHH ) // В назначенный час
{ OpenOrders();Print("Время пришло ",TimeHour(TimeCurrent()),":",TimeMinute(TimeCurrent())); return(0); } // открыть ордера.
//----
return(0);
}
//+------------------------------------------------------------------+
void OpenOrders(){return(0);}

Pero en cuanto añado minutos ( TimeMinute(TimeCurrent()) >= OpenMM ) - sin resultado.

El EA también se niega a colocar órdenes por minutos cuando utiliza la función StrToTime().

Gracias de nuevo... Seguiré investigando...

 
Sepulca:

Tal vez eso sea mejor.

No... Esto tampoco funciona...

Incluso cuando se utiliza otra función StrToTime() - si especifico el tiempo en horas enteras - todo está bien, pero tan pronto como añado minutos - no hay resultado. Aunque, como escribí en el primer post, los pedidos se cierran a las 23:45 los viernes sin problemas...

bool Trade=true;

string OpenTime = "14:00"; // Вот так работает!!!

string OpenTime = "14:25"; // А вот так - не работает!!!

if ( StrToTime(OpenTime) == TimeCurrent() && Trade )

{ OpenOrders();Print("Время пришло ",TimeHour(TimeCurrent()),":",TimeMinute(TimeCurrent())); return(0); }
//----
return(0);
}
//+------------------------------------------------------------------+
void OpenOrders(){return(0);}

 
Crosswert:

No... Esto tampoco funciona...

Incluso cuando se utiliza otra función StrToTime() - si especifico el tiempo en horas enteras - todo está bien, pero tan pronto como se añaden los minutos - ningún resultado. Aunque, como escribí en el 1er post, los pedidos se cierran a las 23:45 los viernes sin problemas...

bool Trade=true;

string OpenTime = "14:00"; // Вот так работает!!!

string OpenTime = "14:25"; // А вот так - не работает!!!

if ( StrToTime(OpenTime) == TimeCurrent() && Trade )

{ OpenOrders();Print("Время пришло ",TimeHour(TimeCurrent()),":",TimeMinute(TimeCurrent())); return(0); }
//----
return(0);
}
//+------------------------------------------------------------------+
void OpenOrders(){return(0);}


No sé... Este código también me funciona....

 
¿Cómo se prueba? Si, por ejemplo, en H1 y a precios de apertura, probablemente no funcione.
 
Sepulca:
¿Cómo se prueba? Si, por ejemplo, en H1 y a precios de apertura, probablemente no funcione.
Aconseja probar a los precios de apertura en el acta.
 
Sepulca:
¿Cómo se hace la prueba? Si, por ejemplo, en H1 y a precios de apertura, probablemente no funcione.

Verás, es tan simple como eso... Los minutos deben ser un múltiplo de TF ...

Ahora / si ( TimeCurrent() == StrToTime(OpenTime) && Trade ), si OpenTime = 14:25 / funcionará, pero sólo en TF=M1 y M5 ... La función de apertura de órdenes necesita las cotizaciones actuales pero la función de cierre de órdenes no las necesita...

De alguna manera me perdí este punto (por mi inexperiencia)...

Muchas gracias, lo he solucionado...

 

Sepulca:

¿Cómo se hace la prueba? Si, por ejemplo, en H1 y a precios de apertura, probablemente no funcione.


Ja, ja... Y aquí hay una mentira...

El problema resultó estar en la función OpenOrders(). Me he olvidado completamente de quitar el control de la apertura de la orden en la ruptura de una vela (barra):

if (Volume[0] > 1) return;

Entonces, en qué TF el Asesor Experto estaba probando, estaba abriendo órdenes en esos minutos...

Estúpido en general, en un duro...

Gracias...