String+Time vs Str+Time

Foro dedicado a todo lo relacionado con la versión 4 de la plataforma de Metaquotes.
Responder
carol
Mensajes: 23
Registrado: 25 Abr 2017 16:53

String+Time vs Str+Time

Mensaje por carol »

Un saludo a todos :D

LLevo unos dias peleándome con las funciones de tiempo y fecha, y al final me ha quedado una duda :

¿en qué casos es preferible utilizar String en vez de Str, con TimeTo o ToTime ?

Me explico. A mi me dan los mismos resultados cuando imprimo los logs de StringToTime, StrToTime que TimeToString y TimeToStr,

¿se obtiene algún resultado diferente en caso de codificar en una determinada manera?
Avatar de Usuario
X-Trader
Administrador
Mensajes: 12166
Registrado: 06 Sep 2004 10:18
Contactar:

Re: String+Time vs Str+Time

Mensaje por X-Trader »

Hola Carol,

Por lo que veo en la referencia de MQL4, la única diferencia es que las funciones que usan Str trabajan con el total de segundos transcurridos desde el 1 de enero de 1970, mientras que las que usan String usan el formato datetime estándar (no convierten de/a segundos).

Saludos,
X-Trader
"Los sistemas de trading pueden funcionar en ciertas condiciones de mercado todo el tiempo, en todas las condiciones de mercado en algún momento del tiempo, pero nunca en todas las condiciones de mercado todo el tiempo."
carol
Mensajes: 23
Registrado: 25 Abr 2017 16:53

Re: String+Time vs Str+Time

Mensaje por carol »

X-Trader escribió: 22 Sep 2022 18:43 Hola Carol,

Por lo que veo en la referencia de MQL4, la única diferencia es que las funciones que usan Str trabajan con el total de segundos transcurridos desde el 1 de enero de 1970, mientras que las que usan String usan el formato datetime estándar (no convierten de/a segundos).

Saludos,
X-Trader
Tú lo has entendido enseguida y lo has sabido explicar en tres líneas, pero yo voy a necesitar tres dias y analizar cada palabra para entenderlo. :oops:

Muchísimas gracias, voy a a trabajar en ello :D
carol
Mensajes: 23
Registrado: 25 Abr 2017 16:53

Re: String+Time vs Str+Time

Mensaje por carol »

Nada, que no, que no hay manera .Estoy haciendo un filtro horario

Código: Seleccionar todo

  void HoursFilter()
{
       int datetimeHF= TimeLocal();
    int hour0 = TimeHour(datetimeHF);
    
    etc,etc....}
y en otra función

Código: Seleccionar todo

 void BuyPendingOrder()
{
    int expire = TimeCurrent() + 60 * 0;
    
    etc, etc...
Y no me da ningún error, pero me aparece en ambas expresiones un aviso: "possible loss of data due to type conversion"

Vale, entiendo que me está diciendo que puedo perder datos por la conversión de tipos, pero he probado

StrToInteger(TimeCurrent()) ;
StrToTime(TimeCurrent());
TimeToStr(TimeCurrent());
TimeToString(TimeCurrent());
StringToInteger(TimeCurrent());
StringToTime(TimeCurrent());



y ademas de esos avisos recibo otro dos "implicit conversion from 'string' to 'number' y" implicit conversion from 'number' to 'string' "

Me declaro incapaz :oops:
Avatar de Usuario
X-Trader
Administrador
Mensajes: 12166
Registrado: 06 Sep 2004 10:18
Contactar:

Re: String+Time vs Str+Time

Mensaje por X-Trader »

No te preocupes Carol, a todos nos ha costado empezar, sobre todo si no eres programador de formación.

Si quieres describe exactamente que intentas conseguir y te busco algún ejemplo (viendo casos resueltos también se aprende y mucho).

Saludos,
X-Trader
"Los sistemas de trading pueden funcionar en ciertas condiciones de mercado todo el tiempo, en todas las condiciones de mercado en algún momento del tiempo, pero nunca en todas las condiciones de mercado todo el tiempo."
carol
Mensajes: 23
Registrado: 25 Abr 2017 16:53

Re: String+Time vs Str+Time

Mensaje por carol »

Hola X-Trader, si pudieses encontrar ejemplos de estas funciones me harias un favor enorme, porque yo he buscado en el manual pero lo que encuentro no me aclara el caso.

En realidad cuando compilo no me da error, pero me salen los dichosos avisos "possible loss of data due to type conversion", "implicit conversion from 'string' to 'number' e" implicit conversion from 'number' to 'string' "

y me gustaria saber por qué, por qué hago mal la conversión de tipos, cual es el error

Supongo que tendré que hacer algún paso intermedio, pero ya te digo, no he sido capaz de encontrar ningún ejemplo

Te explico: prácticamente he terminado el EA y le he puesto un filtro horario para que ponga órdenes en un determinado periodo de tiempo.

Primero individualizo la hora del dia en la que nos encontramos, luego la comparo con el horario del dia en el que quiero que actúe y después doy la orden que quiero que cumpla. El filtro, es este

Código: Seleccionar todo

 void HoursFilter()
{
       int datetimeHF= TimeLocal();
    int hour0 = TimeHour(datetimeHF);
    
     if ((HoursFrom < HoursTo && hour0 >= HoursFrom && hour0 < HoursTo) ||
    (HoursFrom > HoursTo && (hour0 < HoursTo || hour0 >= HoursFrom)))
    {
        PendingOrderSDOMax();
        PendingOrderSTTMax();
        
    }
}
    
    }
El filtro funciona, lo he comprobado dejándolo correr en mt4, y al compilar no me da error, pero aparece el aviso "possible loss of data due to type conversion", en : int datetimeHF = TimeLocal();

He intentado arreglarlo ayudándome de las funciones de conversión , así que he ido sustituyendo esa línea por cada una de estas, para ir probando

int datetimeHF=StrToInteger(TimeCurrent()) ;
int datetimeHF=StrToTime(TimeCurrent());
int datetimeHF=TimeToStr(TimeCurrent());
int datetimeHF=TimeToString(TimeCurrent());
int datetimeHF=StringToInteger(TimeCurrent());
int datetimeHF=StringToTime(TimeCurrent());

Pero en lugar de arreglarse me sale un aviso mas, bien "implicit conversion from 'string' to 'number' o " implicit conversion from 'number' to 'string' "

Como te decía, sospecho que necesito realizar algún paso intermedio, pero sin algún ejemplo de conversión parecido tendré que dejar este cabo suelto para cuando sepa más
Si te ha gustado este hilo del Foro, ¡compártelo en redes!


Responder

Volver a “Metatrader 4”