Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 214

 
Vladimir Tkach:

Durante dos días, he estado haciendo un buen panel. Pero resultó que no podía cambiar los parámetros del Asesor Experto establecidos como entradas a través de él.

¿Qué hago ahora?

¿nada de imaginación?

input double _PARAM=1.0; // да, input менять в коде нельзя, они типа const

double PARAM=0;         // но никто не заставляет использовать только и исключительно их

int OnInit()

{

   if (MoonPhaze()==0 && _PARAM>0.1) {

       PARAM=_PARAM;       // всё что задаёт пользователь через input должно проверяться и использоваться только внутри OnInit - это просто хороший тон

   }

}
 

Parece que no se me entiende.

Cambio los parámetros en el panel (que está en el gráfico), pero no cambian en el Asesor Experto. Tristeza, tristeza.


 
Aunque sus valores cambian a lo largo del programa. Vale, está bien.
 
missha32:

Por favor, ayúdeme, estoy completamente confundido al escribir esta función

Necesito que la función devuelva el número de pedidos cerrados en un día


Yo lo escribiría así:

int CountInHistoryCloseOrder() 
{
int kp=0;
for(int i=OrdersHistoryTotal(); i>=0; i--) 
 {
  if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) 
   {
    if(OrderSymbol()==Symbol() && OrderMagicNumber()==mn) 
     {//mn - должна быть глобальной
      if(TimeToString(OrderCloseTime(),TIME_DATE)==TimeToString(TimeCurrent(),TIME_DATE))
       {
        kp++;
       }
     }
   }
 }
return(kp);
 
missha32:

Por favor, ayúdeme, estoy completamente confundido al escribir esta función

Necesito que la función devuelva el número de pedidos cerrados en un día

int OrdersClosedInDay(datetime time) {

datetime from=time-TimeHour(time)*60*60-TimeMinutes(time)*60-TimeSeconds(time);

datetime to=from+24*60*60;

int count=0;

for(int pos=OrdersHistoryTotal()-1;pos>=0;pos--) {

   if (!OrderSelect(pos,SELECT_BY_POS,MODE_HISTORY)) continue;

   if (OrderCloseTime()>=from && OrderCloseTime()<to)   count++;

}

return count;

}

 
Valerius:


Yo lo escribiría así:

Gracias por la ayuda, empieza a tener sentido, pero sólo al comienzo de un nuevo día se reinician los valores, y necesitamos que se mantenga hasta la siguiente serie de órdenes que se cierren en un día

Lo he resuelto y he añadido otra función

 
Artyom Trishkin:
No se pueden dibujar objetos. Pero puedes dibujar usando la clase CCanvas - puedes allí
Gracias.
 
Vladimir Tkach:

Parece que no se me entiende.

Cambio los parámetros en el panel (que está en el gráfico), pero no cambian en el Asesor Experto. Tristeza.


Si no quieres crear instancias duplicadas y seguir utilizándolas en el programa, siempre puedes establecer los parámetros de usuario como "externos" - sus valores pueden ser cambiados programáticamente en el proceso de trabajo.
 
Por favor, avisa. ¿Cómo configuro mi EA para que se cierre en la siguiente vela?
 
AlGuru:
Por favor, avisa. ¿Cómo puedo especificar en el EA que se cierre en la siguiente vela?
Si la barra en la que se abrió la posición es 1, entonces cierra esa posición.