ayuda con codigo de envio de mail

Foro para cuestiones generales sobre la plataforma MetaTrader 4.

ayuda con codigo de envio de mail

Notapor Refresko » 29 Oct 2013, 04:52

hola FXWizard, cordial saludo

te pido una colaboracion con un tema, estoy creando un script q luego pasare a indicadorr, que envia un mail a cierta hora,
la informacion a enviar y como se obtiene ya lo tengo programado,,, lo que no se como programar es lo siguiente:
imaginemos la idea de q el script debe enviar em mail a las 10:00, y yo lo "cargo" o ejecuto en el grafico a las 08:00.

se me ocurrio programarlo entonces con un IF, asi:

if (hour ()==10:00)
sendmail (xxxxx........xxxxx)
else
refreshRates ();

Lo que pasa es que si se ejecuta e script a las 08:00 o 09:00 o las 09:34, (osea a una hora distinta a la programada del script) obvio no se ejecuta, pero TAMPOCO se ejecuta cuando se llega a la hora esperada y es lo que yo necesito, que si en caso de que no sea la hora 10:00, se espere o se quede calculando la hora y a las 10:00 si se envie el mail. (..... de hecho entonces solo sirve el script que tengo programado si yo lo ejecuto o cargo en la ventana a la hora programada (10:00) )

como lo puedo hacer??

me imagino yo que el problema esta en el "else" del codigo.

Muchas Gracias
No puedes cometer/ dos veces el mismo error/ la segunda vez sera/ Por eleccion...
Avatar de Usuario
Refresko
 
Mensajes: 165
Registrado: 12 Dic 2011, 22:56
Karma: 5

Re: ayuda con codigo de envio de mail

Notapor FXWizard » 30 Oct 2013, 19:34

Hola refresko, lo muevo aquí, más apropiado. Posiblemente este código te sirva, mira a ver si puedes adaptarlo a tu caso:

Código: Seleccionar todo
if (hour ()==10:00)
         {
            if ( LastAlertTime < Time[0])
            {
               SendMail("Mensaje para refresko", "Esto es un mensaje de prueba");
               LastAlertTime = Time[0];
            }
         }


Saludos,
FXWizard
Avatar de Usuario
FXWizard
 
Mensajes: 8493
Registrado: 12 Feb 2008, 15:17
Karma: 35

Re: ayuda con codigo de envio de mail

Notapor Refresko » 31 Oct 2013, 01:18

FXWizard, Gracias por responder

te comento que he copiado tu codigo y no me funciona, de hecho al compilarlo me dice que es una variable no definida, se refiere a la variable "LastAlertTime"

me ayudas en es eso porfavor, o explicame como le determino un valor, y cual valor

Graciasss
No puedes cometer/ dos veces el mismo error/ la segunda vez sera/ Por eleccion...
Avatar de Usuario
Refresko
 
Mensajes: 165
Registrado: 12 Dic 2011, 22:56
Karma: 5

Re: ayuda con codigo de envio de mail

Notapor FXWizard » 31 Oct 2013, 11:31

Claro, porque antes tienes que definir la variable al principio del código.

Saludos,
FXWizard
Avatar de Usuario
FXWizard
 
Mensajes: 8493
Registrado: 12 Feb 2008, 15:17
Karma: 35

Re: ayuda con codigo de envio de mail

Notapor Refresko » 05 Nov 2013, 06:43

FXWizard escribió:Claro, porque antes tienes que definir la variable al principio del código.

Saludos,
FXWizard


jejje, amigo muchas Gracias, ya lo he Adaptado a mi codigo, de verdad Gracias

FXWizard, aprovecho y te pido una ultima ayuda
para complementar este codigo necesito agregar una operacion BUYSTOP/SELL STOP, dependiendo del caso,,,,esto lo se hacer,

al crear la orden con ORDERSEND, puedo programar una expiracion, (yo necesito eso, eliminar la orden si a cierta hora no se ha activado), pero no se como ponerlo en el code de la ordersend ya que segun he leido se debe poner en segundos,,,, y ese es el problema, el calculo de los segundos

