Errores, fallos, preguntas - página 2321

 

Entiendo que puedes comprobarlo por ti mismo...

En el Probador, ¿qué evento se genera primero, el tic o el temporizador?

Por ejemplo, el temporizador debe ser llamado a las 12:00:00.000. Y hay una garrapata con la misma hora. ¿Qué se activa primero, OnTimer o OnTick?

 
Vladimir Pastushak:
Tenía varios cientos de temas en mis favoritos, todos despejados... Sin mi conocimiento.

¡Hola!

Por favor, compruebe de nuevo. Tus favoritos están ahí.

 
fxsaber:

Entiendo que puedes comprobarlo por ti mismo...

En el Probador, ¿qué evento se genera primero, el tic o el temporizador?

Por ejemplo, el temporizador debe ser llamado a las 12:00:00.000. Y hay una garrapata con la misma hora. ¿Qué se activa primero, OnTimer o OnTick?

Temporizador primero

 
Slava:

Primero el temporizador

Gracias, buena solución.

 
Pavel Kozlov:

¡Hola!

Por favor, compruebe de nuevo. Tus temas favoritos están en su sitio.

Gracias, todo ha vuelto.

 

Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading

Resultados diferentes. ¿Cómo? ¿Por qué? ¿Qué creer?

Sergey Tabolin, 2018.11.10 12:15

Ejecutando una carrera de fuerza bruta completa. El archivo se está escribiendo. Y todo el tiempo de diferente longitud. Quizás por el TF, pero el TF no debería afectar al resultado de ninguna manera. ¡Para más iniit nada va!

¿Cómo? ¿Por qué? ¿O se trata de un fallo en el probador?


//+------------------------------------------------------------------+
//|                                               KrL_write_func.mq5 |
//|                                     Copyright 2018, Tabolin S.N. |
//|                           https://www.mql5.com/ru/users/vip.avos |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, Tabolin S.N."
#property link      "https://www.mql5.com/ru/users/vip.avos"
#property version   "1.00"
//+------------------------------------------------------------------+
typedef void(*TFunc)(void);
TFunc entry_func[7];
//+------------------------------------------------------------------+
enum f_entry
{
   no_f,             // не использовать
   reb,              // отскок
   brd1,             // пробой 1
   brd2,             // пробой 2
   lim,              // лимитный
   lw,               // недельный
   cust,             // пользовательский
};

input    f_entry  func_entry_1         = reb;            // 1-я функция условий входа
input    f_entry  func_entry_2         = brd1;           // 2-я функция условий входа
input    f_entry  func_entry_3         = brd2;           // 3-я функция условий входа
input    f_entry  func_entry_4         = lim;            // 4-я функция условий входа
input    f_entry  func_entry_5         = lw;             // 5-я функция условий входа
input    f_entry  func_entry_6         = cust;           // 6-я функция условий входа

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
   if(paramIncorrect()) return(INIT_PARAMETERS_INCORRECT);
   else
   {
      string   filename    = "KR\\func.txt";
      int      filehandle  = FileOpen(filename,FILE_WRITE|FILE_READ|FILE_TXT|FILE_ANSI|FILE_COMMON);
      if(filehandle != INVALID_HANDLE)
      {
         FileSeek(filehandle,0,SEEK_END);
         string str = string(func_entry_1)+","+string(func_entry_2)+","+string(func_entry_3)+","+string(func_entry_4)+","+string(func_entry_5)+","+string(func_entry_6)+"\n";
         
         if(FileWriteString(filehandle,str) == 0) Print("Ошибка записи файла");
         FileClose(filehandle);
      }
      
      return(INIT_FAILED);
   }

   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---

}
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
   
}
//+------------------------------------------------------------------+
bool paramIncorrect()
{
   bool     ret_func = false;
   
   if(func_entry_1 == no_f && func_entry_2 == no_f && func_entry_3 == no_f && func_entry_4 == no_f && 
      func_entry_5 == no_f && func_entry_6 == no_f) return(true);
//--- Порядок следования
   if(func_entry_1 == no_f)                                                                                       ret_func = true;
   else if(func_entry_2 == no_f && (func_entry_3 != no_f || func_entry_4 != no_f || func_entry_5 != no_f || 
                                    func_entry_6 != no_f))                                                        ret_func = true;
   else if(func_entry_3 == no_f && (func_entry_4 != no_f || func_entry_5 != no_f || func_entry_6 != no_f))        ret_func = true;
   else if(func_entry_4 == no_f && (func_entry_5 != no_f || func_entry_6 != no_f))                                ret_func = true;
   else if(func_entry_5 == no_f &&  func_entry_6 != no_f)                                                         ret_func = true;
//--- Повторяемость
   if(func_entry_1 == reb  && (func_entry_2 == reb    || func_entry_3 == reb  || func_entry_4 == reb  || 
                               func_entry_5 == reb    || func_entry_6 == reb))                                    ret_func = true;
   if(func_entry_1 == brd1 && (func_entry_2 == brd1   || func_entry_3 == brd1 || func_entry_4 == brd1 || 
                               func_entry_5 == brd1   || func_entry_6 == brd1))                                   ret_func = true;
   if(func_entry_1 == brd2 && (func_entry_2 == brd2   || func_entry_3 == brd2 || func_entry_4 == brd2 || 
                               func_entry_5 == brd2   || func_entry_6 == brd2))                                   ret_func = true;
   if(func_entry_1 == lim  && (func_entry_2 == lim    || func_entry_3 == lim  || func_entry_4 == lim  || 
                               func_entry_5 == lim    || func_entry_6 == lim))                                    ret_func = true;
   if(func_entry_1 == lw   && (func_entry_2 == lw     || func_entry_3 == lw   || func_entry_4 == lw   || 
                               func_entry_5 == lw     || func_entry_6 == lw))                                     ret_func = true;
   if(func_entry_1 == cust && (func_entry_2 == cust   || func_entry_3 == cust || func_entry_4 == cust || 
                               func_entry_5 == cust   || func_entry_6 == cust))                                   ret_func = true;
   
   if(func_entry_2 == reb  && (func_entry_3 == reb    || func_entry_4 == reb  || 
                               func_entry_5 == reb    || func_entry_6 == reb))                                    ret_func = true;
   if(func_entry_2 == brd1 && (func_entry_3 == brd1   || func_entry_4 == brd1 || 
                               func_entry_5 == brd1   || func_entry_6 == brd1))                                   ret_func = true;
   if(func_entry_2 == brd2 && (func_entry_3 == brd2   || func_entry_4 == brd2 || 
                               func_entry_5 == brd2   || func_entry_6 == brd2))                                   ret_func = true;
   if(func_entry_2 == lim  && (func_entry_3 == lim    || func_entry_4 == lim  || 
                               func_entry_5 == lim    || func_entry_6 == lim))                                    ret_func = true;
   if(func_entry_2 == lw   && (func_entry_3 == lw     || func_entry_4 == lw   || 
                               func_entry_5 == lw     || func_entry_6 == lw))                                     ret_func = true;
   if(func_entry_2 == cust && (func_entry_3 == cust   || func_entry_4 == cust || 
                               func_entry_5 == cust   || func_entry_6 == cust))                                   ret_func = true;
   
   if(func_entry_3 == reb  && (func_entry_4 == reb    || 
                               func_entry_5 == reb    || func_entry_6 == reb))                                    ret_func = true;
   if(func_entry_3 == brd1 && (func_entry_4 == brd1   || 
                               func_entry_5 == brd1   || func_entry_6 == brd1))                                   ret_func = true;
   if(func_entry_3 == brd2 && (func_entry_4 == brd2   || 
                               func_entry_5 == brd2   || func_entry_6 == brd2))                                   ret_func = true;
   if(func_entry_3 == lim  && (func_entry_4 == lim    || 
                               func_entry_5 == lim    || func_entry_6 == lim))                                    ret_func = true;
   if(func_entry_3 == lw   && (func_entry_4 == lw     || 
                               func_entry_5 == lw     || func_entry_6 == lw))                                     ret_func = true;
   if(func_entry_3 == cust && (func_entry_4 == cust   || 
                               func_entry_5 == cust   || func_entry_6 == cust))                                   ret_func = true;
   
   if(func_entry_4 == reb  && (func_entry_5 == reb    || func_entry_6 == reb))                                    ret_func = true;
   if(func_entry_4 == brd1 && (func_entry_5 == brd1   || func_entry_6 == brd1))                                   ret_func = true;
   if(func_entry_4 == brd2 && (func_entry_5 == brd2   || func_entry_6 == brd2))                                   ret_func = true;
   if(func_entry_4 == lim  && (func_entry_5 == lim    || func_entry_6 == lim))                                    ret_func = true;
   if(func_entry_4 == lw   && (func_entry_5 == lw     || func_entry_6 == lw))                                     ret_func = true;
   if(func_entry_4 == cust && (func_entry_5 == cust   || func_entry_6 == cust))                                   ret_func = true;
   
   if(func_entry_5 == reb  && func_entry_6 == reb)                                                                ret_func = true;
   if(func_entry_5 == brd1 && func_entry_6 == brd1)                                                               ret_func = true;
   if(func_entry_5 == brd2 && func_entry_6 == brd2)                                                               ret_func = true;
   if(func_entry_5 == lim  && func_entry_6 == lim)                                                                ret_func = true;
   if(func_entry_5 == lw   && func_entry_6 == lw)                                                                 ret_func = true;
   if(func_entry_5 == cust && func_entry_6 == cust)                                                               ret_func = true;
   
   if(ret_func) return(true);
   
   return(false);
}

 
Сергей Таболин:

El caché funciona.

 

¡Hola!

Estoy enfrentando el problema con el deslizador "Posición fija del gráfico" en MT5 que no funciona correctamente, por ejemplo cuando cambio de gráfico semanal a diario se desplaza unos 280 días.

Al principio todo es normal después de la instalación del terminal, pero luego cargando los perfiles de los antiguos y empieza a fallar. Y el problema es antiguo.

Adjunto un vídeo con una pequeña demostración...



Archivos adjuntos:
test.exe.zip  1300 kb
 

¿se pueden eliminar las advertencias en este caso? para no multiplicar las variables. ¿o en mql no funciona así en absoluto?

private:
   int               number_of_features;
     
public:
                     CBandit(int number_of_features) {                                      
                             this.number_of_features = number_of_features;
                            }
  

la declaración de 'number_of_features' oculta la declaración del miembro en la línea 24


 
Maxim Dmitrievsky:

¿se pueden eliminar las advertencias en este caso? para no multiplicar las variables. ¿o en mql no funciona así en absoluto?

La declaración de 'number_of_features' oculta la declaración del miembro en la línea 24


Ya has "multiplicado" la variable, así que aquí,CBandit(int número_de_caracteres ) ya se creará la variable int número_de_caracteres, o más bien no una variable sino una copia delvalor de esta variable, así que escribe CBandit(int número_de_caracteres_mío) y déjalo ahí porque no cambiará nada, mientras que el compilador da un aviso a propósito porqueporque al describirCBandit(int number_of_features) has cerrado el ámbito

privado:

int número_de_características;

y tal vez debería haber obtenido este int number_of_features; en el método CBandit(), o tal vez no, el compilador lo tiene en cuenta

Razón de la queja: