Preguntas de un "tonto" - página 148

 
Yedelkin:
Pues mira tú mismo tu código. La condición if(timeOntrade.hour==4 || timeOntrade.hour==15 || timeOntrade.hour==16) es inútil en su forma actual. Porque no importa el resultado que produzca, su función bool timeOntrade() siempre devolverá true.
Suena lógico. Eso es lo que me interesa. Creo que escribí cosas innecesarias y puede que me faltara lo necesario.
 
Interesting:

alph, a esto se refiere Yedelkin.

Estas variantes de la función son idénticas en nuestra mente

Ahora lo veo.
 
alph:
Suena lógico, por eso me interesa. Me parece que he escrito cosas innecesarias y puede que haya omitido las necesarias.


Hay una cosa más que no me queda clara todavía

   timeOntrade.hour= 0;
   timeOntrade.min = 0;
   timeOntrade.sec = 1;
   if(timeOntrade.hour==4 || timeOntrade.hour==15 || timeOntrade.hour==16) return(true);

Es decir, si entiendo bien, primero asignamos el reloj a 0 y luego lo comparamos.

¿Dónde está la lógica?
 
Interesting:


Un punto más, que aún no me queda claro

Es decir, si entiendo bien, primero asignamos el reloj a 0 y luego lo comparamos.

¿Dónde está la lógica?
Todavía no he quitado la línea con true, pero me parece que si la quitas, ya en ontik no habrá comparación con el reloj como valor o parámetro específico.
 
alph:
Todavía no he quitado la línea con true, pero me parece que si la quitamos, no habrá comparación con el reloj como valor o parámetro específico en ontik.

Por el momento estas opciones son idénticas en mi opinión

bool timeOntrade(int TradeHour)
   {
   MqlDateTime timeOntrade;
   TimeTradeServer(timeOntrade);
   if(timeOntrade.hour!=TradeHour) return(false);
   timeOntrade.hour= 0;
   timeOntrade.min = 0;
   timeOntrade.sec = 1;
   if(timeOntrade.hour==4 || timeOntrade.hour==15 || timeOntrade.hour==16) return(true);
   return(true);
   }

bool timeOntrade(int TradeHour)
   {
   MqlDateTime timeOntrade;
   TimeTradeServer(timeOntrade);
   if(timeOntrade.hour!=TradeHour) return(false);
   return(true);
   }

En general, no entiendo por qué hay que asignar valores.

Es decir, según tengo entendido, la mejor opción es

bool timeOntrade(int TradeHour)
   {
   MqlDateTime timetrade;
   TimeTradeServer(timetrade);
   if(timetrade.hour!=TradeHour) return(false);
   return(true);
   }
En este caso, si la hora actual del servidor (sólo para el reloj) no es igual a la establecida, entonces devuelve false, en caso contrario devuelve true.
 
Interesting:

Por el momento, estas opciones son idénticas

La verdad es que no entiendo por qué hay que asignar valores.

Para escribir esto:

void OnTick()

{...

//-----------------------------------------------------------------------------------------+

//Base para cambiar a Open

MqlRates rt[1];

if(CopyRates(Symbol(),MyTframe,0,1,rt)<0) return;

if(rt[0].tick_volumen>1) return;

if(!PositionSelect(_Symbol) && (timeOntrade(4) || ((timeOntrade(15) || timeOntrade(16))&& timeOntrade2(0)))) Abrir();//ir a la posición de apertura

timeOntrade.min = 0;

Esto es claramente innecesario en este contexto


   timeOntrade.min = 0;
   timeOntrade.sec = 1;
 

alph:

Para poner esto:

void OnTick()

Pruebe esta opción. Si no es así, no entiendo lo que está tratando de conseguir...

bool timeOntrade(int TradeHour)
   {
   MqlDateTime timetrade;
   TimeTradeServer(timetrade);
   if(timetrade.hour!=TradeHour) return(false);
   return(true);
   }
 
Interesting:

Pruebe esta opción. Si no es así, no entiendo lo que está tratando de conseguir...

Sí, sí, y dentro:

 bool timeOntrade2(int TradeMin)  
   {
   MqlDateTime timetrade2;
   TimeTradeServer(timetrade);
   if(timetrade.min!=TradeMin) return(false);
   return(true);
   }
 
alph:

Sí, sí, y dentro:

Entonces ya es así (para estar seguros). Pero, en principio, me has dado la razón

 bool timeOntrade2(int TradeMin)  
   {
   MqlDateTime timetrade;
   TimeTradeServer(timetrade);
   if(timetrade.min!=TradeMin) return(false);
   return(true);
   }
 
Interesting:

Entonces es así (para estar seguros). Pero, en principio, me has dado la razón

Gracias. ¿El resto del código es correcto?