te explico con un ejemplo, yo pongo o creo la orden de buystop/sellstop a cualquier hora, pero necesito que si a las 15:00 (hora server mt4) expire, ¿como calculo esos segundos desde una hora indeterminada)

Muchas Gracias y que pena molestarte
No puedes cometer/ dos veces el mismo error/ la segunda vez sera/ Por eleccion...
Avatar de Usuario
Refresko
 
Mensajes: 165
Registrado: 12 Dic 2011, 22:56
Karma: 5

Re: ayuda con codigo de envio de mail

Notapor FXWizard » 06 Nov 2013, 15:43

Refresko, en realidad es más sencillo de lo que parece: simplemente debes pasar a segundos el tiempo que quieres que esté la orden vigente. Por ejemplo, si quieres que la orden esté vigente durante un día desde que se lanza deberías poner 24 * 60 * 60 = 86400.

Recuerda asimismo que el valor de Expiration no puede ser inferior a 11 minutos (esto es, 660 en OrderSend).

Saludos,
FXWizard
Avatar de Usuario
FXWizard
 
Mensajes: 8493
Registrado: 12 Feb 2008, 15:17
Karma: 35

Re: ayuda con codigo de envio de mail

Notapor Refresko » 06 Nov 2013, 19:08

FXWizard, Muchas Gracias por responder,

te confirmo que ya sabia que el tiempo se debe poner en segundos y asi lo intente, lo que pasa es que no sabia que debia anteponer "TIMECURRENT()+", es por eso que no me funcionaba.

Ademas lo que te pregunte, que era como colocar una hora limite fija sin necesidad de hacer el calculo de los segundos, ya que si hoy coloco una orden a las 03:00 y quiero que se expire a las 04:00, pues hago el calculo de min x seg (60*60), pero si mañana coloco la orden a las 2:37, pues son otros segundos (otro calculo), (ya que habemos quienes queremos que la expiracion sea a una hora con minutos exactos) ,entonces entonces creee este codigo, que sin importar a que horas y a q minutos se cree la orden, me saque o calcule los segundos restantes hasta nuestra hora objetivo:

Ejemplo quiero crear ordenes a cualquier hora, pero que se eliminen a las 05:00, el codigo me calcula los segundos desde cualquier hora que creemos la orden hasta las 05:00

Código: Seleccionar todo

//--------CALCULO DE SEGUNDOS PARA LA FECHA DE EXPIRACION---------

//------  este puede ir en un #property show_inputs
extern string fecha_expiracion="2013.11.05 19:15";
 
int start()
  {
string  fecha_exp = StrToTime(fecha_expiracion);
string horaserver= TimeCurrent();

int exp=StrToInteger(fecha_exp);
int hor1=StrToInteger(horaserver);
int segundosexpiracion=exp-hor1;
int seg_exp=exp-hor1;

return(0);
  }


pero como ademas mi broker es ECN, asi que ademas debo usa el comando "OrderModify", PERO MUCHO OJO, ya que este comando tambien modifica la expiracion, asi que este "INT : seg_exp" debe ser usado alli, ya que si "OrderModify" se deja por defecto la expiracion con 0, pues nos borra la expiracion puesta.

ojala se entienda, y le sirva a alguien

cordial saludo
No puedes cometer/ dos veces el mismo error/ la segunda vez sera/ Por eleccion...
Avatar de Usuario
Refresko
 
Mensajes: 165
Registrado: 12 Dic 2011, 22:56
Karma: 5

Re: ayuda con codigo de envio de mail

Notapor FXWizard » 07 Nov 2013, 11:41

Excelente refresko, precisamente esto es lo siguiente que te iba a proponer por si querías calcular una hora exacta de expiración (no tenía claro si era lo que necesitabas). En todo caso me alegro de que hayas conseguido resolverlo y de que lo hayas compartido aquí en Forex.es con todos los usuarios ;)

Saludos,
FXWizard
Avatar de Usuario
FXWizard
 
Mensajes: 8493
Registrado: 12 Feb 2008, 15:17
Karma: 35


Volver a MetaTrader 4

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado